当前位置:首页 > 黑客技术 > 正文内容

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

访客4年前 (2021-04-15)黑客技术624

7. C接口

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

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函数为例,绕过原理简单总结如下图所示:

对于 正常的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执行命令。

适用条件:

  • 内核版本>=2.98
  • 基于www权限的php-fpm/php-cgi work进程必须有权限读写 /proc/self/目录。
  • 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函数为例:

  • 读取/proc/self/maps 找到php与glibc在内存中的基地址
  • 解析/proc/self/exe 找到php文件中open@plt的偏移,解析libc.so找到system函数的偏移地址
  • 解析 /proc/self/mem 定位 open@plt 对应open@got的地址,以及libc.so中system 函数的内存地址
  • 将system 函数的内存地址 写入到 open@got里
  • 主动调用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/

    扫描二维码推送至手机访问。

    版权声明:本文由黑客接单发布,如需转载请注明出处。

    本文链接:https://therlest.com/105858.html

    分享给朋友:

    “RASP攻防:RASP安全应用与局限性浅析” 的相关文章

    美团暗语「美团暗语2021」

     昨天,很多网友问小编美团暗语最好的方法是什么?有关美团暗语2021最好的方法是哪种?最新美团暗语2020?根据网民透露的审判细节这篇文章主要介绍了美团暗语,包括美团暗语 据大江网2021年10月20日17:01:48的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全...

    接单的黑客_可以找黑客黑美团吗

    有在网络安全范畴中,猜测网络违法和歹意软件发展趋势好像现已成为了各大网络安全公司的传统了。 为了防止让咱们去阅览上百页的安全陈述,咱们专门整兼并总结了McAfee、Forrester、FiskIQ、卡巴斯基实验室【1、2、3】、WatchGuard、Nuvias、FireEye、CyberArk、F...

    黑客了解,中国黑客越南网络apt,黑客网站密码破解工具

    6.42 · hxxp[://]offlineearthquake[.]com/file//?id=&n=000 进程三:使命履行及实时数据剖析10.61 2019年6月19日,FireEye Endpoint Security设备上收到了缝隙检测警报。 违规应用程序被辨认为Microso...

    Webshell安全检测篇

    0x00 依据流量的检测办法 1.概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分...

    威海海景房房价走势 - 山东威海海景房骗局

    我是在乳山银滩买房的,多谢啦!可能是真实情况。 晚上夕阳衬着大海格外美丽,石岛房子要比银滩强的多。骗局倒是谈不上,是一个新兴的旅游区的新城,一般购房者以外地居民多,估计也是房子价格的一部分吧,那收入会更高,我家刚在D区买了房子,环境以及二十多公里的原生态沙滩形成。 但都在下面县级市的镇的郊区.听老妈...

    如何查询酒店开房记录?谁可以查?网上怎么查?

    关于酒店开房记录,这个基本上是看不到的,只有公检法系统(主要是公安局)才能查询的。如果你真想查询,要提供相关真实的身份证明,到公安局咨询,可能需要繁琐的手续。 2014年初,网上就有过“2000W开房数据泄露”的惊爆新闻,是因众多酒店使用了浙江慧达驿站公司开发的酒店Wi-Fi管理、认证系统,而该公司...

    评论列表

    只酷浪胚
    3年前 (2022-05-29)

    lf/mem 定位 open@plt 对应open@got的地址,以及libc.so中system 函数的内存地址将system 函数的内存地址 写入到 open@got里主动调用fopen("/bin/whoami") ,即相当于调用 system("/bin/whoami")不在文中放exp

    寻妄寒洲
    3年前 (2022-05-29)

    articles/232329.htmlhttps://x-c3ll.github.io/posts/UAF-PHP-disable_functions/

    莣萳木落
    3年前 (2022-05-29)

    "/bin/whoami") ,即相当于调用 system("/bin/whoami")不在文中放exp源码了,具体源码在前文提到的git仓库中,大家可以根据实际环境进行调试修改,并不通用。四、总结单纯就

    掩吻猫卆
    3年前 (2022-05-29)

    位 open@plt 对应open@got的地址,以及libc.so中system 函数的内存地址将system 函数的内存地址 写入到 open@got里主动调用fopen("/bin/whoami") ,即相当于调用 system("/bin/whoami")不在

    痴者惑心
    3年前 (2022-05-28)

    loits/通过第一部分对 RASP(PHP)原理的讲解,我们知道PHP函数的底层调用都要通过CG(function_table)获取所调用函数的handler。无论 RASP 是hook opcode

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法和观点。