开发者社区> apachecn_飞龙> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Web Hacking 101 中文版 十八、内存(一)

简介: 十八、内存 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 缓冲区溢出是一个场景,其中程序向缓冲区或内容区域写入数据,写入的数据比实际分配的区域要多。
+关注继续查看

十八、内存

作者:Peter Yaworski

译者:飞龙

协议:CC BY-NC-SA 4.0

描述

缓冲区溢出是一个场景,其中程序向缓冲区或内容区域写入数据,写入的数据比实际分配的区域要多。使用冰格来考虑的话,你可能拥有 12 个空间,但是只想要创建 10 个。在填充格子的时候,你添加了过多的水,填充了 11 个位置而不是 10 个。你就溢出了冰格的缓存区。

缓冲区溢出在最好情况下,会导致古怪的程序行为,最坏情况下,会产生严重的安全漏洞。这里的原因是,使用缓冲区移除,漏洞程序就开始使用非预期数据覆盖安全数据,之后会调用它们。如果这些发生了,覆盖的代码会是和程序的预期完全不同的东西,这会产生错误。或者,恶意用户能够使用移除来写入并执行恶意代码。

这里是来自 Apple 的一个图片:

这里第一个例子展示了可能的缓冲区溢出。strcpy接受字符串Larger,并将其写入到内存,无论分配的可用空间(白色格子),以及将其写入非预期的内容中(红色格子)。

越界读取

除了越过分配的内容写入数据之外,另一个漏洞时越过内容边界读取数据。这是一类缓冲区溢出,因为内容被越界读取,这是缓存区不允许的。

越界读取数据漏洞的一个著名的近期示例,是 OpenSSL Heartbleed 漏洞,在 2014 年 4 月发现。在发现的时候,大约 17%(500K)的互联网安全服务器,由可信授权机构颁发证书,被认为存在此漏洞。

Heartbleed 可以利用来盗取服务器的私钥,回话数据,密码,以及其他。它通过向服务器发送“Heatbleed 请求”消息来执行,服务器会向请求者发送相同信息。消息包含长度参数。那些漏洞服务器会基于长度参数为消息分配内存,而不验证消息的真实大小。

因此,Heartbleed 消息通过发送小型消息以及较大的长度参数来利用,存在漏洞的接受者会读取额外数据,这超出了为消息分配的内存长度。这里是来自维基百科的图片:

虽然缓冲区溢出需要更详细的分析,读取越界和 Heartbleed 超出了本书的范围。如果你对它们感兴趣,这里是一些不错的资源:

内存截断

内存截断是一种技巧,用于通过使代码执行一些不常见或者非预期的行为,来发现漏洞。它的效果类似于缓冲区溢出,其中内容在不该暴露的时候暴露了。

一个例子是空字节注入。这发生在提供了空字节%00或者十六进制的0x00,并导致接收程序的非预期行为时。在 C/C++,或低级编程语言中,空字节表示字符串的末尾,或者字符串的终止符。这可以告诉程序来立即停止字符串的处理,空字节之后的字节就被忽略了。

当代码依赖字符串长度时,它的影响力十分巨大。如果读取了空字节,并停止了处理,长度为 10 的字符串就只剩 5 了。例如:

thisis%00mystring

这个字符串的长度应该为 15,暗示如果字符串以空字节终止,它的长度为 6。这对于管理自己的内存的低级语言是有问题的。

现在,对于 Web 应用,当 Web 应用和库、外部 API 以及其它用 C 写成的东西交互的时候,这就有关系了。向 URL 传入%00可能使攻击者操作更广泛服务器环境中的 Web 资源。尤其是当编程语言存在问题的时候,例如 PHP,它是使用 C 语言编写的。

OWASP 链接

查看 OWASP 缓冲区溢出OWASP 为缓冲区覆盖和溢出复查代码OWASP 检测缓冲区溢出OWASP 检测堆溢出OWASP 检测栈溢出OWASP 嵌入空字符

示例

1. PHPftp_genlist()

难度:高

URL:无

报告链接:https://bugs.php.net/bug.php?id=69545

报告日期:2015.5.12

奖金:$500

描述:

PHP 编程语言使用 C 语言写成,C 语言自己管理内存。像上面描述的那样,缓冲区溢出允许恶意用户写入应该为不可访问的内存,并可能执行远程代码。

这里,FTP 扩展 的ftp_genlist()函数允许溢出,或者发送多于 ~4293MB 的数据,它们会被写入到临时文件中。

这使得分配的缓冲区太小,而不能存放写入临时文件的数据,在将文件内容加载回内存时,这会造成堆溢出。

重要结论

缓冲区溢出是非常古老,知名的漏洞,但是在处理自己管理内存的应用时,还是很普遍的,特别是 C 和 C++。如果你发现,你正在处理基于 C 语言(PHP 用它编写)的 Web 应用,缓冲区溢出是一个明显的可能性。但是,如果你刚起步,可能你需要花费一些时间,来寻找和漏洞相关的简单注入,在更有经验时,再返回到缓冲区溢出。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
032_《Delphi下用Intraweb开发WEB程序应用实战(第二版)》
《Delphi下用Intraweb开发WEB程序应用实战第二版》 Delphi 教程 系列书籍 (032) 《Delphi下用Intraweb开发WEB程序应用实战第二版》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作 者:高勇 内容简介 IntraWeb是Delphi自带的一套Web开发框架,它由Atozed Software公司(http://www.atozedsoftware.com)在2002年制作,并完美的植入Delphi7中。
1850 0
12个便于web设计及开发的在线工具
请不要低估这些小工具,他们极其的方便并且能节省很多的时间和工作,下面就是这些在线工具的列表,挑几款来试试吧。 我还是比较喜欢Ajax Load和Web 20 Badges Generator的,你们呢? Favico 一个图标制作工具,很是方便。
975 0
Web开发必备资料(牛腩整理)
自己在WEB开发中必备的资料整理了一下,包含如下东西:以上工具都是本人在WEB开发中常用的,那个截图工具有个获取屏幕上任何一个地方的颜色值,很好用,而且用它来计算DIV的宽度高度也很好用.更新于 2010年10月4日15时45分,增加了正则表达式的相关工具下载地址: http://niunan.
616 0
《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之75---BREW 中的WEB代理
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
648 0
ZedGraph图形控件在Web开发中的应用
ZedGraph介绍: ZedGraph是一个功能强大图形控件,可以根据任意数据集创建2D曲线,bar,和pie图,同时我们既可以Windows Form中,也可以在ASP.NET Web Form中使用它。
875 0
利用QT进行web与本地混合应用开发-转载
[T] 利用QT进行web与本地混合应用开发  Qt Features for Hybrid Web/Native Application Development。原文参见 http://www.qtsoftware.com/forms/whitepapers/reg-whitepaper-hybrid. (限于本人英文水平,只译其大概)Qt提供了本地 C++对象与JavaScript的无缝集成,是进行本地与web混合应用开发的理想平台。
1745 0
《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》销售排名第4,发篇ExtJS的文章(拖放树结点)庆祝下
    《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》一书上架短短几天,就进入了互动网计算机类销售总排名第4的好成绩(见下图)。
1096 0
《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》样章下载
本文为原创,如需转载,请注明作者和出处,谢谢! 第1章:开发梦缘起开心网第5章:开心桌面:完全模拟Windows桌面的开心网第15章:移动电子相册:捕捉精彩瞬间 书中实例截图    前言      互联网的发展,就是一个不断上演奇迹的过程。
1145 0
Web Services开发——RESTEasy 2.0
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/5756609 Web Services开发——RESTEasy 2.0 原创:chszs版权所有 RESTEasy是JBoss(RedHat)公司的开源Web Services开发框架,基于Java、基于REST架构,是JAX-RS规范的最佳实现之一。
805 0
Web 开发与设计语言大盘点
在这个 Web 的时代,与 Web 相关的开发技术持续热门,从前端到后端,从标记语言到开发语言,各种技术交相辉映,沉沉浮浮,作为开发者,尤其是初级开发者,如何选择几门适合自己的开发语言尤为重要。本文是对所有 Web 相关开发语言的一次盘点,并指出其中最有前途的开发与设计语言。
1103 0
+关注
apachecn_飞龙
Github:@wizardforcel 简书:@ApacheCN_飞龙 微博:@龙雀 CSDN:@wizardforcel ApacheCN 官网:apachecn.org 机器学习交流群:629470233
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Web应用系统性能优化
立即下载
从Web到Cloud App——YunOS Web App 开发经验分享
立即下载
Serverless 开发实战--十分钟上线一个 Web 应用
立即下载