zoukankan      html  css  js  c++  java
  • 《metasploit渗透测试魔鬼训练营》靶机演练之第五章实战案例Oracle数据库

    准备一台BT5作为入侵机,一台win2003作为靶机,靶机上存在着Oracle数据库(版本为10.2.0.1.0)TNS服务的漏洞,该漏洞的编号为CVE-2009-1979。

    BT5:
    ip 10.10.10.128
    win2003:
    ip 10.10.10.130
     
    下面开始演练:
    在网上找到了关于这一漏洞的一些介绍,metasploit里有利用这个漏洞的模块,首先search这个模块:
    进入目录去查看一下这个模块的源代码,找到target,如图:
     
     
    能看出用了p/p/r的溢出方式,以及不同版本需要不同的返回地址变量Ret。
     
    进入metasploit,选择好渗透模块和攻击载荷,配置好参数:
     
     
     
     
     
     
     
     
    配置好后,执行exploit命令,发现没有返回shell:
     
     
    多以执行后依然没有返回,于是就怀疑系统版本的问题。
    首先怀疑是返回地址出现的差错,于是去靶机用OllyDbg加载了ORACLE.EXE进程,从渗透模块的源代码可以知道,Ret为0x011b0528,对应的是p/p/r,
    在靶机上定位到该位置,如图:
     
    没有错啊,,
     
    没有思路了,,还是回去翻了翻书,根据书上的思路来吧。。
     
    回去看了看模块源代码,找到了这几行,有了线索:
    数据包用了AUTH_SESSKEY作为名称标识,这就意味着ORACLE程序中肯定用到了这个标识,回到OllyDBG,查看所有的文本字符串,如图:
     
    在文本框中搜索 AUTH_SESSKEY,找到了三个,如图:
    分别跟进去看了看,发现都调用了同一个函数,这里就截一个图:
    跟踪这个函数,来到了这里:
     
    在60FD99AC下个断点,然后F9让程序跑起来,然后再次用BT5的exploit命令攻击。程序断在断点处。
    然后用Ctrl+F9到返回处01010EBD,如图:
     
    接着又调用了CALL_02610928函数,看了书才知道这是_intel_fast_memcpy函数,F7跟进,可以再栈中看到调用的参数,
    Address        Value            Comments
    0673D040    |0673DA96    目的地址
    0673D044    |04AB99A4     源地址
    0673D048    |000001A7     复制长度
     
    接下来看一下SEH:
    Address        Value            Comments
    0673DC40    |0673DE64    Pointer to next SEH record
    0673DC44    |0261348C    SEH handler
     
    计算一下,向目的地址0673DA96复制长度0X1A7字节的数据,最终覆盖到0X0673DC3D 没有覆盖到SEH起始地址0X0673DC40 。
    真相大白了,原来是复制的字符串不构长!
    在内存部分中找到源地址04AB99A4处的字符串,然后查找开始时找到的返回地址Ret0x011B0528,地址为0x04AB9B42。
    计算一下偏移量:
    返回地址和源地址之间:0x04AB9B42-0x04AB99A4=0x19E
    目的地址到SEH Handler之间:0x0673DC44-0x0673DA96=0x1AE
    故,需要增加0x10的随机字节,找到模块中构造溢出字符串的源代码:
     
    修改为
     
     
     
    为了覆盖必须加长字符串,所有+0x10。这样做就加大了栈中payload和跳转指令偏移量,所以也要修改jmp指令跳转的距离,由于jmp后移0x10,前面字符串增加0x10最终增加+0x20,这里说的略简单,不懂的读者可以去百度一下SEH跳转内存攻击原理,就不在详细说了,过于繁琐,而且我也不是很懂。
     
    重新启动ORACLE服务,在BT5上重新测试,用rexploit命令,结果:
     
    成功。
  • 相关阅读:
    Leetcode——栈和队列(3)
    Leetcode——栈和队列(2)
    java——面试题 基础(上)
    Leetcode——栈和队列(1)
    LeetCode——动态规划整理(2)
    LeetCode——动态规划整理(1)
    计算机网络——数据中心(下)
    计算机网络——数据中心(上)
    计算机网络——HTTP(下)
    计算机网络——HTTP(上)
  • 原文地址:https://www.cnblogs.com/student-programmer/p/6729174.html
Copyright © 2011-2022 走看看