文章总结: 文档分析了若依系统因信任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 黑名单限制》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论