某云办公应用api存在IP白名单绕过风险
最近在做一个消息推送企业某信的需求,使用的不是官方的api,而是和企业某信可以集成的云办公平台的api。由于api有ip白名单限制,导致我必须在特定化网络环境下发请求,测试很麻烦,所以想测试一下能不能绕过限制。 想要绕过限制,首先要知道服务器如何获取发送者的ip。 服务器如何获取请求者ip 获取请求者 IP 本质上就两个来源: 直接从 IP 数据包获取 这就是 HttpServletRequest的getRemoteAddr() 的工作原理,获取的是直接与服务器建立 TCP 连接的客户端 IP,在没有代理的情况下,这就是真实的客户端 IP 从 HTTP 请求头获取 常见的请求头有: X-Forwarded-For X-Real-IP Proxy-Client-IP WL-Proxy-Client-IP 测试 这里我使用了postman伪造了请求头X-Forwarded-For,经过测试,理论上只要知道正确的ip,就可以让ip白名单功能失效。 如果你有服务器的访问权限,但是只知道服务器的内网ip,可以尝试 curl ifconfig.me 然后就能得到服务器的公网ip了 安全建议 改用网络层的源IP地址(TCP/IP报文中的source IP)进行验证 如果必须使用代理转发,建议只信任内部代理服务器传递的XFF头 吐槽 某云办公平台必须付费才能获得访问api的密钥,并且密钥只有一个,测试只能直接在正式系统测