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.过滤特殊字符串(`<,>,#,-,",'`)
欢迎一起交流。