Apache开启SSI,文件上传Getshell

一、什么是shtml

使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。

二、SSI指令基本格式

我这里就列举本文用到的

程序代码:
<!– 指令名称=”指令参数”>

exec
作用:将某一外部程序的输出插入到页面中
语法:
<!–#exec cmd=”文件名称”–>
参数:
cmd 常规应用程序
示例:
<!–#exec cmd=”cat /etc/passwd”–> 将会显示密码文件
<!–#exec cmd=”dir”–> 将会显示当前目录的文件夹和文件

echo
作用:将环境变量插入到页面中。
语法:
<!–#echo var=”变量名称”–>
示例:
<!–#echo var=”REMOTE_ADDR”–> 你的IP地址

具体指令和原理等传送门

三、搭建上传环境

1. 这里本地进行搭建,使用的为phpstudy

2. 搭建并使用Pikachu靶场,把源码放到网站根目录之后,访问,127.0.0.1/pk/index.php

3. 点击安装即可

 

四、Apache开启SSI

1. D:\phpStudy\PHPTutorial\Apache\conf,在此目录找到http.conf

2. 找到以下两个,把前面的#号去掉

AddType text/html .shtml

AddOutputFilter INCLUDES .shtml

3. 在httpd.conf文件中找到这一行:

Options +Indexes +FollowSymLinks +ExecCGI

在后面添加INCLUDES,如下面所示:

Options +Indexes +FollowSymLinks +ExecCGI +INCLUDES

/*因为我的是PHP Study所以有个+号,宝塔的话,直接去掉+号就可以了*/

4. 测试

REMOTE_ADDR:显示发出请求信息的客户端IP地址。

往1.shtml写入<!–#echo var=”REMOTE_ADDR” –>,并上传

成功执行

五、Getshell

假如该网站是可以上传除PHP外的文件,尝试绕过也不行,但是该站开启了SSI,那么就可以上传shtml、bat进行Getshell(不过这个是真的少见)

1. 因为在上传成功的时候,pikachu这里会直接显示文件上传到了哪里,所以可以省去找相对路劲的步骤。

 

也可以让其报错显示网站的路径,可以看到它是把上传的文件上传到uploads这个目录

 

2. 上传一个带有木马的jpg

 

3. 上传一个bat文件,内容写入移动的代码

Move D:\phpStudy\PHPTutorial\WWW\pk\vul\unsafeupload\uploads\1.jpg D:\phpStudy\PHPTutorial\WWW\shell.php

 

4. 上传stml文件,执行SSI指令

路径为bat所在的目录

 

上传成功后访问11.shtml文件即可

 

可以看到已经移动成功

 

访问127.0.0.1/shell.php即可

 

转载请注明:Adminxe's Blog » 密码保护:Apache开启SSI,文件上传Getshell

posted @ 2020-06-14 21:39  Adminxe  阅读(220)  评论(0编辑  收藏  举报