3d7f0a2bd4b3cdb985cc8e52654d0957bef88811
Trident(三叉戟)
Java Code Security Component (JAVA代码安全组件)
目前支持的功能如下:
- URL白名单验证 (已完成)
- checkSSRF (已完成)
- checkReferer (未做)
- csrfToken (未做)
- xssEncode (未做)
- getRealIP (未做)
URL白名单验证
验证逻辑
- 取URL一级域名
- 判断是否在域名白名单列表内
验证代码
合法URL返回true,非法URL返回false。
// URL白名单组件测试
checkURL urlCheck = new checkURL();
String[] urlWList = {"joychou.com", "joychou.me"};
Boolean ret = urlCheck.checkUrlWlist("http://test.joychou.org", urlWList);
System.out.println(ret);
checkSSRF
验证逻辑
- 取URL的Host
- 取Host的IP
- 判断是否是内网IP,是内网IP直接return,不再往下执行
- 请求URL
- 如果有跳转,取出跳转URL,执行第1步
验证代码
如果是内网IP,返回false,表示checkSSRF不通过,否则返回true,即合法返回true。 URL只支持HTTP协议。
// SSRF组件测试
SSRF check = new SSRF();
String url = "http://dns_rebind.joychou.me";
ret = check.checkSSRF(url);
if (ret){
String con = Request.Get(url).execute().returnContent().toString();
System.out.println(con);
}
else {
System.out.println("Bad boy. The url is illegal");
}
绕过姿势
以上代码在设置TTL为0的情况,可以用DNS Rebinding绕过。
但是,只要Java不设置TTL为0,该代码逻辑上不存在被绕过风险。
获取真实IP
用这份代码,必须保证,前面Proxy有把真实IP放到X-Real-IP头。
Description
Languages
Java
100%