session文件包含
当获取Session文件的路径并且Session的内容可控时,就可以通过包含Session文件进行攻击
利用条件
1、Session的存储位置可以获取
2 、Session内容可控
一般可以通过phpinfo来获取Session的存储位置
phpinfo中的session.save_path保存的是Session的存储位置,通过phpinfo的信息获取session.save_path为/var/lib/php/session
下面是通过本地文件包含的实验查看session存储位置
也可以猜测session的位置,通常Linux中session默认存储在/var/lib/php/session的目录下
源码分析
<?php
if(isset($_GET['iwebsec'])){
session_start();
$iwebsec=$_GET['iwebsec'];
$_SESSION["username"]=$iwebsec;
echo 'SESSION["username"]的内容是'. $_SESSION['username'];
}else{
exit();
}
?>
此代码的$iwebsec变量的值可以通过GET型iwebsec参数传入。php会将获取的GET型iwebsec变量的值存入Session中。攻击者可以利用GET型iwebsec参数将恶意代码写入session文件中,然后利用文件包含漏洞包含此session文件,向系统中传入恶意代码。
漏洞利用
我们可以利用本地包含漏洞,先把iwebsec写入恶意代码到session中,然后通过本地包含漏洞执行恶意代码。
?iwebsec=<?php phpinfo();?>
现在已经写入恶意代码我们通过本地包含漏洞进行执行(在这里也就是文件包含漏洞),但我们要先知道Session。(可以直接F12查看)
也可以利用抓包软件,然后查看PHPSESSID的值
之后回到本地包含漏洞
注: 每个人的PHPSESSID应该是不同的
?filename=/var/lib/php/session/sess_ev72bpmg1ou9a4t2igqpaiqis5
这样我们就成功包含了