Brief

协会受邀请参加的一场国外公司举办的渗透比赛,我们是红队,得分方式有两种,一种是通过漏洞攻击实现平台给出的Task,一种是直接提交搜集到的资产中的漏洞,仅限于RCE,SQL,XXE/CSRF,PATH Traversal。不得不说老外办的比赛确实很有意思,只不过我们确实现在Web师傅不多,没能够拿到前三的Bounty,但是也挖到了不少漏洞,在这里做一个分享。

Process

1

First Day

第一天开赛的时候一开始只收到了一个VPN账号,没想到比赛平台的信息和其他的VPN账号后面才发过来,所以第一天挖的时候是完全不知道有比赛平台的,赛制上也不太熟悉,虽然在Rule里面看到了可以通过完成Task和挖洞分别得分,但是也没看到什么地方有Task就直接开始挖洞了。

资产收集

img

资产收集上主要就是用nmap扫描给定的网段中存活主机和开放的端口。

挖洞

在扫描到一些资产之后就开始挖洞,主要还是一个个点开来看看,很多服务一开始一眼看过去就是没什么洞的,纯静态站点所以也没再去看了,第一天主要找到了一个Grafana 8.3.0的服务和一个在线铁路售票系统。

任意文件读取

grafana 8.3.0受任意文件读取的漏洞影响,但是在grafana.db和grafana.ini中并没有发现什么可利用的信息,找到了secret_key,发现是grafana的默认配置的key,以及一些hash过的api_key,看起来也没什么用,就没什么再深入的利用了。

Sql注入

在线铁路售票系统Online Railway Reservation System是一个开源的服务,版本是1.0,也是受到很多sql注入的cve影响,可以很轻松的就找到sql注入的利用,在数据库里面的user表中找到了几个用户和md5过的密码。其中有弱密码可以md5爆出来,所以就成功找到了登陆售票后台的admin账号,完成了更改铁路售票系统的Task(第二天发现有比赛平台后找了找task提交了漏洞报告)。

Next Day

提交漏洞报告

第二天还没到比赛时间的时候才发现,bitwarden之后又收到了一些vpn账号、比赛平台的账号和邮箱系统的账号,所以也是上比赛平台然后写了写报告把漏洞交上了,第二天刚开赛的时候有第一天的一波漏洞,分数在排行榜还算前列的。

钓鱼

第二天也是拿到了邮箱系统的账号,这个邮箱系统也是扫到的资产之一,提供了账号的话就可以用来发邮件钓鱼了,但是不得不说这个比赛由于在国外举办,网络质量真的差的离谱,在一些站点找到一些邮箱后,用cobalt strike的beacon嵌入到doc中发过去了,过了一段时间beacon就成功上线了,但是….目标主机不怎么连得上team server,一上线就失联了非常奇怪,只成功执行过一次whoami,也是比较无奈。

Last Day

第二天的后半程并没有挖到什么洞,主要原因还是资产收集做的不到位,扫到的几个资产感觉洞基本都挖完了,然后排行榜一直在掉。

挖洞

第三天有学长来帮忙看了看比赛,扫到了一些其他的资产,也挖到了一些有趣的洞。

任意文件读取

扫到了另一处grafana,也是同样的8.3.0,一个任意文件读取的漏洞,但是之后也没什么时间了(我的本地mysql环境炸了),就没去看db文件里面有没有什么可利用的点。

还发现了一处比较有意思的任意文件读取可以分享一下。

我们又发现了一个可以用来发送邮件的web服务,但是这个web服务是未授权的!!!

image-20221125152751483

然后抓包看了看还发现有attachment参数,默认attachment是空的,这里就尝试传了filename和path参数,真的把web服务所在的服务器的文件带上发出了邮件到我们的邮箱!!

image-20221125152826775

Log4j RCE

发现了一个minecraft的服务器,还有jar包,发现用的log4j 2.00,这里应该是存在log4j rce的漏洞的,只不过很可惜发现的时候只有一个小时了也还没打通。

Summary

总的来说比赛还是很有意思的,我们虽然人手不多就3,4个师傅在打,但是还是挖到了不少的洞,只是可惜经验不是很足,如果之后还有机会打一些渗透比赛或者实战的话有这次的经验积累也会好很多。