2017-09-06 11:45:54 +08:00
2017-09-06 11:45:54 +08:00
2017-09-06 11:45:54 +08:00
2017-09-05 21:12:38 +08:00
2017-09-05 17:08:44 +08:00
2017-09-05 17:08:44 +08:00
2017-09-05 18:07:51 +08:00
2017-09-06 11:44:17 +08:00
2017-09-05 18:07:51 +08:00

Trident (三叉戟)

Java Code Security Component JAVA代码安全组件

目前支持的功能如下:

  1. URL白名单验证
  2. checkSSRF

URL白名单验证

验证逻辑

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

验证代码

合法URL返回true非法URL返回false。

security checkUrl = new security();
String[] urlWList = {"joychou.com", "joychou.me"};
Boolean ret = checkUrl.checkUrlWlist("http://test.joychou.me", urlWList);

checkSSRF

JAVA默认DNS请求会有30s的缓存所以默认不存在DNS Rebind问题。除非重新设置TTL为0。

如果有大佬能绕过麻烦提个ISSUE或者PR。

我自己测试以下方法均没绕过。但是用DNS Rebind方法在调试的时候均可以测试成功所以我怀疑设置TTL为0未成功。

  • DNS Rebind手动设置JAVA的TTL为0
  • 域名解析2个A记录地址外网+内网)

验证逻辑

  1. 取URL的Host
  2. 取Host的IP
  3. 判断是否是内网IP是内网IP直接return不再往下执行
  4. 请求URL
  5. 如果有跳转取出跳转URL执行第1步

验证代码

如果是内网IP返回false表示checkSSRF不通过否则返回true即合法返回true。 URL只支持HTTP协议。

security checkUrl = new security();
ret = checkUrl.checkSSRF("http://127.0.0.1");
Description
No description provided
Readme 96 KiB
Languages
Java 100%