第十八届全国大学生信息安全竞赛 随便写点WP和一些想法
说在前面
首先就是,遗憾落败,只得了二等奖,比较可惜。。😭😭😭😭
其次就是稍微喷一下这次的题目,出得太不合理了,比较油墨:
渗透的内网区,全场都没人拿分,四个Windows靶机都是0解,造成这一问题的主要原因在于渗透过程有点脑洞了,而且链子只有一条,总之就是中间断了,后面就做不了,,这点完全不如长城杯的题目。反正全部0解确实说不过去😅
逆向也是抽象完了,第一天似乎都没有逆向,硬要说mqtt算逆向,但是一般队伍的配置都是2pwn+2web这样,那也只有一个题,不能让二进制✌闲着吧。第二天逆向难度爆炸,记得是全场0解。认识的几个熟人都在喷出逆向的活全家了😅
之前和长城杯的某个老师聊过,他说题目就是要多到做不完。这次国赛不知道怎么想的
部分题解
Web01
渗透Web01就是一个简单的jeecg-boot的RCE,换成cat /flag即可

依照这种题目的打法,本地还是最好存一些poc,我一开始以为是未授权访问之类的,把每个api都测了一遍,后面才想到去poc库里面找现成的洞打,导致耽误了一些时间。第一题刚开始几分钟就已经有队伍把血分抢完了
但是Web01是入口机,这个机器不能访问我们的网络,只能我们访问Web01(相当于我们在NAT后),而且Web01又使用了类似云服务器安全组一样的东西,只允许特定端口访问。所以想要打内网,必须通过想办法正连Web01,然后连进去。
关于这个是八仙过海大显神通了,我听说有人是靠sed改了/etc/passwd或者shadow之类的,我的方法是用systemctl把sshd停掉,然后busybox telnetd -p 22 -l /bin/bash, 这样就可以直接连到shell里面改密码。然后kill掉telnetd再起sshd,这样就可以连上去了。
RBAC
第二天的RBAC,很少见的go题 源码,还挺有意思,其实就是条件竞争,我直接开两个终端,暴力的不停用curl拉,然后就可以触发条件竞争,不算很难,patch也很简单,把读flag的逻辑去掉就行了。实测下来发现/dev/zero因为会一直输出,所以似乎是更容易触发。

RASP
fix: 把js最后面反序列化的逻辑,return clean改成上面那个return即可修复 break: 不会(全场0解)
OTA
fix: 修复目录遍历漏洞(Spring CVE-2024-38819),把spring检测isInvalidPath处最后return的后一个与项去掉 修复h2 jdbc attack,把初始化数据库的逻辑注释掉即可
最™坑的是break,本地都能打通,远程打不通,一直拖到最后,可惜了。但是大概思路是有的,就是用路径穿越去读/../ota.jar,拿到jar包中的jwt密钥,然后伪造为SUPERADMIN,即可访问h2的路由,然后h2的rce。
可信计算
本身就只有6个小时的比赛,其他题目都需要化很多时间做的,这题就非要搞一个长篇阅读理解,然后指望选手静下心来阅读。题目本身不难,几行代码搞定,选手也不需要了解什么是可信计算,也是有点幽默的。
关于渗透web02的想法
一直觉得难受,那天晚上翻来覆去没睡着在想这个题。这个题解很少,我记得似乎只有几个,所以卡住就看其他的去了,当时比赛快结束的时候,去做了那个选择题,里面提示到了exe,才想起来还可能是打cgi,可惜时间来不及了,有点遗憾。
这题大概流程是这样:给了一个可以匿名访问的ftp,和一个开放在80的apache httpd,匿名ftp访问的就是apache的web目录。然后里面也是给了提示,就是.htaccess。这题我一开始是想传一个php,然后修改.htaccess,使php可以被解析为application/x-httpd-php,但是实测下来不解析。由于不出网,我一直觉得是自己.htaccess写得有问题,所以前前后后重复改了很多次,耽误了很多时间。
所以赛后我想,怀疑可能是主机开了cgi,比赛完本地想办法试了下: 下了个apache httpd,由于远程是windows,所以我本地也在windows跑,增加httpd.conf的配置:
1 | <Directory "htdocs"> |
然后在htdocs下面,修改.htaccess,写入
1 | AddHandler cgi-script .exe |
这样,当请求像 "http://1.1.1.1/runme.exe" 这样的内容时,就会执行runme,而不是下载文件了,所以这样就能rce。随便搓了个打印一些信息的,然后编译成exe,确实可以运行
所以这样就可以传一个vshell,然后访问一下,应该就可以上线。
如果这个题是这么出的,那我觉得确实有点意思,不过鉴于当时只有很少的解,我觉得这个题目可能更复杂。如果有大佬知道怎么做的,请立刻敲打指正我😝。
最后
明年再努力吧。
鉴于内网区是一整个域控,我觉得windows渗透这块确实要多学学。
最后,这次比赛也是发现了一些小trick,明年应该能用上😏
