ctcms任意文件上传


 by:少先队-傻狗

漏洞位置: 个人中心-资料设置-资料修改-头像处

漏洞证明:

选择任意图片上传,拦截保存修改请求包:

修改数据包中内容:

将filename设置为x.html

参数内容为:<html><head><imgsrc=x onerror=alert(1)></head></html>


放过所有请求后,查看头像图片的URL,已经变成了刚才上传的文件url:

访问头像文件url,js代码就会被执行。

但在尝试上传php文件的时候,发现服务器后端做了限制,对php,jsp和asp的动态脚本文件做了限制。

猜测后端使用黑名单方式限制上传文件,黑名单限制也可以通过其他方式绕过,尝试了通过.htaccess来使其他后缀名文件当做php来执行:

但发现服务器端会给文件做强制重命名处理,xxxx.htaccess无法被apache服务器解析,尝试通过./等方式将随机文件名转换为目录也失败。

尝试了其他例如”%00”,”. ”,”;. ”等等方式都失败了。

但通过Windows文件流特性绕过,成功上传了php文件,拿到shell:

上传常规php文件,后缀名后加上 (::$DATA)

再次查看头像URL,发现指向的是后缀名为.php::$DATA的文件:

在浏览器访问头像URL,去掉后缀名的::$DATA

上传的PHP命令已经成功执行。

参考靶场练习URL:https://github.com/LandGrey/upload-labs-writeup

我只测试到任意文件上传,由fengx成功getshell,感谢表哥提供思路,学习到了。

修复建议:

服务器端应设置允许上传文件的白名单,通过白名单方式可避免任意文件上传。



本文作者:白帽100安全攻防实验室

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/101769.html

Tags:
评论  (0)
快来写下你的想法吧!

白帽100安全攻防实验室

文章数:13 积分: 52

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号