RASP攻防:RASP安全应用与局限性浅析

访客4年前黑客文章818

7. C接口

FFI(Foreign Function Interface)是 PHP7.4 新加入的功能,即外部函数接口,允许从共享库中调用C代码,导致风险点扩大。调用glibc中的system:

1600436322_5f64b86285d72cae381b3.png!small

8. 已知漏洞

php有一些已知的释放重引用漏洞,比如 GC UAF、Json Serializer UAF 、Backtrace UAF等,具体的exp位于https://github.com/mm0r1/exploits/

通过之一部分对 RASP(PHP)原理的讲解,我们知道PHP函数的底层调用都要通过CG(function_table)获取所调用函数的handler。无论 RASP 是hook opcode 还是 hook function,本质上都没有从内存中删除所调用的函数,只是改变了走向,指向了我们自定义的函数。正因如此,我们可以通过上述漏洞,找到内存中对应的函数地址,将其封装为闭包实现调用,从而完成绕过 。以 system函数为例,绕过原理简单总结如下图所示:

v2-756aabc37a5e956d59af6a3ad5f01a17_1440w.jpg

对于 正常的php 文件 system("whoami")而言,由于php rasp 将function_table 函数指向从原来的zif_system 内置函数 改为 自定义的fake_system监控函数,导致命令执行在RASP的控制之下。而通过上述漏洞的方式,可以在内存中直接找到 zif_system函数地址,找到地址后,通过伪造闭包对象,将对象中的函数handler指向该地址,实现对 zif_system函数的调用,从而绕过RASP监控。

9. GOT 表劫持

在linux系统中,procfs 文件系统是个特殊的存在,对应的是 /proc目录,php 可以通过/proc 目录读写自己所在进程的内存,将非敏感函数地址替换成glibc 中的system地址,从而执行命令,其涉及的技术叫做 GOT表劫持。

通过正常函数实现敏感行为绕过 RASP ,举个例子,如果能将open函数地址换成system地址,那么便可以将fopen打开文件的命令,最终变成glibc调用system执行命令。

适用条件:

  1. 内核版本>=2.98
  2. 基于www权限的php-fpm/php-cgi work进程必须有权限读写 /proc/self/目录。
  3. open_basedir=off(或者能绕过open_basedir读写 /lib/ 和/proc/)

针对适用条件的第2点简要说明一下:

  • apache+php 由于 apache调用setuid设置www权限工作进程,/proc/self/目录属于root用户,导致没有权限读写。
  • nginx+php,对于低版本的php -fpm www权限工作进程, /proc/self/目录属于www用户可以读写。经不完全测试,php<5.6 版本是可以使用GOT表劫持。

下面简单描述一下劫持GOT表的步骤,以system替换open函数为例:

  1. 读取/proc/self/maps 找到php与glibc在内存中的基地址
  2. 解析/proc/self/exe 找到php文件中open@plt的偏移,解析libc.so找到system函数的偏移地址
  3. 解析 /proc/self/mem 定位 open@plt 对应open@got的地址,以及libc.so中system 函数的内存地址
  4. 将system 函数的内存地址 写入到 open@got里
  5. 主动调用fopen("/bin/whoami") ,即相当于调用 system("/bin/whoami")

不在文中放exp源码了,具体源码在前文提到的git仓库中,大家可以根据实际环境进行调试修改,并不通用。

四、总结

单纯就RASP本身而言,RASP的优点在于能嵌入在应用程序内部,应用代码无感知,更了解应用程序上下文,方便定位漏洞信息,更少的误报和漏报,对各种绕过手法具有更强的防护能力;但缺点在于PHP RASP会对服务器的性能造成影响,推动部署落地相对困难。不过随着DevSecOps理念的推广,未来借助于云、容器等成熟的大规模基础设施和技术,通过优化完全有可能提供更优雅更易于接受和使用的部署方案,能够带来更快更精准更细致入微的安全检查及防护能力。关于DevSecOps理念与思考,大家可以参考我们团队之前的文章:?“安全需要每个工程师的参与”-DevSecOps理念及思考。

虽然依然有一些对抗手段,但是RASP 在Web安全领域依然是现阶段强有力的存在。但是安全没有银弹,不存在一劳永逸的系统和办法,在漏洞/入侵检测上我们需要扫描器,WAF,IDS,EDR等系统的配合共建防御体系,纵深防御才是长久之道,并且需要持续研究在对抗中不断提升和发展。

参考文献:

https://www.cnblogs.com/zw1sh/p/12632126.html
https://zhuanlan.zhihu.com/p/75114351?from_voters_page=true
https://www.cnblogs.com/tr1ple/p/11213732.html
https://www.freebuf.com/articles/others-articles/232329.html
https://x-c3ll.github.io/posts/UAF-PHP-disable_functions/

相关文章

攻壳机动队和黑客帝国谁厉害(攻壳机动队与黑客帝国)

攻壳机动队和黑客帝国谁厉害(攻壳机动队与黑客帝国)

本文导读目录: 1、攻壳机动队和黑客帝国,谁抄袭谁的? 2、提个问题,黑客帝国和攻壳机动队有什么关系 3、攻壳机动队好看吗? 4、攻壳机动队 5、攻壳机动队动漫剧场版哪部好看? 6...

房产知识:地下室有房产证吗究竟谁能解释下

相信现在有很多的朋友们对于地下室有房产证吗究竟谁能解释下都想要了解吧,那么今天小编就来给大家针对地下室有房产证吗究竟谁能解释下进行一个介绍吧,希望小编介绍的内容能够为大家起到帮助哦 建筑层高低于2.2...

新疆此轮疫情首双龙suv次“双零新增”

  (抗击新冠肺炎)新疆此轮疫情首次“双零新增”   中新社乌鲁木齐11月9日电 (记者 孙亭文 赵雅敏)新疆维吾尔自治区党委宣传部副部长、新闻发言人王武龙9日晚间通报称,8日0时至8日24时,新疆...

上海寄宿小学(上海全托寄宿小学学校)

上海寄宿小学(上海全托寄宿小学学校) 在择校过程中,对口的可以就近入学,选择民办距离较远的就得在校车、家长接送、住宿三者中选择其一了。特别是那种跨区上学的娃,很多家长也得长途“上学”。不过,能在全市...

找黑客改教务系统成绩-黑客一般怎么联系他们(黑客一般怎么找)

找黑客改教务系统成绩-黑客一般怎么联系他们(黑客一般怎么找)

找黑客改教务系统成绩相关问题 都市最强黑客楚浩相关问题 黑客是怎么改微信密码的啊 专业黑客找人(黑客是什么专业)...

专业黑客先做事后付款3(先办事后付款的黑客)_黑客

专业黑客先做事后付款3(先办事后付款的黑客),比年来,许多人都碰到了被黑的疑问。固然我不晓得这些身边的人被黑的缘故是甚么,但我能够细致地报告你,互联网上的许多文娱领域都是由几片面或一群人租用、建立和假...