拓冰建站拓冰建站
首页 / 资讯中心 / 正文

真实IP获取与伪造:XFF、CDN与源站隐藏挖掘实战解析

1. 取到真实IP为什么比想象中难这么多做Web安全或者SRC漏洞挖掘无论你是打绕过、查日志、做风控还是排查攻击来源第一步几乎都绕不开拿到客户端真实IP。但就是这个最基础的步骤实际做起来远比想象中麻烦。日常交流的时候我见过不少开发者甚至部分安全新人在一个API接口里写上request.getRemoteAddr()或者$_SERVER[REMOTE_ADDR]就以为拿到了用户的IP结果一旦用户走了CDN、代理、负载均衡拿到的其实是上一跳节点或者CDN节点的地址直接拿来封禁或者做审计方向就全歪了。为什么取一个IP会牵扯出这么多事根源在于四层到七层之间隔着一个谁来替你传达身份的信任链条。TCP连接建立的时候你的服务端能直接看到的只有与你建立TCP连接的那个对端地址如果用户通过CDN访问那对端就是CDN的节点如果用户通过Nginx反代访问那对端就是Nginx的服务器。你真正想要的是用户本机的出口IP就得依靠上层协议里的附加信息把它一层一层传递过来这个附加信息就是X-Forwarded-For、X-Real-IP这些请求头。问题也随之而来请求头是明文、可构造、可篡改的你怎么判断它可不可信这里就引出了一个贯穿本文全篇的核心矛盾IP获取本质上是建立信任IP伪造本质上是破坏信任IP隐藏与挖掘本质上是信任链两端攻防的延伸。四件事是同一套底层逻辑在不同阶段的体现所以我一直建议学安全的同学把这几块放一起理解单独看任何一个点都容易学得支离破碎。1.1 常见HTTP头里到底藏了哪些IP信息先捋一下我们日常处理IP时最常遇到的几个请求头。我整理了一个表建议你直接存下来后面写代码或者做日志分析的时候对着看请求头作用谁在写可信度REMOTE_ADDRTCP层直接建立连接的对端IP内核/Web服务器最高无法伪造但可能是CDN或代理的IPX-Forwarded-For记录原始客户端IP及各层代理IP正向代理/CDN/反向代理低客户端可任意伪造X-Real-IPNginx等反代配置后写入的真实客户端IPNginx/CDN中取决于是否只在可信层写入True-Client-IP部分CDN厂商使用的扩展头用途同XFFCDN厂商边缘节点中高取决于厂商是否会覆盖CF-Connecting-IPCloudflare专属写入真实客户端IPCloudflare边缘节点中高需要正确配置后再传给源站X-Client-IP部分网关/应用服务器自定义头网关/应用框架低Via记录中间代理的协议与节点信息代理服务器低可伪造ForwardedRFC 7239标准化的转发头结构更规范代理/网关低客户端可伪造这里我想特别说明一下REMOTE_ADDR。虽然PHP里很多人会写$_SERVER[REMOTE_ADDR]Java里对应的是request.getRemoteAddr()但这个名字迷惑性很强它实际代表的是建立TCP连接的对端IP而不是客户端应用的出口IP。如果用户直接连你的服务器那它确实是用户IP一旦中间有CDN它就变成了CDN边缘节点的IP。很多风控报表分析到这个阶段就跑偏了所以先把这个基础概念纠正过来。1.2 为什么X-Forwarded-For会成为IP获取的标准答案又是背锅侠很多年以前Web架构还没这么复杂的时候大家直接用REMOTE_ADDR就够了。后来CDN、反代、四层负载均衡普及源站拿到的对端IP变得不可靠这才引入了X-Forwarded-For。它的格式是一串逗号分隔的IP列表最左边是原始客户端往右依次是每一级代理。比如X-Forwarded-For: 203.0.113.7, 198.51.100.2, 192.0.2.10这个列表的意思是203.0.113.7是原始客户端198.51.100.2是第一层代理的公网出口192.0.2.10是第二层代理的公网出口。CDN厂商和Nginx在往回传请求的时候会在自己收到的XFF基础上追加自己的IP然后继续向后传。问题就在这客户端发请求的时候自己也能往XFF里写东西。一个攻击者可以直接发X-Forwarded-For: 1.2.3.4然后CDN一看已经有XFF了如果是追加逻辑它把CDN节点IP追加在后面变成1.2.3.4, CDN节点IP。源站如果取XFF左侧第一个值做IP那拿到的就是攻击者自己写的1.2.3.4。这就是IP伪造最简单的雏形也是XFF一直被叫背锅侠的原因——框架图省事、开发者图省事到最后背锅的却是协议本身。2. 一个curl命令就能伪造IP伪造的本质是攻破信任链聊完了获取接着看伪造。很多人觉得伪造IP是个高深的事情其实在HTTP层面它简单到可以用一行curl复现。真正需要注意的不是伪造本身而是伪造之后你拿这个假IP做了什么以及服务器端为什么会被骗到。2.1 最小化演示直接指定请求头在终端里执行curl -H X-Forwarded-For: 203.0.113.99 http://victim.example.com/如果目标服务端只取XFF左侧第一个IP作为用户IP那这条请求在服务端日志、风控系统、统计系统里体现出来的就是203.0.113.99和真实出口IP没有半点关系。做安全测试的人用这个手段绕过IP频率限制、绕过封禁策略已经很普遍了。但也得提醒第一次接触这块的同学这种手法只能影响应用层记录到的日志改不了TCP层的内核记录。如果目标系统在Nginx或者在更底层同时记录了remote_addr一对比就能发现差异两套日志一碰撞你这个伪造就露馅了。我见过不少安全报告喜欢把IP伪造说成完全隐身这是不准确的。真实威胁主要体现在两个层面业务逻辑欺骗层登录日志、投票系统、抽奖系统、下载计数、短时间请求频率限制这些完全依赖应用层解析出来的IP伪造XFF几乎是一骗一个准。风控与审计绕过层如果企业自研的WAF或者风控引擎没有校验XFF的可信来源攻击者可以通过变换XFF值尝试绕过IP黑名单、绕过速率限制策略。2.2 伪造不只发生在HTTP头还有TCP层HTTP头伪造解决的是应用说我来自哪里但网络安全里还有一种相对更底层的伪造叫IP源地址伪造。攻击者可以构造一个源IP与自身无关的IP数据包发送出去理论上是存在的。实际操作上有两种方式盲打盲注入发送源IP伪造的数据包但由于TCP握手需要三次交互伪造源IP的一方收不到回包所以只能做类似SYN Flood这种不需要回包的攻击或者配合序列号预测去做极苛刻条件下的连接劫持。DDoS反射放大伪造源IP为受害者的地址把大量查询或请求发给第三方服务器如DNS、NTP、Memcached第三方服务器回包打到受害者身上。受害者看到的是第三方的来源IP而第三方看到的是受害者在请求。这也是为什么DDoS溯源一直很困难的原因之一。在真实Web渗透和SRC挖掘里你不太需要直接操作原始Socket去伪造TCP层IP因为HTTP头伪造的成本低得多。但理解这两者的区别很关键否则你在排查攻击日志时看到大量源IP是某DNS服务器的流量会误判是DNS服务器被入侵了实际可能只是源IP伪造的反射攻击。2.3 服务端如何正确防御IP伪造既然伪造的手段这么廉价服务端该怎么做我直接给一套从简到繁的处理思路如果你的服务只暴露在公网且没有经过CDN/反代直接使用REMOTE_ADDR忽略所有HTTP头里的IP字段。这是山寨做法里的正路。如果使用了Nginx应该在可信反代层使用real_ip模块把来自可信代理IP的请求头识别为真实IP来源配置类似set_real_ip_from 192.0.2.10; # 可信CDN节点或反代服务器 real_ip_header X-Forwarded-For; real_ip_recursive on;real_ip_recursive on的含义是递归处理XFF从右往左逐个跳过可信代理IP找到第一个不可信的IP作为真实客户端IP。这样配置之后$remote_addr变量会被替换为解析出的真实IP后续应用层拿到的就是可靠值。如果应用层必须自己取IP不要信取XFF第一个值这种默认逻辑而应该取最右侧第一个不可信IP。同时强烈建议在反代层把客户端传入的XFF覆盖一遍由反代决定真实IP后再追加而不是任由客户端原始头一路穿透到源站。我用PHP举个例子这也是每天都在微信群里被反复问到的function getClientIp() { $ip $_SERVER[REMOTE_ADDR] ?? ; $xff $_SERVER[HTTP_X_FORWARDED_FOR] ?? ; if ($xff) { $ips explode(,, $xff); $ip trim($ips[0]); // 实际上这里应该从右往左遍历跳过已知代理IP } return $ip; }这个简化版可以跑但在有CDN的情况下是错的因为它还是取最左边。正确思路应该是拿到一个可信代理IP列表从右往左找第一个不在列表里的值。Spring Boot里也有同样问题。我见过很多项目在Gateway或者Filter里直接写String ip request.getHeader(X-Forwarded-For);然后split取第一个。这在有反代场景下等于给攻击者开了一扇门。正确姿势是用request.getRemoteAddr()然后在网关层统一用X-Forwarded-For处理后再放到request.setAttribute里传给下游。你们如果用了Spring Cloud Gateway可以在全局过滤器里统一处理而不是让每个业务接口自己解析。2.4 伪造和会话固定等手法的组合拳在SRC漏洞挖掘中单纯伪造IP往往不够致命但它通常是组合攻击的催化剂。举个实际场景某系统对同一IP的登录错误次数做了限制5次错误就锁定30分钟。攻击者在没法使用自己真实IP的情况下可以每尝试4次密码就换一个XFF值从而绕过账户锁定策略实现无限爆破。又比如有些系统的单用户单日签到限制是按IP维度做的攻击者伪造大量不同IP去刷接口直接薅走大量奖励这类漏洞在公益SRC平台属于逻辑漏洞里的高频问题。还有一类更隐蔽IP头注入带来的日志投毒。如果服务端把XFF直接拼进SQL语句、拼接日志字符串、或者拼入返回页面中攻击者就可以通过构造恶意的XFF值实现SQL注入或存储型XSS。虽然表面上你在伪造IP实际上你在利用IP处理代码里的二次漏洞。我当时在一个授权测试项目里就遇到过厂商把所有访问日志按X-Forwarded-For字段直接打到ELK再告警的场景我传了个特殊构造的值进去直接触发了告警规则后面顺藤摸瓜发现日志管道里连基本的转义都没做。3. 隐藏真实IP的几种常用手段与常见破功点看完了拿IP和改IP就该聊防守方的另一面了如果把服务器真实IP藏起来攻击者不就找不到了吗思路没问题但藏这件事在互联网上比你想的要难得多。3.1 用CDN隐藏源站IP的防护逻辑当前最主流的隐藏源站IP方案是套CDN。国内外主流云厂商的CDN产品都在做这件事。你网站的域名解析到CDN的CNAME记录上用户访问的是CDN节点CDN节点再回源到你的源站IP。此时你只需要让源站防火墙只允许CDN节点的IP访问对外完全关闭直接源站访问入口就形成了一条相对完整的隐藏链路。这里要重点提醒套CDN不等于不做源站访问控制。即使CDN给你缓存了页面攻击者仍然可能通过某些路径让CDN强制回源特别是动态请求、带特定参数的请求、POST请求这些不会命中缓存的请求CDN为了保证可用性必须回源如果源站对CDN回源的身份没有限制比如只允许CDN网段攻击者还是能拿着源站IP直接绕过CDN访问源站。所以配合防火墙做白名单回源是必须的只放行已知CDN的回源IP段。3.2 隐藏链路为什么经常破功我见过太多以为藏得很好的站最后被挖出源站IP。最常见的泄露点包括DNS历史解析记录很多域名在接入CDN之前解析记录直接指向源站IP这些历史记录被各个DNS历史查询平台和威胁情报平台存档了。攻击者只要翻一下历史记录就能找到你曾经的A记录。SSL证书泄露当你用源站IP直接访问服务器比如https://源站IP如果服务器返回的SSL证书里包含域名信息攻击者通过证书透明度Certificate Transparency日志或在线证书查询服务输入域名就能搜到这个证书还绑定过哪些IP。虽然证书本身不含IP但在IPv4空间扫描场景里攻击者可以用域名证书指纹在ZMap/ZGrab的扫描结果里反向匹配直接把你暴露出来。子域名没走CDN很多站主域名套了CDN但某个测试子域、旧版后台子域、接口子域直接解析到源站IP。攻击者做子域名枚举时发现一个非CDN的IP用这个IP反查旁站、查绑定域名就直接定位到真实源站。这是目前SRC挖掘中最常用的溯源路径之一。邮件头信息如果源站同时承担了邮件服务器角色攻击者给一个不存在的账户发一封邮件退信邮件头里的Received字段经常会暴露内网IP或出口IP。这类信息在钓鱼和攻击面梳理时经常被忽略。网站报错信息页面404、500报错页如果展示了服务器IP或者内网网段也等于是免费给攻击者送情报。我建议所有生产环境关闭详细报错信息输出统一走规范化的错误页。3.3 防守方的加固清单根据上面这些破功点我把隐藏真实IP的加固项整理成一份清单域名全部接入CDN并且新解析的子域名也要接入不放过任何旁路域名。源站服务器防火墙只放行CDN回源IP段云安全组同理。源站服务器配置SSL证书时对公网扫描隐藏证书信息或者直接用CDN的证书回源源站不直接绑定完整证书链。服务器上关闭不需要的端口和服务至少不要让SSH、RDP、数据库端口暴露在公网。邮件服务器与Web源站分离或者通过第三方邮件网关转发避免邮件头泄露源站出口。定期用各种测绘引擎、DNS历史查询平台、证书查询平台搜索自己资产主动排查泄露面。禁止源站直接响应非CDN来源的HTTP请求可以用Nginx做一层判断allow CDN_IP_RANGE; deny all;或者更简单的逻辑只允许Cloudflare或你用的CDN厂商的IP访问8080/443端口其他来源一律403。我见过不少厂商在隐藏源站IP这条路上走到一半就松懈了觉得反正套了CDN应该没人找得到。但实际上仅凭证书透明度这一个入口配合全端口扫描源站IP泄露在攻防实战中是非常常见的突破口。隐藏真实IP本质上是把自己所有可能暴露在公网的信息一条条都堵上是一个持续治理的过程不是一个配置项。4. 挖掘真实IP的路径从攻防视角看信息收集的常用手段前面讲了防守方怎么藏现在换到攻击视角或者说渗透测试视角聊怎么挖。这部分是很多SRC学员、CTF新手最感兴趣的也是实际渗透测试中决定成败的前置环节。需要先说明一点本文讲的挖掘方法仅限于你获得合法授权的测试场景打自己靶场、打众测项目、SRC平台明确授权的目标都可以用不要把这套动作打到没授权的目标上合规边界一定要有数。4.1 从域名和子域名入手最常规也最高效源站IP挖掘从来不是上来就猜IP而是先枚举域名资产。我常用的思路是通过证书透明度日志查到该主域名下的所有子域名工具可以用crt.sh的界面化查询也可以用命令行批量跑curl -s https://crt.sh/?q%25.example.comoutputjson | jq -r .[].name_value | sort -u对每个子域名做DNS解析找到解析结果里不属于CDN的IP。判断是否为CDN IP可以通过看IP是否属于已知云厂商CDN地址段或者直接对该IP的80/443端口发请求观察返回的Server头、证书信息、页面内容是否与目标站点一致。拿到候选IP后做一次端口扫描。很多人喜欢用Masscan快速扫全端口再用Nmap做服务识别masscan -p1-65535 --rate10000 203.0.113.5 -oJ output.json nmap -sC -sV -p- 203.0.113.5端口扫描不是为了撞大运而是确认这个IP上是否运行着目标业务。如果一个IP上跑了Nginx并且返回的页面和主站某个子域一致那大概率就是源站。如果主域名已经套CDN优先关注那些很少被运维想起来加CDN的资产比如测试环境、后台管理、旧版接口、开发文档站点。子域名枚举工具有很多我个人日常用的是subfinder配合amass做被动枚举本地用ffuf做基于字典的暴力枚举。这一步很基础但也是最容易被忽略的。很多人一上来就想着怎么绕CDN实际源站IP大概率就在某个测试子域名上挂着根本不用绕。4.2 从公开威胁情报和历史数据里捞IP如果你枚举了一圈子域名发现所有域名都套了CDN那就要借助第三方数据了。常用的几类数据源DNS历史解析记录多个平台都提供免费的历史DNS记录查询能看到一个域名过去解析到哪些IP。很多站再套CDN之前的老IP很可能现在仍然在提供服务只是你不拿历史数据对比发现不了。证书透明度日志通过certspotter、crt.sh、censys等平台按域名或者按证书指纹去搜索可以定位到所有申请过该域名证书的服务器IP。空间测绘与资产搜索引擎这类平台通过对全网IP进行主动扫描、指纹识别建立IP与域名、端口、服务之间的索引关系。你在上面搜索目标域名的标题、favicon哈希、证书指纹就能找到绑定一起的IP和关联资产。这里不具体点名品牌你搜索网络空间资产测绘就能找到主流平台。用这些平台定位IP之后建议做一个交叉验证。比如通过证书找到IP A通过DNS历史找到IP B再看看这两个IP在测绘平台上有没有关联域名、开放端口是否一致、页面指纹是否相同。如果几个证据能互相印证那源站基本就浮出水面了。4.3 从业务报错和接口回显中找突破口在挖掘真实IP的过程中除了被动信息收集主动请求目标站点也很重要。注意观察以下几个场景报错页面有些站点的Java/PHP报错页面会直接泄露服务器内网IP或对外出口IP。比如Spring Boot默认的Whitelabel Error Page在未配置时可能展示部分运行时信息虽然现在新版本默认不展示太多但历史项目里很常见。接口返回值某些接口在你提交一个非法参数时会返回详细的内部异常信息里面可能包含服务端地址。常见的出口是OSS回调接口、支付回调接口、SSO单点登录回调接口这类接口需要服务器之间互相通信经常会用内网地址做互相标识。文件上传后的URL路径如果目标支持文件上传并且返回了完整的URLURL里往往包含了存储桶域名、CDN加速域名偶尔会出现直接暴露源站IP的情况。邮件头找目标系统忘记密码功能给自己邮箱发一封密码重置邮件然后查看邮件的Received头。如果邮件服务器和目标Web系统部署在同一环境Received链中的IP可能直接指向内网出口结合其他信息可以用来绑定目标IP段。这个手法在做钓鱼邮件溯源和SOC排查时很有用。这些方法单看似乎都只是碰运气但结合起来用就能把目标网络的IP资产拼图慢慢拼完整。真实世界里的IP挖掘本质上不是在找一个魔法接口而是把不同数据源里泄露的碎信息拼在一起交叉验证最终还原出真实基础设施。4.4 挖到IP之后的验证闭环挖掘出来的IP到底是CDN节点、反代节点还是源站直接决定下一步动作。我一般会按这个流程验证修改本地/etc/hosts文件把域名解析指向刚找到的候选IP然后浏览器访问该域名。如果页面内容和线上完全一致或者登录态能通过那大概率就是源站。看证书是否匹配。候选IP返回的SSL证书如果包含目标域名就很稳了。对比不同IP上的页面响应头、Server头、缓存标志判断是否有CDN特征。CDN节点通常带有明显的CDN识别头源站一般没有。如果候选IP直接访问返回403或连接超时可能是防火墙做了来源限制不要把这种结果直接认定不是源站可以换一个云主机IP段或者用代理池再试一次很多防火墙只白名单了特定CDN网段换个来源就暴露了。验证闭环做完才能确定进入下一步的测试或提交报告。不要拿着一个没验证的IP就开扫白费时间是小把CDN节点扫崩了影响线上业务那就违背了授权测试的基本底线。5. 实战经验串讲一次授权测试中的IP层对抗复盘前四节把获取、伪造、隐藏、挖掘分别讲清楚了最后我用一次真实的授权测试项目复盘把它们串起来。为了合规目标相关的域名和IP我做了脱敏处理用占位符代替但整个攻击链路是完整的。目标是一个中型电商类Web系统众测项目授权范围明确。初始信息只有一个主域名shop.example.com全站套了Cloudflare CDN。第一步还是信息收集。我用crt.sh和subfinder先跑了一遍子域名拿到30多个子域。大多数解析到Cloudflare IP段但有两个子域引起了我注意dev.shop.example.com和backup.shop.example.com解析出来的A记录指向了同一个IP198.51.100.23查了一下这个IP并不属于Cloudflare的地址段很可能是源站或者是某个独立测试服务器。我直接访问https://198.51.100.23返回的是Nginx默认页证书是自签名没有更多信息。这时候我没有急着去扫端口而是把dev.shop.example.com的解析信息放进DNS历史查询里比对确认这个IP自三年前开始就一直存在期间主站换过好几次CDN但这个子域从未接入CDN。随后我对198.51.100.23做了全端口Nmap扫描开放了22、80、443、3306和一个高端口8080。我用浏览器访问http://198.51.100.23:8080发现是个Spring Boot Admin的监控面板版本比较老未授权访问可以直接看到所有注册服务的堆栈和内存信息。通过面板里的环境变量和注册中心信息拿到了内网网段和几台服务器之间的通信关系其中一条环境变量里居然写着一个MySQL的连接串账号还是root密码是默认的。这就很夸张了但众测规则允许我继续验证影响范围我只做验证性操作确认数据库版本和其中一张业务表的数据量后立即截断操作不拖数据。从挖IP的角度复盘整条链路最开始的突破口并不是什么高级0day而是在子域名枚举里发现了两个没套CDN的子域顺藤摸瓜定位到源站IP。如果当时没有做子域名枚举只对着主域名硬怼CDN大概率会卡住很久。实战中源站泄露基本都是这种不该暴露的资产暴露了的情况而不是CDN被暴力破解。在后续的测试里我还做了个IP伪造的验证登录接口返回里带了最近登录IP的展示我伪造XFF头传了一个假IP发现页面居然原样显示了那个假IP。我再用另一个IP值测试发现页面显示也随之变化。这说明系统对登录IP的记录完全信任XFF是可以被污染和欺骗的。这类问题分开看都不算特别严重但组合起来就是一条很完整的攻击链攻击者找到源站IP绕过CDN访问到Spring Boot Admin未授权面板获取数据库链接串最终可能拿下整个数据库。而IP伪造这个点则让风控系统形同虚设攻击者的真实位置在日志里可以完全不可信。5.1 攻防两端的IP治理建议经历了这次项目也做过不少防守方的排查工作之后我对IP治理这件事有了更具体的感受。不管你是站在攻击侧做授权测试还是站在防守侧做安全建设下面几条建议都可以参考防守端建议资产盘点一定要全特别是子域名和废弃系统。我见过太多被攻破的资产都是运维自己都忘了的测试服或旧系统它们才是真正的短板。所有Web服务启用统一出口全部接入CDN或云WAF在防火墙层面对源站做严格的来源白名单。日志中记录IP时至少要同时保留remote_addr和应用层解析后的client_ip方便事后比对与溯源不要混在一个字段里。不要在生产环境暴露任何管理端的应用Spring Boot Admin、Jenkins、Grafana这类系统要么内网访问要么强身份认证加IP白名单。攻击/测试端建议合规永远排在第一位。无论是SRC众测还是授权渗透都在规则允许的范围内操作不碰未授权目标不拖取敏感数据。信息收集的广度直接决定你后面能走多远。子域名、证书、历史DNS、邮箱、代码托管平台暴露的配置文件每一个都是线索来源。验证大于猜测。找到一个候选IP之后老老实实做多维度交叉验证不要靠一面之词判断它是不是源站。控制操作影响面。对目标系统的扫描和测试尽量轻量以能否证明漏洞存在为标准不要图痛快把系统扫崩。6. 踩坑记录与日常操作小技巧最后这部分写点散的经验都是我自己踩过或者看别人踩过之后总结出来的不一定成体系但实战中非常容易碰到。关于IP获取的最佳实践我见过的最常见错误是做了一层Nginx反代之后应用里还傻傻取remote_addr拿到反代服务器内网IP也见过直接取XFF第一个值结果被用户传假IP污染的。最稳的组合拳是Nginx配置real_ip模块应用侧只允许从$remote_addr取IP同时网关层统一把客户端传入的XFF覆盖掉。做到这三件事IP可信度基本就到顶了。关于CDN判断不要只看IP归属。有些CDN厂商的部分边缘节点IP和云主机IP是同一个大段光看IP没法区分。我一般会综合看响应头里有没有CDN相关标识、TLS证书里有没有CDN厂商的SAN、访问一个不存在的路径时返回的404页是否有CDN特征。关于证书透明度日志这个源经常被低估。很多人以为crt.sh只能查子域名其实它还能按证书的SAN字段反查。如果你拿到一个IP想确认它上面跑着哪些域名可以直接搜这个IP关联的证书。我经常在测绘平台上用证书指纹匹配的方式反查旁站比单纯扫端口快得多。关于日志分析中IP清洗如果你的任务是分析攻击日志并且要区分真实来源建议按优先级处理先看remote_addr再看是否有可信代理层写入的X-Real-IP或CF-Connecting-IP最后才用XFF并且从右往左跳过可信IP。处理后的IP字段建议单独落一列不要覆盖原始字段保留原始记录是审计的第一原则。关于训练和学习路径想把IP这块吃透光看文章是不够的。建议你本地搭一个最小环境一台Nginx反代、一个写死的PHP或Spring Boot接口、一组CDN自测的DNS然后自己抓包看XFF在不同链路下的变化。网络安全的学习路线里IP相关的知识点不算难但它是后续所有Web攻击和防御的基础值得花一个下午把它彻底搞明白。如果后续有机会我还可以再写一篇关于日志反查与攻击链路还原的实战复盘那种场景下IP获取和伪造的知识会被应用到更深的层面。这篇就先到这里希望对你日常开发、测试、漏洞挖掘有实际帮助。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门