Walks

网络安全爱好者

浅谈X-Forwarded-For伪造

前言:

什么是X-Forwarded-For伪造?

就是服务器获取访问IP时未做严格限制,导致访问IP是可以伪造的。


目录:

0x01:漏洞成因

0x02:漏洞危害

0x03:如何修复


漏洞成因

    在这,我复制一段网上的php代码来说的更清楚一点。以下都是依据此代码。

<?php
function getIP() { 
	if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
		$realip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
	} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { 
		$realip = $_SERVER['HTTP_CLIENT_IP']; 
	} else { 
		$realip = $_SERVER['REMOTE_ADDR']; 
		} 
		return $realip; 
	}

echo getIP();
?>

 

    上面这段代码获取访问IP的时候,首先判断$_SERVER['HTTP_X_FORWARDED_FOR']是否存在,如果存在,则把这个值赋给realip,如果不存在,则再判断$_SERVER['HTTP_CLIENT_IP']是否存在,如果存在,把该值赋给

    realip,最后如果上述两个都不存在,则把$_SERVER['REMOTE_ADDR']赋给realip。最后,返回realip。

    在这HTTP_X_FORWARDED_FOR是可以通过修改HTTP头来重置的。

    下面,我们看下下图,当没有设置$_SERVER['HTTP_X_FORWARDED_FOR']和$_SERVER['HTTP_CLIENT_IP']时,可以从输出得知realip为127.0.0.1

《浅谈X-Forwarded-For伪造》

    而当我们修改了X-Forwarded-For:localhost时,可以从输入得知,realip变成了,localhost,此时,访问ip也就得到了伪造。

《浅谈X-Forwarded-For伪造》

    漏洞危害

    虽然只是伪造个IP,但危害也并一定就是小,危害大小视具体情况而定,下面就简单列举几个可能产生的危害

    1:当某后台不希望别人访问时,可以通过伪造IP访问该后台。

    2:当某刷赞刷量的业务时,如果基于访问IP,而这个值又可以修改,那么是不是可以刷赞刷量

    3:当我们前台撞库的时候,如果服务器是通过X-Forwarded-For来判断访问IP的时候,我们是不是就可以多次撞库和爆破了呢。还有等等,不多叙述。

    如何修复

    一切用户的输入都是有害的,所以我们要获取用户访问的真实IP。也就是用REMOTE_ADDR来获取IP。这个IP获取的是真实或者代理IP。

    

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注