X-Forwarded-For地址伪造
漏洞描述
安全编码
X-Forwarded-For地址伪造,很多Web应用需要获取用户的IP,通过IP伪造可以绕过一些安全限制。
没有使用代理的情况下,直接从 getRemoteAddr() 获取目标真实IP 使用nginx等反向代理的情况下,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,这时取 X-Forwarded-For 中第一个IP
运行
漏洞代码
public static String vul(HttpServletRequest request) { String ip2 = request.getHeader("X-Forwarded-For"); if(!Objects.equals(ip2, "127.0.0.1")) { return "禁止访问,只允许本地IP!"; } else { return "success,你的IP:" + ip2; } }
运行
安全代码 - 不使用代理
// 不使用代理情况下,RemoteAddr获取真实IP public static String remote(HttpServletRequest request) { String ip = request.getRemoteAddr(); return "RemoteAddr: " + ip; }
运行
安全代码 - 代理情况下
todo