绕过blacklistIP黑名单限制

admin 2025-12-29 00:58:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档分析了若依系统因信任HTTP头X-Forwarded-For导致的IP黑名单绕过漏洞。攻击者可使用Yakit修改请求头伪造IP,欺骗后端IpUtils校验逻辑。文章提供了源码分析,并建议通过WAF拦截或将代码改为优先使用getRemoteAddr获取真实IP来修复该缺陷。 综合评分: 98 文章分类: 渗透测试,漏洞分析,WEB安全,安全开发


源码

com.ruoyi.common.utils.ip.IpUtils#getIpAddr() com.ruoyi.common.utils.ip.IpUtils#getIpAddr(javax.servlet.http.HttpServletRequest) 修复建议

情况1 因为管理系统可能是布置在内网,公网只是一个中间件做了代理转发,所以从管理系统中拉黑IP的效果并不好。 可以在WAF或者防火墙上动态进行相关配置。

情况2 如果就是部署在公网,可以直接获取访问者IP的。 将 request.getRemoteAddr() 提到最上面 都用于获取客户端IP地址,但它们在原理、使用场景和优缺点上存在差异。

原理

  • • request.getRemoteAddr():这是HttpServletRequest接口的一个方法,用于返回客户端与服务器建立连接时的IP地址。在不经过代理服务器的情况下,这个IP地址就是客户端的真实IP地址;但如果经过了代理服务器,它返回的是最后一个代理服务器的IP地址。
  • • request.getHeader("X-Forwarded-For")X-Forwarded-For是一个HTTP请求头,它是在HTTP协议中用于记录客户端真实IP地址的标准。当客户端请求经过代理服务器时,代理服务器会在这个请求头中添加客户端的IP地址。如果请求经过多个代理服务器,这个请求头会包含多个IP地址,用逗号分隔,第一个IP地址通常是客户端的真实IP地址。

所以,如果ruoyi前存在多级代理,应该由最前面的代理,清洗一下请求包中的代理信息,替换为它的真实IP。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:进击的HACK 进击的hack《绕过blacklist IP 黑名单限制》

评论:0   参与:  0