2. Python Hotshot 模块

难度:高

URL:无

报告链接:http://bugs.python.org/issue24481

报告日期:2015.7.20

奖金:$500

描述:

像 PHP 一样,Python 编程语言也是用 C 编写的,它在之前提到过,自己管理内存。Python Hotshot 模块是一个现有 profile 模块的替代品,并且几乎都是用 C 编写,比现有的 profile 模块产生一些更微小的性能影响。但是 2015 年 7 月,该模块中发现了缓冲区溢出漏洞,和尝试将字符串从一个内容位置复制到另一个的代码有关。

本质上,这个漏洞的代码叫做memcpy方法,它将内容从一个地方复制到另一个地址,接受要复制的字节数。像这样:

memcpy(self->buffer + self->index, s, len);

这个方法接受 3 个参数,strstr2nstr是目标,str2是要复制的来源,n是要复制的字节数。这里,它们对应self->buffer + self->indexslen

这里,漏洞实际上是,self->buffer总是固定长度的,但是s可以为任意长度。

因此,在执行copy函数时(就像上面的 Apple 图表那样),memcpy函数忽视了目标区域的真实大小,因此造成了溢出。

重要结论

我们现在查看了两个函数的例子,它们的不正确实现都收到了缓冲区溢出的影响,memcpystrcpy。如果我们知道某个站点或者应用依赖 C 或者 C++,我们就可以遍历还语言的源代码库(使用类似grep的东西),来寻找不正确的实现。

关键是寻找这样的实现,它向二者之一传递固定长度的变量作为第三个函数,对应被分配的数据长度,在数据复制时,它实际上是变量的长度。

但是,像之前提到的那样,如果你刚刚起步,可能你需要放弃搜索这些类型的漏洞,等你更熟悉白帽子渗透时再回来。

3. Libcurl 越界读取

难度:高

URL:无

报告链接:http://curl.haxx.se/docs/adv_20141105.html

报告日期:2014.11.5

奖金:$1000

描述:

Libcurl 是一个免费的客户端 URL 库,并且由 CURL 命令行工具用于转送数据。libcurl 的curl_easy_duphandle()函数中发现了一个漏洞,它可以利用来发送本不应传输的敏感数据。

在使用 libcurl 执行数据传输时,我们可以使用一个选项,CURLOPT_COPYPOSTFIELDS,来为要发送给远程服务器的数据指定内存区域。换句话说,为你的数据找一块地方。区域大小使用单独的选项来设置。

现在,我们没必要非常技术化,内存区域和一个“句柄”相关(理解清楚“句柄”超出了本书范围,所以没必要了解),并且应用会复制句柄来创建数据的副本。这就是漏洞所在,复制的实现使用了strdup,而数据被假设拥有空字符作为字符串末尾。

这种情况下,数据可能没有,或者在任意位置上拥有空字符。因此,复制的句柄可能过小,过大,或者使程序崩溃。此外,在复制之后,发送数据的函数并没有考虑已经读取和复制的数据,所以它也越过了预期的内存地址来访问和发送数据。

重要结论

这是一个非常复杂的漏洞的示例。虽然它对于这本书来说,过于技术化了,我将其包含来展示它与我们所学的东西的相似性。当我们将其分解时,这个漏洞也与 C 语言代码实现中的一个错误相关,而 C 语言与内存管理和复制相关。同样,如果你打算开始 C 程序的漏洞挖掘,要寻找数据从一块区域复制到另一块区域的地方。

4. PHP 内存截断

难度:高

URL:无

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

报告日期:2015.4.14

奖金:$500

描述:

phar_parse_tarfile函数并没有考虑以空字符开始的文件名称,空字符是值为 0 的字节,即十六进制的0x00

在该方法的执行期间,当使用文件名称时,数组会发生下溢(即尝试访问不存在的数据,并超出了数组分配的内存)。

这是个重要漏洞,因为它向黑客提供了本该限制的内存的访问权。

重要结论

在处理自己管理内存的应用时,特别是 C 和 C++,就像缓冲区溢出那样,内存截断是个古老但是仍旧常见的漏洞。如果你发现,你正在处理基于 C 语言的 Web 应用(PHP 使用它编写),要留意内存操作的方式。但是同样,如果你刚刚起步,你可能值得花费更多时间来寻找简单的注入漏洞,当你更熟练时,再回到内存截断。

总结

虽然内存相关的漏洞能搞个大新闻,但他们也非常难以处理,并需要相当大量的技巧。这些类型的漏洞最好还是留着,除非你拥有底层编程语言的编程背景。

虽然现代的程序语言不太可能受其影响,由于它们的内存处理和垃圾收集策略,用 C 语言编写的应用仍然易受影响。此外,当你处理用 C 语言编写的现代语言时,事情可能需要一些技巧,就像我们在 PHPftp_genlist()和 Python Hotspot 模块的示例中看到的那样。

Web Hacking 101 中文版 十八、内存(二)相关推荐

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

    十八.内存 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 缓冲区溢出是一个场景,其中程序向缓冲区或内容区域写入数据,写入的数据比实际分配的区域要多.使用冰 ...

  2. Web Hacking 101 中文版 十二、开放重定向漏洞

    十二.开放重定向漏洞 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 根据 OWASP,开放重定向出现在应用接受参数并将用户重定向到该参数值,并且没有对该值 ...

  3. Web Hacking 101 中文版 十、跨站脚本攻击(二)

    4. 雅虎邮件存储型 XSS 难度:低 URL:Yahoo Mail 报告链接:https://klikki.fi/adv/yahoo.html 报告日期:2015.12.26 奖金:$10000 描 ...

  4. Web Hacking 101 中文版 十四、XML 外部实体注入(二)

    作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 示例 1. Google 的读取访问 难度:中 URL:google.com/gadgets/directory? ...

  5. Web Hacking 101 中文版 十六、模板注入

    十六.模板注入 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 模板引擎是允许开发者或设计师在创建动态网页的时候,从数据展示中分离编程逻辑的工具.换句话说,除了拥 ...

  6. Web Hacking 101 中文版 十四、XML 外部实体注入(一)

    十四.XML 外部实体注入 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 XML 外部实体(XXE)漏洞涉及利用应用解析 XML 输入的方式,更具体来说,应用程 ...

  7. Web Hacking 101 中文版 十、跨站脚本攻击(一)

    十.跨站脚本攻击 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 跨站脚本,或者 XSS,涉及到站定包含非预期的 JavaScript 脚本代码,它随后传给 ...

  8. Web Hacking 101 中文版 十五、代码执行

    十五.代码执行 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 远程代码执行是指注入由漏洞应用解释和执行的代码.这通常由用户提交输入,应用使用它而没有任何类 ...

  9. Web Hacking 101 中文版 二十、漏洞报告

    二十.漏洞报告 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 所以这一天终于来了,你发现了你的第一个漏洞. 首先,恭喜你! 认真来讲,发现漏洞并不容易,但是有一 ...

最新文章

  1. 【ubuntu】ubuntu14.04、16.04、18.04 LTS版本支持时间
  2. vue 文字上下循环滚动_基于 Vue 无缝滚动组件Vue-Seamless-Scroll
  3. python中字典统计成绩合_Python统计字典中的项
  4. boost::hana::replace_if用法的测试程序
  5. 新增方法java_Java8_map新增方法
  6. 零拷贝(Zero Copy)
  7. vue引入全局less实现全局变量的控制
  8. wdcp安装mysql_安装wdCP,无法连接mysql,解决方法
  9. Linux环境下创建运行.java文件
  10. rsyslog syslog详解
  11. 如何把GitHub中的开源项目导入到Eclipse
  12. TensorFlow机器学习实战指南之第二章
  13. 简单的java项目中获取配置文件的值
  14. easyui下拉框,增加以及商品的上架,下架
  15. 初级学电脑计算机的入门知识,电脑基础知识入门学习(小白学好电脑从哪里开始)...
  16. 【项目实践】充电台灯电路拆解
  17. 模式化窗口问题![window.dialogArguments]
  18. 模电与数电的基本知识 (学习备用)
  19. 量子近似优化算法QAOA——解读与代码实现
  20. python在txt文件末尾追加写入_在Python文件末尾添加什么?

热门文章

  1. navmenu 收起没有动画 element_ABC360等3家英语动画片课程测评:用动画片学英语不靠谱?...
  2. windows linux双系统_还在安装双系统? 试试 Windows 和 Linux 合体
  3. gridsearchcv参数_Python机器学习库Sklearn系列教程(21)-参数优化
  4. 【C语言】Simple Sorting(结构)
  5. STC51-1602、12232、12864液晶
  6. oracle 行数大于一时,oracle – PL / SQL ORA-01422:精确的提取返回超过请求的行数
  7. 数字信号处理——DFT的一些理解
  8. 从程序员到项目经理(12):如何管理自己的时间(上)
  9. VMware虚拟机安装 windows server 2012 SQL server2012
  10. bezier曲线_套娃成神:贝塞尔曲线