Apache SSI 远程命令执行漏洞

一.漏洞介绍

  SSI 注入全称Server-Side Includes Injection,即服务端包含注入。

  SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。

  从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。

  在SSI中,默认扩展名是 .stm、.shtm 和 .shtml。

二.操作步骤

1.使用了vulhub靶场,首先打开靶场,靶场位置:vulhub-master/httpd/ssi-rce。

2.环境搭建:docker-compose  build & docke-compose up -d 。

3.访问靶场,不同的靶场可能端口号不一样,查看端口号用:docker-compose ps。

4.上传木马文件

  在上传文件时,是无法直接上传木马文件的,即使上传了隐含木马语句的文件,用工具也是无法连接上的,反正我没有连接上。

  由于采用Apache配置不当,故存在SSI远程执行命令的漏洞,然而又因为在SSI中默认扩展名有 shtml等等,因此上传这样扩展名的文件。

使用命令 <!--#exec cmd="ls & whoami " -->  或者使用   <!--#exec cmd="ls" -->

发现是可以上传的,然后进行访问上传这个文件。

然后就执行了刚才文件里的命令,便得到了相关的信息,当然这只是这个文件下的文件信息,其他文件夹呢?

三.防御方法

 1.可以关闭SSI这个功能。

 2.过滤特殊字符串(`<,>,#,-,",'`)

posted @ 2021-07-18 12:05  MCY5  阅读(414)  评论(0编辑  收藏  举报