漏洞描述
当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用<!--#exec cmd=“id” -->
语法执行命令。
使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。
漏洞危害
攻击者可以利用此问题进行任意命令执行操作。这可能有助于进一步的攻击。
漏洞影响版本
目标服务器开启了SSI与CGI支持
漏洞分析
如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->
语法执行任意命令。
正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件:<!--#exec cmd="whoami" -->
查看上传文件,页面回显如上执行的whoami命令结果
环境搭建
- 将docker-compose、Dockerfile、upload.php放在一个文件夹里
- 使用docker搭建漏洞环境
启动docker:
sudo service docker start
启动docker-compose.yml(在docker-compose.yml文件所在的路径执行)
docker-compose build
docker-compose up -d
漏洞复现
- 环境启动后,访问http://192.168.111.130:8080,正常上传PHP文件是不允许的,我们可以上传一个内容为“
<!--#exec cmd=”ls” -->
”的shell.shtml文件:
- 成功上传,然后访问shell.shtml,可见命令已成功执行:
POC验证:
使用方法:python3 exp.py --target-url http://192.168.111.130:8080
修复建议
- 关闭SSI服务;
- 过滤<、>、-、#、!等字符。