代码之家  ›  专栏  ›  技术社区  ›  bugmagnet

在哪里可以找到缓冲区溢出的演示?

  •  1
  • bugmagnet  · 技术社区  · 15 年前

    有没有一个站点,或者有没有一个简单的方法来建立一个站点,来演示缓冲区溢出会发生什么?这是在web应用程序的上下文中。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Allbite    15 年前

    第一个问题是。。。什么网站服务器或图书馆?IIS-6运行ASP脚本解释器?IIS-7背后的ASP.NET?阿帕奇猫?像Poco中的HTTPServer这样的库?

    要利用缓冲区溢出漏洞,您必须首先在应用程序中找到可能发生溢出的特定位置,然后确定必须发送哪些确切的字节来覆盖内存,并使用正确的字节将溢出的内存写入堆栈,然后执行在溢出中发送的机器代码(因为您已经重写了堆栈)。

    http://en.wikipedia.org/wiki/Buffer_overflow

    http://seclists.org/fulldisclosure/2005/Apr/412

    http://www.microsoft.com/technet/security/bulletin/MS06-034.mspx

    http://www.owasp.org/index.php/Buffer_Overflow

    http://www.windowsecurity.com/articles/Analysis_of_Buffer_Overflow_Attacks.html

    火上浇油,但我要说的是,任何足够大小的代码库都包含潜在的可爆炸缓冲区溢出,而不管执行环境或源语言如何。当然,有些语言和平台允许应用程序开发人员比其他语言和平台更容易“自取灭亡”,但这一切都归结为个人勤奋、项目复杂性、使用第三方代码,然后总是存在针对基本实现的漏洞。

    缓冲区溢出将继续存在,这只是一个问题,即通过安全编程实践来减轻风险,并在发现新的漏洞时认真监视它们以管理风险。

    一个很好的例子是,对于一个web应用程序来说,在所有设备和应用程序的网络实现中都有可能出现溢出,这些设备和应用程序处理通过Internet传递的字节。

    除了开发人员未能遵循安全编程实践的简单“C”风格溢出之外,还有一些隐藏的宝石,如整数溢出。

    即使已知某个服务器主机环境是高度稳定的,它也毫无疑问地利用了数据库和其他操作系统设施,这些设施本身可以通过web服务器加以利用。

    当你开始做的时候,没有什么是安全的,这只是一个复杂的问题。

    一个特定的应用程序或服务器可以完全安全的唯一方法是通过勤奋的监视,以便在发现可疑行为时可以纠正问题。我非常怀疑沃尔玛、联邦快递或任何其他大公司是否乐意公开违规行为。相反,他们监视、修复并继续前进。

    有人甚至可以说SQL注入是缓冲区溢出的一种抽象形式,但您只需使用特定字符选择缓冲区结束的位置,然后提供希望在正确位置执行的代码。

        2
  •  0
  •   Andrew Andrew    15 年前

    他们 倾向 不会出现在web应用程序中。 Google's Web Application Exploits and Defenses codelab

    这个代码实验室没有覆盖溢出漏洞,因为Jarlsberg是用Python编写的,因此不易受到典型缓冲区和整数溢出问题的攻击。Python不允许在数组的边界之外进行读写,整数不能溢出。虽然C和C++程序最常见的是暴露这些漏洞,但其他语言并不具有免疫力。例如,虽然Java的设计是为了防止缓冲区溢出,但它默默地忽略了整数溢出。

    缓冲区溢出是否可能取决于您使用的语言。