一次平平无奇的 Oracle 注入

在某次项目中,首先是发现注入点,数据库是Oracle,利用方式是时间盲注:

因为需要具体数据,所以要深入利用,手工肯定不方便,所以直接上 Sqlmap:

Sqlmap也可以扫出该注入点,但想要进一步查询数据时,却发现Sqlmap利用不起来,无法查出数据:

为了确定查询数据失败原因,此时加上参数 -proxy http://127.0.0.1:1080 使流量经过burp,发现某些常用的查询方式,在该oracle数据库中会报错,如 SELECT banner FROM v$version WHERE ROWNUM=1 等(可能是数据库版本原因?)

语句错误返回

语句正常返回

使用其他某些语法也会报错,比如 Sqlmap payload 中的 CAST(%s AS VARCHAR(4000)) 、NVL(%s,' ') 等,常见的 COUNT 方法也会报错。

大概确定了查询数据失败原因。那解决问题的方法也很简单,就是把有问题的数据库方法找出来,然后进行相关的替换就可以了。

打开 Sqlmap 目录下 data/xml/queries.xml ,找到 Oracle 的payload

替换其中经过尝试会使程序错误的方法,其中 count 可以用 sum(1) 替代。同时也发现了 current_db 和 current_user 是同一个 payload,感觉有点问题,也顺便替换了,替换后的数据如下:

接下来就是修改具体的查询数据的语句了,其中有些 %s 占位符是命令行的输入,如 下面的 TABLE_NAME 的值就是命令行输入的 -T 参数的值

修改完成后,再使用 Sqlmap 跑数据,不断根据返回确定查询方法,根据请求结果调整 SQL 语句,最终能够跑起来了。

本以为这次平平无奇的注入就结束了,没想到新问题又出现了,Sqlmap 跑数据是能跑了,但因为注入点的利用方式是时间盲注,所以会受网络波动或者数据库响应的影响,跑出的数据经常会有错误,一看就不对劲,而且时间盲注效率很低,花时间的很多,数据输出很少,对于跑数据非常不方便:

所以需要想办法,解决上述问题。在之前的测试中也发现了,当数据库报错时,返回的请求结果和正常是不一样的,所以可以利用这两个不同的页面差异构造布尔盲注,Oracle 数据库可以利用 1/0 报错的特性(Mysql就不会报错),将时间盲注转换成布尔盲注。

但 Sqlmap 并没有这种检测方法,所以要在 /data/xml/payloads/boolean_blind.xml 修改 payload,加入以下方法:

css 复制代码
<test>
        <title>Oracle AND boolean-based blind - (custom)</title>
        <stype>1</stype>
        <level>1</level>
        <risk>1</risk>
        <clause>1</clause>
        <where>1</where>
        <vector> AND [RANDNUM]=(CASE WHEN ([INFERENCE]) THEN 1 ELSE 1/0 END)</vector>
        <request>
            <payload> AND  [RANDNUM]=(CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE  1/0 END )</payload>
        </request>
        <response> 
            <comparison> AND  [RANDNUM]=(CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE  1/0 END) </comparison>
        </response>
        <details>
            <dbms>Oracle</dbms>
        </details>
    </test>

使 Sqlmap 能够按照自定义的语句查询数据结果:

最终,通过不断的测试,所有问题均已解决,能够非常高效的跑出具体的数据:

相关推荐
SelectDB1 小时前
美团数十 PB 规模 Apache Doris 实践:从统一 OLAP 到 AI-Native 数据基座
大数据·数据库·性能优化
Database_Cool_1 小时前
阿里云RDS主从延迟解决方案_只读实例半同步复制最佳实践
数据库·人工智能
KaMeidebaby2 小时前
卡梅德生物技术快报|小 RNA 适配体合成 + 多方法亲和力表征全流程标准化操作手册
前端·网络·数据库·人工智能·算法
卓怡学长2 小时前
w269基于spring boot + vue 候鸟监测数据管理系统
java·数据库·spring boot·spring·intellij-idea
ClouGence2 小时前
MySQL 到 StarRocks 数据迁移同步:同步方案与实践指南
数据库·mysql
行业研究员2 小时前
当数据生产者变成 Agent,数据库底座如何重构?
大数据·数据库·重构
人工智能培训2 小时前
破解数据发展瓶颈 激活数字经济新动能
大数据·数据库·人工智能·深度学习·神经网络·机器学习·生成对抗网络
1234567890@world3 小时前
知识管理 | 数字化 | APQC
大数据·数据库·人工智能
倒流时光三十年4 小时前
PostgreSQL JSONB 操作符详解
大数据·数据库·postgresql
旧曲重听14 小时前
为什么现在 RAG 越少越少提及了
数据库·程序人生·职场和发展·agent