先随便写写,再后续整理。
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:通过编码/解码中转变量
� 挖掘二次攻击漏洞
文件系统函数漏洞转换
配置变量的定义一般保持在文件里,当改文件被删除等原因没有被
调用,而导致改变量可以任意提交转化为其他漏洞。
register_globals =On下可以包含其他任意文件。==> unlike漏洞转化为include漏洞
SQL注射漏洞转换
需要很熟练正向与逆向思维。
Phpwind 2.0.2和3.31e 权限提升漏洞为例:
正向好理解:
profile.php 里变量$proicon过滤不严
提交$proicon = a’, groupid=1
$userdb[‘icon’]=$proicon.’|’.$proownportait[0].’|’.(int)$proownportait[1].’|’.
(int)$proownportait[2];//污染$proicon,传递$userdb[‘icon’]后续update到里数据库
在提取时注入,造成二次注入(伴随权限提升)
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模式的代码执行做铺垫。