首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用开发为渗透测试人员工作?

如何利用开发为渗透测试人员工作?
EN

Security用户
提问于 2016-03-05 13:51:41
回答 1查看 1.2K关注 0票数 4

在进行攻击开发时,进程总是依赖于受害者机器上的内存地址。

作为一个利用漏洞的开发人员,您必须设置一个攻击者\受害者计算机的环境,并对其进行尝试。在从易受攻击的应用程序获取外壳的过程中,开发人员的主要线索是将应用程序附加到调试器(通常由CPU寄存器(如EIP、ESP等)指向的内存地址(主要是DLL和缓冲区位置)。

这是好的,如果最终的目标是做一个概念代码的证明,以证明这个应用程序是脆弱的。然而,据我所知,这些地址不是永久性的,可以在不同的机器之间进行更改。如果您正在为一家公司进行黑匣子渗透测试,您将无法将调试器附加到他们的应用程序以获得正确的地址。同样的情况也适用于来自开发数据库的公共攻击,因为那里的大多数漏洞都需要一些地址和偏移量的修复。

因此,我的问题是:作为渗透测试人员而不是以开发开发人员的身份编写这样的漏洞(或从开发-db下载)如何使渗透测试人员受益?

EN

回答 1

Security用户

发布于 2016-03-05 19:40:03

您是在问外壳代码如何克服地址空间布局的随机性,但从您的提问方式来看,这一点并不清楚。“面向返回的编程”(ROP)的艺术已经发展到迎接这一挑战。ROP的目标是确保任何代码执行的返回地址都指向已被预先批准执行的地址空间,因为它位于一个或多个模块(或ROP语言中调用的“小工具”)所使用的地址空间,该地址空间已经是已被利用的原始程序的一部分,或者位于已被利用的程序可以合法调用的库中。如果初始程序和相关库被放置在一个随机位置,则需要发现随机位置。例如,下面是绕过ALSR的方法:

  • 目标非ALSR模块。有些软件不是为了遵守ALSR而编译的,也不尊重它。许多对JRE6浏览器插件的攻击都依赖于此。来源
  • 查找可执行文件的初始地址并推断其馀地址。例如,该Adobe漏洞查找初始地址,并使用操作指针的能力,然后对内存位置“读取vtable”,从而使自己摆脱硬编码的内存位置。也就是说,一旦完成,它就可以依赖于相对的内存位置。

在进行攻击开发时,进程总是依赖于受害者机器上的内存地址。

最初的说法是错误的。并非所有为Metasploit开发或列出的应用程序都依赖于执行外壳代码的能力。也许在提到调试器时,您只是询问了这些类型,但为了以防万一,可以考虑使用以下来自于exploitdb的漏洞:

https://www.exploit-db.com/exploits/39515/不涉及内存位置。Metasploit将使用未经身份验证的文件上载功能来上载JSP文件,然后您可以连接到该文件并向系统发出命令。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/116562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档