主页 > 网络知识 > MetInfo5.3.19代码审计思路(6)

MetInfo5.3.19代码审计思路(6)

 

MetInfo5.3.19代码审计思路

 

 

MetInfo5.3.19代码审计思路

 

改了x-forwarded-for头后,伪造的ip确实已经插入数据库

然后将x-forwarded-for改为192.168.1.1’ and 1=2 #,发包后调试跟踪

跟踪到include/common.inc.php文件下,发现还是有对ip做检测的

 

MetInfo5.3.19代码审计思路

 

用了正则表达式检测ip,如果不是(1~3个数字)xxx.xxx.xxx.xxx这样的ip地址格式,那么就会把$_SERVER[‘REMOTE_ADDR’]的值赋值给$m_user_ip,百度后发现REMOTE_ADDR头是无法伪造的,所以这处x-forwarded-for头注入也就没有了。

0×09 后台文件写入

继续看自动审计,发现了一处可能有任意文件写入的地方

 

MetInfo5.3.19代码审计思路

 

 

MetInfo5.3.19代码审计思路

 

$results=explode('<Met>',$result);

$results是由$result经过explode()以‘<Met>’作为分隔符分割组成的数组,如果$result的值可控,那么就可以写入我们想写入的内容了,$result=curl_post($post,60);跟踪进入curl_post()函数,在include/export.func.php文件下

 

MetInfo5.3.19代码审计思路

 

$result=curl_exec($curlHandle);但是这个curl是什么玩意咱也不知道,就去百度看看,大致了解了curl后得出的结论就是主要代码是这三句

curl_setopt($curlHandle,CURLOPT_URL,'http://'.$host.$file);

curl_setopt($curlHandle,CURLOPT_RETURNTRANSFER,1);

$result=curl_exec($curlHandle);

第一句是设置url为$host.$file

$host=$met_host;

$file=$met_file;

$met_host和$met_file都是全局变量,那就试试能不能传参修改这两变量的值

 

MetInfo5.3.19代码审计思路

 

 

MetInfo5.3.19代码审计思路

 

调试后发现$met_host可以控制,$met_file不行,$met_file=/dl/standard.php

第二、三句是获取前面设置的url的页面内容,然后赋值给$result,所以只要在公网ip下创建一个dl文件夹,里面再创建一个standard.php,然后就会执行这个php文件,并将执行结果赋值给$result,接下来试验一下

我在虚拟机上创建了这个standard.php文件

 

MetInfo5.3.19代码审计思路

 

然后将数据包的met_host改为虚拟机ip

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!