网络安全之IP伪造

网络安全之IP伪造

大家好,又见面了,我是全栈君。

         眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦·斯沃茨(真实人物,神一般的存在)涉嫌利用麻省理工的网络,通过ip伪造从JSTOR中下载了150万篇论文。本文通过firefox看下一个简单的ip伪造是怎样实现的。

       1、client的ip是通过http的头部发送到server端的

      比方,在打开网址www.baidu.com的时候。通过firebug能够看到请求头部,头部里包括client的信息,比方cookie等。

 

网络安全之IP伪造

     

 一般后台获取的clientip的代码为:

php代码:

private function _get_client_ip() {

$ip = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

jsp代码:

public String getIpAddr(HttpServletRequest request) {
       String ip = request.getHeader("x-forwarded-for");
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getHeader("Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getRemoteAddr();
       }
       return ip;
}

 

   代码片段即是获取clientIP,这段程序会尝试检查 HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, 依据之前的原理说明,以 HTTP_开头的 header,  均属于client发送的内容。那么,假设client伪造 Client-Ip, X-Forward-For,不就能够欺骗此程序,达到“伪造 IP”之目的?

      伪造这项值?假设你会敲代码。并了解HTTP协议,直接伪造请求 header 就可以。

或者使用 Firefox Moify Headers插件就可以。

 

     2、Modify Headers伪造ip

   安装Modify Headers后,加入一个X-Forwarded-For,并填入一个ip,置为可用后,打开对应网页,server就会获取到该伪造ip。

  网络安全之IP伪造

  网络安全之IP伪造

 

3、站点怎样防护ip伪造

     既然能够通过ip伪造,站点怎样过滤这些伪造的ip? 一般做法是在应用server上强制将X-Forwarded-For的值设置为client真实ip,详细操作请自行研究。

 

       网络中存在此漏洞的站点非常多,尤其是一些投票类的站点。通过限制ip(一个ip仅仅能投一次票,或者一个ip仅仅能在一定的时间段投一次票)来限制重复投票的站点。

别人可能会利用此漏洞来伪造ip。突破这样的限制。所以站点开发人员要重视这类安全。

     本文部分内容參考了博客构造HTTP请求 Header 实现“伪造来源 IP  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116570.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Django(54)drf视图家族「建议收藏」

    Django(54)drf视图家族「建议收藏」视图家族drf的视图总共分为以下4个,对应4个源码文件views:视图类generics:工具视图mixins:视图工具集viewsets:视图集学习曲线我们学习视图,可以按照以下的曲线

  • macbook air13-inch_苹果笔记本mgn63ch

    macbook air13-inch_苹果笔记本mgn63chMacBookAirMGN63CH/A/MGN93CH/A/MGND3CH/A/MGN73CH/A/MGNA3CH/MGNE3CH/A配置报价图片:https://www.mac.so/macbook-air/MGN63CH/A 7999 深空灰色 全新MacBookAirM1芯片低配 触控ID AppleM1芯片配备8核中央处理器 8GB统一内存 256GB固态硬盘 7核图形处理器 13.3原彩显示2560×160…

  • phantomjs环境搭建已经运行

    phantomjs环境搭建已经运行

  • 汇编语言中的标志位:CF、PF、AF、ZF、SF、TF、IF、DF、OF

    汇编语言中的标志位:CF、PF、AF、ZF、SF、TF、IF、DF、OF**CF:**进位标志位。在无符号运算时,记录了运算结果的最高有效位向更高位的进位值或从更高位借位,产生进位或借位时CF=1,否则CF=0;**PF:**奇偶标志位。相关指令执行后结果所有bit中1的个数为偶数,那么PF=1,1的个数为奇数则PF=0;**AF:**辅助进位标志位。运算过程中看最后四位,不论长度为多少。最后四位向前有进位或者借位,AF=1,否则AF=0;**ZF:**零标志位…

  • Ubuntu20.04安装JDK「建议收藏」

    Ubuntu20.04安装JDK「建议收藏」JavaJDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracleJDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。版本:方法一:安装openjdk1、更新软件包列表:sudoapt-getupdate2、安装openjdk-14-jdk:sudoapt-getinstallopenjdk-14-jdk3、查看java版本,看看是否安装成功:java-ve

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号