Skip to content

Commit faaa81e

Browse files
committed
update SPEL :)
1 parent e85cce2 commit faaa81e

File tree

7 files changed

+126
-7
lines changed

7 files changed

+126
-7
lines changed

Command/src/main/java/org/command/exec/ScriptEngineDemo.java renamed to Command/src/main/java/org/command/code/ScriptEngineDemo.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
package org.command.exec;
1+
package org.command.code;
22

33
import org.command.resultGet.ExecResultGet;
44

55
import javax.script.ScriptEngine;
6+
import javax.script.ScriptEngineFactory;
67
import javax.script.ScriptEngineManager;
78
import java.io.InputStream;
9+
import java.util.List;
810

911
/**
1012
* @author Whoopsunix
@@ -50,8 +52,33 @@ public static InputStream exec(String cmd) throws Exception {
5052
}
5153

5254
public static void main(String[] args) throws Exception {
53-
InputStream inputStream = exec("ifconfig -a");
54-
ExecResultGet execResultGet = new ExecResultGet();
55-
System.out.println(execResultGet.scanner(inputStream));
55+
// InputStream inputStream = exec("ifconfig -a");
56+
// ExecResultGet execResultGet = new ExecResultGet();
57+
// System.out.println(execResultGet.scanner(inputStream));
58+
printScriptEngineManagerFactories();
59+
}
60+
61+
/**
62+
* 获取引擎信息
63+
*/
64+
public static void printScriptEngineManagerFactories() {
65+
ScriptEngineManager manager = new ScriptEngineManager();
66+
List<ScriptEngineFactory> factories = manager.getEngineFactories();
67+
for (ScriptEngineFactory factory: factories){
68+
System.out.printf(
69+
"Name: %s%n" + "Version: %s%n" + "Language name: %s%n" +
70+
"Language version: %s%n" +
71+
"Extensions: %s%n" +
72+
"Mime types: %s%n" +
73+
"Names: %s%n",
74+
factory.getEngineName(),
75+
factory.getEngineVersion(),
76+
factory.getLanguageName(),
77+
factory.getLanguageVersion(),
78+
factory.getExtensions(),
79+
factory.getMimeTypes(),
80+
factory.getNames()
81+
);
82+
}
5683
}
5784
}

Expression/OGNLAttack/src/main/java/org/example/OGNL.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,15 @@ public static Object ognlGetValue(String payload) {
8484
return null;
8585
}
8686

87+
public static Object ognlGetValueSafe(String payload) {
88+
try {
89+
System.out.println(payload);
90+
} catch (Exception e) {
91+
e.printStackTrace();
92+
}
93+
return null;
94+
}
95+
8796
/**
8897
* ognl.Ognl#setValue()
8998
*/

Expression/SPELAttack/src/main/java/com/example/spelattack/SPEL.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package com.example.spelattack;
22

3+
import org.springframework.context.expression.MethodBasedEvaluationContext;
4+
import org.springframework.expression.EvaluationContext;
5+
import org.springframework.expression.Expression;
36
import org.springframework.expression.spel.standard.SpelExpressionParser;
7+
import org.springframework.expression.spel.support.SimpleEvaluationContext;
8+
import org.springframework.expression.spel.support.StandardEvaluationContext;
49

510
/**
611
* @author Whoopsunix
@@ -29,11 +34,45 @@ public static void main(String[] args) {
2934
*/
3035

3136

32-
Object obj = spel(sleep);
37+
38+
Object obj = spel(runtime);
3339
System.out.println(obj);
3440
}
3541

3642
public static Object spel(String payload) {
3743
return new SpelExpressionParser().parseExpression(payload).getValue();
3844
}
45+
46+
/**
47+
* 默认也是用的 StandardEvaluationContext
48+
*/
49+
public static Object spelStandardEvaluationContext(String payload) {
50+
EvaluationContext evaluationContext = new StandardEvaluationContext();
51+
return new SpelExpressionParser().parseExpression(payload).getValue(evaluationContext);
52+
}
53+
54+
public static Object spelMethodBasedEvaluationContext(String payload) {
55+
56+
EvaluationContext evaluationContext = new MethodBasedEvaluationContext(new User(), null, null, null);
57+
return new SpelExpressionParser().parseExpression(payload).getValue(evaluationContext);
58+
}
59+
60+
/**
61+
* safe
62+
*/
63+
64+
/**
65+
* SimpleEvaluationContext
66+
*/
67+
public static Object spelSimpleEvaluationContext(String payload) {
68+
EvaluationContext evaluationContext = SimpleEvaluationContext.forReadOnlyDataBinding().build();
69+
return new SpelExpressionParser().parseExpression(payload).getValue(evaluationContext);
70+
}
71+
72+
public static Object spelSafe(String payload) {
73+
StandardEvaluationContext context = new StandardEvaluationContext();
74+
context.setVariable("payload", payload);
75+
Expression expression = new SpelExpressionParser().parseExpression("#payload");
76+
return expression.getValue(context);
77+
}
3978
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.example.spelattack;
2+
3+
/**
4+
* @author Whoopsunix
5+
*/
6+
public class User {
7+
}

RceEcho/README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# tomcat
2+
3+
https://xz.aliyun.com/t/12388#toc-10
4+
5+
## tomcat7
6+
7+
报错
8+
9+
```
10+
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
11+
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:916)
12+
at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
13+
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1046)
14+
```
15+
16+
修改安装目录 conf/context.xml ,添加
17+
18+
```
19+
<Loader delegate="true" />
20+
```
21+
22+
# spring
23+
24+
25+
26+
# jetty
27+
28+
https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/
29+
30+
idea 插件 https://plugins.jetbrains.com/plugin/18721-jetty
31+
32+
# Resin
33+
34+
下载官方插件
35+
36+
37+

Serialization/AttackJar/pom.xml renamed to Serialization/ClassLoad/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44

55
<groupId>org.example</groupId>
6-
<artifactId>AttackJar</artifactId>
6+
<artifactId>ClassLoad</artifactId>
77
<version>1.0</version>
88
<packaging>jar</packaging>
99

Serialization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<name>Serialization</name>
1111

1212
<modules>
13-
<module>AttackJar</module>
13+
<module>ClassLoad</module>
1414
<module>BCELAttack</module>
1515
<module>XMLSerialization</module>
1616
</modules>

0 commit comments

Comments
 (0)