利用条件
1、Session储存位置可以获取
2、Session内容可控
复现过程
1、搭两个web网站,一个用于文件包含,一个用于控制Session文件内容
<VirtualHost 192.168.239.134>
DocumentRoot "/www/session"
<Directory "/www/session">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
listen 8000
<VirtualHost 192.168.239.134:8000>
DocumentRoot "/www/include"
<Directory "/www/include">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
文件包含根目录下的文件内容,由于简单复现下,所以include.php没有任何限制和过滤
Session根目录下的文件内容
2、利用Session网站控制Session文件内容,这里直接上传一句话木马
可以看到我们写的木马通过ctfsGET传参方式传入了Session文件中
cat一下Session文件
扫描二维码关注公众号,回复:
16370550 查看本文章
3、通过文件包含去包含Session文件中的木马
这里就需要知道Session文件存放的位置,我们可以通过phpinfo的信息获取,也可以猜测默认的Session存储位置进行尝试。我这里使用默认的/var/lib/php/session
然后我们还需要知道session文件名,session文件名一般是以sess_session id命名的,而session id我们可以通过开发者模式获取
复制到文件包含中filename参数中,提交
成功包含木马,使用蚁剑getshell
总结
首先通过Session内容可控这点上传木马到session文件,然后获取session文件路径,最后使用文件包含去包含木马