session文件包含漏洞复现
一、环境搭建
文件包含漏洞测试代码 file.php
<?php $filename = $_GET['filename']; include($filename); ?>
session内容可控测试代码 session.php
<?php session_start(); $ctfs=$_GET['ctfs']; $_SESSION["username"]=$ctfs; ?>
二、利用条件
1、session存储位置可以获取
可以通过phpinfo查看
也可以通过猜测,例如linux默认存储在/var/lib/php/session目录下
2、session可控
当session可控时,就可以传入恶意代码
3、知道session文件名
session文件名的构造是sess_ + sessionid , sessionid在cookie中可以查看
三、漏洞利用
这里可以传入可控的session,将<?php phpinfo(); ?>写入session文件
通过phpinfo、或者猜测,我们知道了session存储位置为D:\phpStudy\tmp\tmp
现在来看session文件名,所以文件名为sess_p3dgmgo7abevkeoe5dpo3r1qp1
在文件包含漏洞的页面,提交getshell
整体思路:通过可控的session值,传入恶意代码,找到session文件地址、文件名,通过文件包含漏洞包含session文件,达到getshell的目的
参考: