76 lines
1.6 KiB
Markdown
76 lines
1.6 KiB
Markdown
# 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。
|
||
|
||
```java
|
||
// 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协议。
|
||
|
||
```java
|
||
// 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头。
|
||
|