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

访客4年前黑客文章805

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/

相关文章

邢台如何利用手机定位找人

近日,许光汉与新晋金曲奖歌后魏如萱合作的最新单曲《什么跟什么有什么关系》已经上线。歌曲由金曲奖最佳作词人李焯雄作词,魏如萱作曲,陈建骐担当制作,魏如萱和许光汉共同演唱。单曲收...

马克龙重申欧洲需要恢复与俄罗斯战略对话

  新华社里加9月30日电 正在拉脱维亚访问的法国总统马克龙30日表示,俄罗斯是欧洲大国,欧洲需要恢复与俄罗斯的战略对话。   马克龙当天在里加与拉脱维亚总理卡林斯举行会谈。马克龙在会谈后举行的记者...

我已婚可婚姻不幸福,因为老公天天沉迷赌博不顾家

2、漏洞描述 Windows XP SP3 x86近期,随着CVE-2019-0708漏洞的公布,大多数安全社区都将该漏洞作为最优先处理的漏洞之一。 提到漏洞修复,很难不联想到此前WannaCry和N...

2020免费查开宾馆记录(51免费查开放房)

  完全免费查询酒店餐厅查询记录_查询住宿酒店查询记录手机软件   近些年,大家的交通出行頻率明显提升。度假旅游、工作中或探亲访友的总数是之前的好几倍。可是,这也是由于我国整体实力的发展趋势是有效的...

贝因美爱加3段奶粉味道好吗 贝因美爱加3段使用评测

贝因美爱加3段奶粉有一种浅浅的奶香味,并且是较为非常容易冲调的婴儿奶粉,和母乳味道有一定的区别,那麼,贝因美爱急啊3段奶粉如何呢?接下去我就产生贝因美3段奶粉应用测评。 商品总体 婴儿奶粉包裝...

苏轼江城子密州出猎(苏轼最有名的诗词)

  公米1074年,39岁的苏东坡,正值壮年,在杭州任职期满,自请调至密州。密州,即山东诸城。此地自古是一个名不见经传的小城市,直到苏轼的到来。伴随着苏东坡那些脍炙人口的诗词,密州从而名扬天下。其中《...