目录
一、漏洞原理
在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php / jsp / asp后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用 语法执行任意命令。
二、漏洞场景/挖掘思路
- 业务场景Fuzz,比如获取IP、定位、时间等
- 识别页面是否包含.stm、.shtm和.shtml后缀
- 一些业务中,用户输入内容会展现在在页面中(一个存在反射性xss漏洞页面,输入的payload不是xss代码而是SSI标签,同时服务器又开启了对SSI支持就会利用xss远程执行命令)
三、触发条件
当符合以下条件时,攻击者可以在Web服务器上运行任意命令:
- Web服务器为Apache和IIS(支持SSI功能的服务器)
- 服务器有上传或者用户输入页面且未对相关SSI关键字做过滤
- Web应用程序在返回响应的HTML页面时,嵌入用户输入
- 未对输入的参数值进行输入过滤
四、漏洞复现
这里使用的是vulhub的靶场
启动服务
cd vulhub/httpd/ssi-rce
这里路径对应自己的安装路径
编译并运行环境
docker-compose up -d
访问环境
http://<vul’s ip>:8080/upload.php
我们随便上传一个文件探一下服务器是否为Apache
我们上传一个poc文件 ,后缀为.shtml
<!--#exec cmd="cat /etc/passwd"-->
浏览器访问上传的文件成功执行命令