2017-09-14 17:38:34 +08:00
2017-09-14 17:38:34 +08:00
2017-09-14 17:38:34 +08:00
2017-09-14 17:38:34 +08:00
2017-09-05 17:08:44 +08:00
2017-09-05 17:08:44 +08:00
2017-09-14 17:38:34 +08:00
2017-09-14 17:38:34 +08:00
2017-09-14 17:38:34 +08:00

Trident三叉戟

Java Code Security Component JAVA代码安全组件

目前支持的功能如下:

  1. URL白名单验证 (已完成)
  2. checkSSRF (已完成)
  3. checkReferer (未做)
  4. csrfToken (未做)
  5. xssEncode (未做)
  6. getRealIP (未做)

URL白名单验证

验证逻辑

  1. 取URL一级域名
  2. 判断是否在域名白名单列表内

验证代码

合法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

验证逻辑

  1. 取URL的Host
  2. 取Host的IP
  3. 判断是否是内网IP是内网IP直接return不再往下执行
  4. 请求URL
  5. 如果有跳转取出跳转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
No description provided
Readme 96 KiB
Languages
Java 100%