8月29晚上就开始收到通知,让我们来排查一下是否有使用畅捷通的系统,说是疑似0day导致很多用户被植入勒索病毒,一时间风头十足。第二天很多平台都更新的防护策略,本次漏洞是任意文件上传漏洞,如果网站前端存在waf等安全设备,应该是可以被正常拦截的,所以也无需过于担心。
这是一个上传漏洞,所以我们需要构造一个post的上传请求,请求接口即为/tplus/SM/SetupAccount/Upload.aspx?preload=1,不难看出,这是一个上传用户个人头像的接口。
通过源码分析可知:
上传过程中只检测了Content-Type这一个参数,攻击者可以随意构造filename的参数从而 上传任意文件,这就导致了漏洞的产生。
不难看出上传路径为当前目录下的images目录,即为/tplus/SM/SetupAccount/images/目录。
到这里漏洞的产生原因就很清楚了,算是一个比较常见的上传漏洞,接下来就是常规的文件上传了。
我们可以构造如下参数的上传包(出于和谐考虑就不贴完整的上传包了):
Content-Type: multipart/form-data; boundary=---------------------------33007515338361897914262830846
-----------------------------33007515338361897914262830846
Content-Disposition: form-data; name="File1"; filename="test.html"
Content-Type: image/jpeg
test
-----------------------------33007515338361897914262830846--
上传之后,如果对方在漏洞利用范围就会成功返回200
此时我们访问一下/tplus/SM/SetupAccount/images/1.html即可访问对应文件,至此这个漏洞的基本复现就完成了。
注:非授权测试是违法行为,请大家不要恶意攻击他人的业务系统!
漏洞到复现程度在上文就已经实现了,但是实际测试中如果你想要进一步利用就会出现一些问题。
你会发现aspx的文件并不能正常解析,这是由于根目录下的PrecompiledApp.config 中的updatable值设置成了false。导致后面上传的文件无法进行编译。aspx程序无法正常执行。
当然,遇到这种情况,部分环境是可以尝试asp文件进行getshell的。因为asp文件并非.Net处理。这个就只能看运气了绝大多数环境可能并不支持执行asp文件。
但是这种情况并非无法解决问题,我们可以通过手动编译的方式上传编译后的dll文件来提供aspx文件的运行环境。具体操作在这里就不具体分析了,等风头过了之后再考虑补全一下操作方案。
有想复现的白帽子可以参考
https://www.buaq.net/go-53733.html