拿了首届信安之路巅峰挑战赛第一,这次比赛的writeup
如下,orz
,orz
。
Level_1
1 | 欢迎参加首届信安之路巅峰挑战赛,第一关的入口: |
选择题为主,最后一题例外,为此,还抓了个包,研究了下js
脚本
看下脚本
火狐抓个包,得到key
?这tm
什么原理。
Level_2
1 | 恭喜通关第一关,第二关入口: |
我滴个天啊。。。。。弱密码随意登陆。。。。。不好意思,这题我真是非预期解法,具体的预期解法,之前信安之路文章已发,就不仔细讲述啦!
得到第二关答案key:2c4b23c265c3e834f31024533565f2be
Level_3
1 | 恭喜完成第二关,第三关的入口: |
这题,学到的东西很多,坑点多,但就是好玩。
日常扫端口
没发现啥(这时候也没全tcp
端口扫描),后面出题老哥放出新提示
上网搜搜,嗯 ,6379 Redis
很有可能哦。
尝试一波,发现6379
端口开的是redis
服务,执行命令redis-cli -h 66.42.84.155 -p 6379
,发现可以登录,但是需要密码。
尝试使用hydra
爆破,但是不知为啥,爆破无效(这里上网搜索了下,说是hydra
编译问题),于是尝试使用python
脚本。
1 | import redis |
字典选择top100
弱密码就行啦,开始爆破。
爆破成功,密码是:1q2w3e4r
嗯~,爆破是成功了,但是怎么利用redis
漏洞呢,可以看看这篇文章,其中详细指出了一些想法。
自己测试时,发现/root/.ssh/
这个目录不在了,想着利用redis
写入自己私钥,远程ssh
连接上去的幻想也就破灭了。
后面尝试着,网上学习了一波,尝试着读下/etc/
这个目录,喔!竟然存在,嘿嘿,那么是不是可以尝试/etc/passwd
文件实现任意账号密码的重置呢?具体操作请查看上述那个链接,下面是自己的操作:
好的,成功save
后,尝试以root
用户登陆,然后就这样登上去了,root
用户登上去了?^–$–*/,还是有点吃惊的,赶快联系了下出题的大佬,问下就这样?这是预期解法?直接用root
?后面问了下,redis
是用root
身份启动,被菜鸡我刚好撞上了,直接把root
密码重置了。甚至,不小心把/etc/shadow
给搞坏了,抱歉啊,不是故意的。
查看下敏感信息
后面老哥给了我个admin
的用户账号和密码,心虚的我也不好意思的接受了。咳,继续解题。回到root
用户登陆后,用root
权限转了一圈,看了下/tmp/history
,以下为内容
1 | [root@vultr tmp]# cat history |
em~
,我以为我找到答案了,你肯定也看到了P@ssword123
,想多了,因为下面的命令告诉我们,大佬改了密码。
先再看看/etc/shadow
,en~
,密码的hash
值都有,不是说key 的明文密码就是下一关通关密语
吗?那试试爆破key
用户的hash
值咯。结果再爆破这里,巨坑,有两种工具可以爆破,一种john
,一种hashcat
,john
不知啥原因,kali
、ubuntu
下均报错,折腾许久,还是没弄好,就去搞鼓hashcat
。
hashcat
用的是windows
版的,但是死活爆破不出来,这是我使用的是john
的自带字典rockyou.txt
,后面一直换字典,还是爆不出来。厚着脸皮去问出题大佬,大佬给了点提示,仔细看history
文件,看了半天,还是没看出啥来,大佬看不下去了,字典在里面。哦~,于是我懂了。上面的history
文件有这两条记录
打开https://cowtransfer.com/s/84d80d0d7b3c45
,提示了
而140
行的url
经过URLdecode
后是这样的https://static.cowtransfer.com/84d80d0d-7b3c-4539-932d-30c3f0869538/高频字典.zip?e=1537629504&token=rkrC3sADAVnBtSQ_YTQgxi-3TEVapbu6rxmtmg0v:IDeOMk2XNjOwrk-mcTr6wnRjM84=&sign=484933f3a024bcab2d8f29c659aa8aa9&t=5ba65d40&attname=高频字典.zip
更是提醒我们要用这个字典去跑key
的hash
值,之前我也有看到这个,还打开过,但是觉得很莫名其妙,听到大佬的提示,突然悟了。是我太菜了,orz
。
于是下载高频字典.zip
,然后开始爆破,破破破,不知道怎么破请看Hash破解神器:Hashcat的简单使用,构造以下命令:
hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 字典.txt
简单描述下这条命令的意思:如果hashcat
在字典.txt
中跑出的hash值与crack.hash
中所求内容相同,就将字典.txt
找到的对应值写入found.txt
中。
于是找啊找,跑啊跑,发现跑完刚刚下载的所有高频字典.zip
里的文件还是没找到啊,于是自己本地建了个key
用户测试了下,发现可以跑出来啊。感觉出题大佬被我坑了(之前直接的rsdis
命令写入,把/etc/passwd
写坏了),后面问了下,果然,之前的那条key
的hash
值是跑不出来的。额。。。自作自受啊。出题老哥后面重新给了个sha512
的值$6$ZkfV4HlR$7hk5IVzAVIq1gGLJo254qMm9LT6YrnUy7iATOTc8das8pOwGPWzKMlWTczMjp5fAyYFQ1SMe/K.FIGBAX/0590
执行命令:hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 55泄漏门(部分).txt
,秒破
查看found
文件:
第三关最终的KEY
:1314woaini1314
听说后面这题是这样的,觉得难度就应该降低挺多的了
Level_4
1 | 恭喜完成第三关,第四关的入口是: |
打开网页是这样的(我刚做这题的时候,页面是没有任何消息的,摸索好一阵子)
打开网址https://cowtransfer.com/s/023ab1f54dd04c
,提供了一个压缩包HellWorld.pcapng
进行下载。
wireshark
三板斧试下,很快就会发现其中的http
流存在提示,有个压缩包,里面有私钥和公钥文件。除此之外明确,攻击者内网ip:10.0.3.111
,被攻击ip:173.82.235.146
(攻击者的外网ip
:182.150.21.33
,估计出题老哥这题是在虚拟机抓的,所以会有内外网ip)
而分组10061
和10956
则分析出以下内容:
1 | http://dynupdate.noip.com/settings.php?username=C3A37087469&pass=HMAC{yuyvphyx4snkqvtgt7kiyiamtra=} |
其中有个username=C3A37087469
,这个是接下来的线索。另外,值得一提的是passwd.jpg
这个图片,这个http
传输载体tcp
传输时,存在丢包现象,所以单纯的http
流追踪是找不到回应的包,只能通过追踪tcp
流查找重传的数据。
很明显,是个图片,不过是base64
格式,这个需要自行通过html
标签img
使图片显示在网页中,操作一番,如下
好的,我们现在得到了*mGX3Y-d
。再仔细看看题目还有个神秘代码,UJxgqdNUuH2I5EDDXgXvhFleJiVxeOvZBLXiLJ3lTq+lTRg7eSMR4++CZwe2z7vFh5CqETYeoZ7fAUWT4iCMMuap2iG/OfbKV2JN2SFrpCKCmSfnlxKIF02KTUyI99Ip/06LtNlmAIBtWisi0Ijr67lq+2HKQgxu5KaaNQpzohk=
这个通过之前压缩包中的rsa
私钥文件直接解密,会得到以下内容eK8}vD3=
。
好的做到这里,我有话要讲,那个时候,再看了下题目
再联系上面得到的消息,我用ubuntu
的ssh
服务尝试爆破了207.148.27.120
的22
端口,其中爆破字典我选择了top
前100
的弱密码,并且添加了*mGX3Y-deK8}vD3=
、eK8}vD3=*mGX3Y-d
这两个密码进去,但是爆破没结果。而真相是,过了一天,我用xshell
再次连接时,直接root
用户,再以eK8}vD3=*mGX3Y-d
登进去了,登进去了。(这里之前问了出题老哥,老哥说设置了ssh
验证次数为5
次,猜测是不是这个原因导致ubuntu
的hydra
没有成功爆破)
密码是eK8}vD3=*mGX3Y-d
登录成功后,第一件事就是查看history
,还是发现了一些东西,比如说icmpsh_m.py
,刚开始以为这个是linux
提权的后门,理直气壮去找老哥,老哥说不是这个。好吧继续找。
然后往下翻翻看到了这个
有个很明显的目录/etc/ssh/
,下载了个XAZLER.exe
打开后是这样的
细心的你们一定发现,上面有提示“请按任意键继续”,嗯,但是我没按,直接关掉了(那个时候我只要多按下任意一个键,key
就会出来)。然后我又继续往下探索,发现了存在一个C3A37087469
的用户,咦!
其中有个key.sh
,打开看下
1 | #@Cherishao |
到这里,想了好久还是没思路,厚着脸皮去问出题老哥,发了一些解题截图过去,老哥说:“你是不是傻啊,再随便按个键啊”,然后就是下面这个样子(tm
内心一万匹草泥马飞奔)
好吧,得到了key
,下一关的钥匙。
在其中的解题过程中,此题的出题老哥,教了我好些应急响应、溯源等知识,贼喜欢。
这里放个学习链接:干货 | 黑客入侵?这里有详细的应急排查手册!
解题过程中,老哥为了加快我们的解题速度,还放出了个提示:
后面做完题,感觉这提示没啥用啊。后面问了下
好吧,的确有这样的想法,当时我记得ip
反查都试了一遍。
Level_5
1 | 恭喜完成第四关,第五关是一个病毒分析题,样本下载地址: |
这题啊,大家解压压缩包的时候千万小心,这是个真的病毒,嗯~,还好我放在虚拟机里了,不然,物理机得遭殃。
看到了题目,想了想,有点意思啊,还问黑客服务器的IP地址是什么?
。玩玩呗,虚拟机运行下这个病毒软件,发现文件数据被加密了,还发现了这个
然后我就去下载onion
浏览器了,弄了半天没弄好,去问出题老哥,我觉得那个时候老哥都被我逗笑了。
然后老哥给了提示,抓包,这个其实也想到了,但是想归想到,操作起来发现巨坑,因为病毒传送信息的服务器炸了,导致抓包的时候没有看到http
流,后面仔细看了半天,才找到下图的线索。
是的,黑客服务器的IP地址就是137.74.163.43
,就是这么简单。但是让我头疼的是第一个问题,rsa
的公钥是啥?我滴个天啊,摆明要逆向啊。去问问出题老哥有没其他做法,老哥指点了一条明路:内存提串,后面使用了火绒剑
,这个工具,贼好用。仔细分析了很久,火绒剑监控一下,就能看到这个病毒exe
相应的行为了,在其运行完毕后,最终还会释放一个PE
,而这个PE
是没有任何混淆的,可以清晰使用IDA
查看到其中的RSA
公钥。当然其中需要dump
一下,这里请教了下出题老哥:OD
本身能dump
,PEtoolS
,loadPE
也都能dump。好吧,那就dump
一下,dump
出来后,直接扔到IDA
中,得到RSA
公钥
得到的最后RSA
公钥为
1 | -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyvXYYjSQqu7nWxB8HH/9SIaTd ZZ5Es9nv2KQnPcUV6F0ZHITClTZvoa7PbtG77q76xBNdvTH8VIXGjn+d58xK8jlE krC/N87iWPpG0jgmeY/ytR/gyArojmDFFnt11WP2koi2sjWzz1UXv8SC/aHHqfHe wgWrhFLmlhxrBxo46wIDAQAB -----END PUBLIC KEY----- |
黑客服务器ip:137.74.163.43
这里有个尴尬的地方,因为我是先拿到ip
,提交答案后,直接“完成所有挑战”,后面跟出题老哥反映下,再继续去找公钥的答案。
到此结束,大佬们,再见。