黑客许铁(黑客需要掌握什么技术和语言)

黑客许铁(黑客需要掌握什么技术和语言)

黑客接单hacker2024-03-25 22:21:14202A+A-

  

  老司机们对Pornhub也不会陌生了(//?//)\,此处略去一万字…作者是如何黑进pornhub的呢?这一切都要从那日作者打开pornhub说起…

  概要:

  笔者获取了pornhub.com的远程执行代码,并且在Hackone上赚取了2万美元的漏洞赏金。

  笔者在PHP的垃圾回收算法中发现了UAF漏洞

  此漏洞均可以通过利用PHP的反序列化功能进行远程利用

  笔者还获取了互联网漏洞悬赏协会的2000美元赏金

0×01 漏洞发掘

  大体“分析”了平台之后,笔者快速检测了该网站的反序列化使用情况,发现多种路径受到影响(比如你上传性感图片的路径):

  https://www.pornhub.com/album_upload/create

  https://www.pornhub.com/uploading/photo

黑客许铁(黑客需要掌握什么技术和语言)

  在这套程序中,当你post数据中包含名为cookie的参数时,会将cookie参数的值进行反序列化操作,并且其相关的数据会在Set-cookie头中有所体现。

  这可以通过发送包含一个对象的特定数组来进一步验证:

  响应布局:

  第一眼看上去可能会觉得它只是造成信息泄露危害,但一般情况下大家都清楚反序列化用户输入是不明智的:

  ROP in PHP applications

  Shocking News in PHP Exploitation

  开发技术标准中要求所谓合适的面向对象的编程(Property-Oriented-Programming )意味着可能会因为滥用已经存在的类而触发不必要的恶意代码。但不幸的是,笔者很难收集到总体上pornhub使用的所有框架和PHP对象,对多个类别的框架进行了测试之后都无功而返。

  0×02 漏洞描述

  反序列化的核心相对来说比较复杂,涉及到了PHP5.6 1200多行的代码,此外,许多PHP类有自己的反序列化的方法。为了支持像对象,数组,整型,字符串,甚至是引用这样的数据类型,PHP的记录中显示了一些bug和内存损坏的漏洞。

  目前PHP的新版本中(PHP5.6或者PHP7)并没有发现类似的漏洞,特别是现在反序列化受到了更多的关注,好比再去榨已经榨干的柠檬,已经没有太多的漏洞可以被挖掘了。

  fuzzing 反序列化

  为了找到最终的答案笔者的基友Dario针对传递给反序列化的序列串“特制”了一个fuzzer工具,在PHP7上运行这个fuzzer工具将会得到不可预料的结果,而且这种结果在测试pornhub的网站时是不可复制的。

  因此笔者 把目标放在了PHP5的版本上,然而在PHP5的版本中这个fuzzer生成了1TB的日志还是没有什么结果。当笔者把越来越多的精力放在fuzzing上并且毫无收获之后,笔者开始质疑自己了:这是一个安全相关问题吗?

  如果是的话是只能本地利用还是可以远程利用呢? 为了深入调查笔者又用fuzzer工具收集了超过200kb的非打印blobs数据。

  分析意外结果

  接下来笔者用了大量时间来分析症结所在。笔者已经提取了工作内存损坏漏洞的简略证据,最终发现了一个UAF漏洞!经过进一步调查,笔者发现根本源头来自PHP的垃圾回收算法,与反序列化根本毫无关系,这个PHP的两个组成部件在解序列化后才相互作用, 因此,不是很适用于远程利用。

  经过进一步的分析后,笔者对问题的根源有了更深的理解,并且发现了更多的UAF漏洞,而且是可以用来远程利用的。

  漏洞链接:

  PHP Bug – ID 72433--CVE-2016-5771

  PHP Bug – ID 72434-- CVE-2016-5773

0×03 远程利用

  即便是这个让人充满“希望”的UAF漏洞也是非常难以远程利用的,特别是它涉及到了多个开发平台。 明确了我们的目标是能够远程执行任意代码后,我们需要找到控制CPU指令指针到RIP寄存器的方法,通常会有以下障碍:

  1.栈和堆以及任何其他的可写入段被标记为不可执行(可执行空间保护)

  2.即使你能够控制指令指针,你也需要有一个可执行内存段的有效地址。之后调用libc函数系统执行一个shell命令行。在PHP中,通常是很容易执行zend_eval_string的,例如你在一个PHP脚本中写上“eval(‘echo 1337;’);”时,它可以让我们无需转换而执行任意代码。

  第一个问题可以通过使用返回导向编程(ROP)利用现有的可执行记忆片段来解决。第二个问题需要找到zend_eval_string的正确地址。

  通常当一个动态链接程序被执行时加载程序将会映射此过程到0×400000 (x86_64标准负载地址),如果你已经以其他方式获取了执行权限,你可以本地查找你想要的任何功能。

  笔者发现了pornhub使用的是PHP5-CGI的编译版本,因此难以确定确切的PHP版本。

  具体的利用过程因为比较繁杂小编在这并不赘述,笔者利用漏洞具体能实现的是:

  1.下载pornhub.com的完整数据库(包括敏感数据)

黑客许铁(黑客需要掌握什么技术和语言)

  2.可在平台上跟踪用户操作行为

  3.网站托管在服务器上的所有代码皆可被泄露

  4.深入内网

0×04 规避建议

  笔者给出的建议是:

  即使是在不同类型的PHP环境中,仍然可以利用反序列化实现远程代码执行,因此不要在反序列化中涉及使用用户数据,少用复杂的序列化方法例如json。

  最新的PHP版本已经修复了漏洞,因此读者们需尽快更新PHP版本。

*参考来源:evonide,编译/banish,有删改,转载请注明来自FreeBuf(FreeBuf.COM)

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 2条评论
  • 澄萌咽渡2024-03-26 00:03:27
  • 换而执行任意代码。  第一个问题可以通过使用返回导向编程(ROP)利用现有的可执行记忆片段来解决。第二个问题需要找到zend_eval_string的正确地址。  通常当一个动态链接程序被执

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理