Python渗透测试编程技术大全


)

一、漏洞渗透模块

1、测试软件的溢出漏洞

(1)栈溢出漏洞发现

FreeFloat FTP Server会在运行的主机上建立一个FTP,其他计算机上的用户可以登录到这个FTP上来存取文件。
例如,在主机192.168.0.116的C盘中运行这个FTP软件,在另外一台计算机中可以使用FTP下载工具或者命令的方式进行访问。这里采用命令的方式对其进行访问,(使用 FreeFloat FTP Server这个服务器对登录没有任何的限制,输入任意的用户名和密码都可以登录进去)
在这里插入图片描述
在这里插入图片描述
查看这个工具是否存在栈溢出漏洞
在这里插入图片描述
系统并没有崩溃,而是正常的出现了输入密码的界面。
用WireShark来抓包查看此次登录的数据包
在这里插入图片描述
可以发现,实际上发送出去数据包中的字符“a”的数量并没有那么多
无论在登录用户名时输入多么长的用户名,而实际上发送出去的只有 78 个“a”。
自行构造数据包并发送出去,以此来加大字符串的数量引起溢出。
首先编写一个可以自动连接到FreeFloat FTP Server的客户端脚本,先来建立一个到FreeFloat FTP Server的连接。
在这里插入图片描述
执行之后,就建立好一个到目标主机21端口的连接,但是到FTP的连接需要认证,仍然需要向目标服务器提供一个用户名和一个密码。
服务器通常会对用户名和密码的正确性进行验证,也就是将用户的输入与自己保存的记录进行比对。
把FreeFloat FTP Server 用户名的输入作为渗透测试的切入点,首先来检查这个软件是否存在栈溢出的现象,这个检查很简单,在输入用户名的时候,输入成百上千的字符,同时观察目标服务器的反应。
观察正常连接到目标服务器上数据包的格式。
在这里插入图片描述
使用socket套接字中的send()方法可以将一个字符串以数据包的形式发送出去,这里面以成百上千的“A”作为用户名。
在这里插入图片描述
将这个数据包发送到目标FTP服务器上,可以看到这个FTP服务器工具崩溃了
在这里插入图片描述

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

这里显示软件FreeFloat FTP Server执行到地址“41414141”处时就无法再继续进行。
出现这种情况的原因是 原本保存下一条地址的EIP寄存器中的地址被溢出的字符“A”所覆盖。
“\x41”在ASCII表中表示的正是字符“A”,也就是说现在EIP寄存器中的内容就是“AAAA”,而操作系统无法在这个地址找到一条可以执行的命令,从而引发系统的崩溃。
在这里插入图片描述
每一次这个软件执行时所分配的地址都是不同的。
所以现在需要知道的不是EIP的绝对地址,而是EIP相对输入数据起始位置的相对位移。
如果这个位移的值不大,可以用逐步尝试的方法获取这个值。但是如果位移比较大,还需要使用到一些工具来提高效率。
可以借助 Metasploit 中内置的两个工具pattern_create和pattern_offset来完成这个任务
pattern_create可以用来创建一段没有重复字符的文本。
将这段文本发送到目标服务器,当发生溢出时,记录下程序发生错误的地址(也就是EIP中的内容),这个地址其实就是文本中的4个字符。
利用pattern_offset快速找到这4个字符在文本中的偏移量,而这个偏移量就是EIP寄存器的地址。
kali虚拟机中进行如下操作:
在这里插入图片描述
生成一段500个字符的文本
在这里插入图片描述
使用这个pattern_create.rb产生的字符来代替那些“A”。仍然使用前面那段连接目标服务器的Python脚本将这个内容发送出去。
在这里插入图片描述
可以看到这个FreeFloat FTP Server软件再次崩溃
在这里插入图片描述
提示信息中的地址“37684136”,使用pattern_offset来查找这个值对应的偏移量
在这里插入图片描述

3、查找JMP ESP指令

(1)执行恶意的攻击载荷

按照栈的设计,ESP寄存器应该就位于EIP寄存器的后面(中间可能有一些空隙)。
使用大量字符来溢出栈的时候,也可以使用特定字符来覆盖ESP,二来虽然无法对ESP寄存器进行定位,但是可以利用一条“JMP ESP”的跳转指令来实现跳转到当前ESP寄存器

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值