PHP代码审计学习

先随便写写,再后续整理。

register_globals

register_globals 是php.ini 中的一个配置,该配置直接影响PHP 如何接收和传递参数。

我的理解:

PHP存在注入$_GET、$_POST等系统变量(array),当注册register_globals后其包含的大量系统数组变量直接释放到直接变量中如$_ENV[“os”]==> $os (测试失败了,未果)

二次漏洞审计

主要内容:

  • 二次攻击[Second attack]
  • 类型1:通过文件系统函数漏洞转换
  • 类型2:通过SQL注射漏洞转换
  • 类型3:通过正则表达式中转变量
  • 类型4:通过编码/解码中转变量
  • 数组变量的魅力
  • Code与系统
  • Code与http协议
  • 漏洞挖掘

� 什么是二次攻击
二次攻击攻击者提交的恶意代码不是直接通过一个变量提
交个漏洞函数,而是通过变量转化或者中转,最终提交到漏洞函

� 二次攻击的特点
� 常常存在漏洞类型的转换
� 常常存在变量中转
� 类型
� 类型1:通过文件系统函数漏洞转换
� 类型2:通过SQL注射漏洞转换
� 类型3:通过正则表达式中转变量
� 类型4:通过编码/解码中转变量
� 挖掘二次攻击漏洞

文件系统函数漏洞转换

配置变量的定义一般保持在文件里,当改文件被删除等原因没有被
调用,而导致改变量可以任意提交转化为其他漏洞。

1569678917175

register_globals =On下可以包含其他任意文件。==> unlike漏洞转化为include漏洞

SQL注射漏洞转换

需要很熟练正向与逆向思维。

Phpwind 2.0.2和3.31e 权限提升漏洞为例:

正向好理解:

profile.php 里变量$proicon过滤不严

  1. 提交$proicon = a’, groupid=1

  2. $userdb[‘icon’]=$proicon.’|’.$proownportait[0].’|’.(int)$proownportait[1].’|’.
    (int)$proownportait[2];//污染$proicon,传递$userdb[‘icon’]

  3. 1569679860890

  4. 后续update到里数据库

  5. 在提取时注入,造成二次注入(伴随权限提升)

    1569680159990

    preg_repace()中的魅力

    Preg_repace()当第一个参数的正则表达式有e符号的时候,第二个参数的字符串当做PHP代码执行。

    1
    2
    3
    4
    5
    6
    7
    8
    <?
    //preg_replace1.php //preg_replace1.php //preg_replace1.php
    echo preg_replace("/test/e",$h,"jutst preg_replace("/test/e",$h,"jutst preg_replace("/test/e",$h,"jutst
    test"); test"); test");
    ?>

    Preg_replace.php?h=phpinfo() ,phpinfo()将本执
    行。

    存在null截断漏洞函数:

    include –> 常用来使用截断来截断.php等后缀,利用../达到任意文件包含目的(非php文件不遵从php文件格式,内容将直接抛出)

    preg_replace –> 常用来截断不必要的用户输入/程序自带输入,为/e模式的代码执行做铺垫。

本文标题:PHP代码审计学习

文章作者:

发布时间:2019年09月28日 - 21:50:09

最后更新:2019年09月28日 - 23:04:44

原始链接:http://laker.xyz/2019/09/28/PHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E5%AD%A6%E4%B9%A0/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。