漏洞原理:
在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->语法执行任意命令。
漏洞复现:
shtml包含有嵌入式服务器方包含命令的文本,在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取、分析以及修改。
正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件:
<!--#exec cmd="pwd" -->
然后上传就行了
点进去
解析成功,远程命令执行,pwd命令可以随便改。