ProSSHD1.2漏洞分析学习总结.PDF

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ProSSHD v1.2 漏洞分析学习总结  简介 ProSSHD 服务器是一种网络SSH 服务器,运行于端口22 上,针对后认证行 为存在缓冲区溢出漏洞。用户必须在服务器上拥有一个账号才能利用该漏洞。可 通过向SCP GET 命令的路径字符串传入超过500 字节的数据来攻击漏洞。  实验环境 虚拟机中搭建WinXP + ProSSHD + immunity debugger + mona + Kali。 在XP 上安装ProSSHD,要注册下,30 天免费试用(到期了改下虚拟机时间 就行了)。同时要在XP 上添加一个账号,后面连SSH 要用,并不是在ProSSHD 上 添加,软件上没添加账号的地方,安装完成后就是这样了。  漏洞分析 1、控制EIP 在Kali 中创建如下脚本prosshd.py 运行脚本向ProSSHD 发送1000 个A,切换到XP 下打开Immunity Debugger 附着 到wsshd.exe 上,按F9 让其继续运行,将看到如下结果。 EIP 已经被改写通过溢出改写了EIP 的值。 2、确定偏移 利用pattern_create 和pattern_offset 来确定,得到结果为489,不多说了。 3、漏洞定位 已知偏移量为489,向ProSSHD 发送493 个A 即可刚好将EIP 覆盖,此时栈上和 寄存器的情况如下图所示。 栈上0013EFBC 处即为我们所覆盖的EIP。向栈上高地址查找看到该函数是从 0x00401B40 处调用来,同时可以看到我们输入的字符串作为参数传至此函数中。 函数将字符串进一步拼接成如下格式后传入函数wsshd中。 在函数wsshd中,调用了strcpy 函数,但是并未进行长度限制和检查, 如下所示 函数将我们输入的字符串(EAX)直接拷贝至ECX 所指向的栈缓冲区中去。此时 ECX 值为0x0013EDBC,存放函数返回地址的地方为0x0013EFBC,可以计算得出 想要覆盖该地址需要516 个字节,而EAX 中拼接后的字符串正好为516,刚好覆 盖到存放返回地址处。 执行strcpy 验证得到如下结果 成功改写了函数返回地址,让函数继续执行至RETN,此时ESP 指向0x0013EFBC, 由此控制了函数返回地址。  漏洞利用 利用ROP 来绕过ALSR 和DEP 执行shellcode。 ROP(Return-Oriented Programming 返回导向编程)当开启了数据执行保护时, 栈上的shellcode 将无法执行,此时需要利用经过链接的模块中的小块代码片段, 他们后面跟着RETN 指令,如果调用者类小块代码,它会返回到栈,那么我们就 可以调用下块代码,以此类推,通过组合这些小块代码片段达到我们的目的。具 体到当前实验中就是利用 ROP 来调用 VirtualProtect()函数以修改位于栈上的 shellcode 对应页面的权限,使shellcode 可以执行,原理图如下: |7C35F1FB | 59 |POP | 栈上的ROP |7C35F1FC | C3 |RETN | | 缓冲区溢出 | | 0X7C35F1FB | |7C34115E | 33C0 |XOR EAX,EAX| | 4 字节填充物(POP) | |7C341160 | C3 |RETN | | 0X7C34115E | | 0X7C35F21A | |7C35F21A | 83C4 0C |ADD ESP,0C | | 12字节填充物(ADD) | |7C35F21D | C3 |RETN | | 0X7C35F126 |

文档评论(0)

xiaowei110 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档