### 简要描述: Discuz NT多个版本文件上传漏洞 文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台。I.S.T.O版权所有,转载需注明作者。 ### 详细说明: 漏洞文件:tools/ajax.aspx 漏洞分析:这个页面里的ajax请求,都没有进行权限的验证,游客权限就可以调用其中的所有方法,很危险的写法,于是有了下面的漏洞。 [<img src="https://images.seebug.org/upload/201205/08000042241472f5035d9ecbf1f5952d1a2f0541.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/08000042241472f5035d9ecbf1f5952d1a2f0541.jpg) 当filename和upload两个参数同时不为空时,取得input的值,并解密生成uid,然后调用UploadTempAvatar(uid)上传头像,继续跟进方法UploadTempAvatar: [<img src="https://images.seebug.org/upload/201205/080000520fb86b5ce899d26592d328c2ae7bd03a.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/080000520fb86b5ce899d26592d328c2ae7bd03a.jpg) 在方法内部对上传文件的文件名进行字符串组装,其中uid是我们可以控制的,所以可以通过让uid取值为”test.asp;”,组装后的文件名是avatar_test.asp;.jpg,这样上传后的文件IIS6便会直接执行,得到webshell。 ### 漏洞证明: 实例演示: 1. 目标站:http://www.xxxxer.net 2. 伪造reference,因为ajax这个页面只对reference进行了验证。 3....
### 简要描述: Discuz NT多个版本文件上传漏洞 文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台。I.S.T.O版权所有,转载需注明作者。 ### 详细说明: 漏洞文件:tools/ajax.aspx 漏洞分析:这个页面里的ajax请求,都没有进行权限的验证,游客权限就可以调用其中的所有方法,很危险的写法,于是有了下面的漏洞。 [<img src="https://images.seebug.org/upload/201205/08000042241472f5035d9ecbf1f5952d1a2f0541.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/08000042241472f5035d9ecbf1f5952d1a2f0541.jpg) 当filename和upload两个参数同时不为空时,取得input的值,并解密生成uid,然后调用UploadTempAvatar(uid)上传头像,继续跟进方法UploadTempAvatar: [<img src="https://images.seebug.org/upload/201205/080000520fb86b5ce899d26592d328c2ae7bd03a.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/080000520fb86b5ce899d26592d328c2ae7bd03a.jpg) 在方法内部对上传文件的文件名进行字符串组装,其中uid是我们可以控制的,所以可以通过让uid取值为”test.asp;”,组装后的文件名是avatar_test.asp;.jpg,这样上传后的文件IIS6便会直接执行,得到webshell。 ### 漏洞证明: 实例演示: 1. 目标站:http://www.xxxxer.net 2. 伪造reference,因为ajax这个页面只对reference进行了验证。 3. 构造input参数的值,因为我们的目标是为uid赋值”test.asp;”,uid为input解密而来,通过默认Passwordkey(位于/config/general.config中),对”test;.asp”加密得到input的值”Jw6IIaYanY7W0695pYVdOA==”。 4. 构造请求参数: [<img src="https://images.seebug.org/upload/201205/080001458770bdcaee8c9f5a2a09346f61f08b66.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/080001458770bdcaee8c9f5a2a09346f61f08b66.jpg) 上传成功后会直接把shell地址回显出来, [<img src="https://images.seebug.org/upload/201205/08000152aa3d8b515c5acbf2a12e9d233c02877f.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/08000152aa3d8b515c5acbf2a12e9d233c02877f.jpg) 成功获得webshell: [<img src="https://images.seebug.org/upload/201205/08000254533a503310cb361629539934c051de7e.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/08000254533a503310cb361629539934c051de7e.jpg) 不过在实际测试中,有部分不能成功,懒得找原因了,有兴趣的同学继续研究一下吧^.^,截个官网的截图留个念: [<img src="https://images.seebug.org/upload/201205/08000311501dce8ebacb60a128a8123d68f98a18.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201205/08000311501dce8ebacb60a128a8123d68f98a18.jpg)