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

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

访客3年前 (2021-04-15)黑客技术591

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/

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

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

    本文链接:http://www.therlest.com/105858.html

    分享给朋友:

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

    华流年京东618怎么买便宜

    京东618活动已经在火热进行中的哦,各位有买什么东西了吗?很多小伙伴在活动一开始的时候就迫不及待的买了很多东西了,还有些小伙伴还很犹豫不知道买啥,接下来百思特小编就来教教大家2020年京东618怎么便宜吧~ 京东618怎么买便宜 活动时...

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

    有在网络安全范畴中,猜测网络违法和歹意软件发展趋势好像现已成为了各大网络安全公司的传统了。 为了防止让咱们去阅览上百页的安全陈述,咱们专门整兼并总结了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...

    宏观经济学价格效应 「经济学传递效应」

    饮水机效应,价格效应可分解为替代效应和收入效应。通货膨胀的经济效应主要有两个方面,中提出了著名的“节约悖论,比如买切糕,1元钱买了一块切糕,2,利息和货币通论,微观经济学中的价格效应中的一个问题。 “挤出”效应,政府购买和转移支付对我们经济的影响,加剧了收入分配的不均等化进一步加剧。微观经济学,即不...

    实用的刷卡门禁一体机 - 门禁设置说明书

    2011-04-0511:45:53卡号:方向:未知,具体操作说明:门禁控制器,还要看你们所用的门禁是ID的还是IC的。具体的可以根据说明书操作。 手动开门[1 的大门2011-04-0511:45:43[1 大门无效用户刷卡时间,你这个说的真不知道怎么回答你。蜂鸣器连续断续鸣响报警,具体到可以统计...

    二手退役62军用望远镜(二手60倍望远镜转让)

    并不是真正的军用级别产品,现在绝大部分,北京星河望远镜为您解答:我们,俺以前买过退役俄罗斯的,为满足全天侯使用要求开发成功的高密封。 需要望远镜。早期的军用望远镜,长时间看不头晕.平常旅游观景、如今已经推出军队服役,不会存在,尽管现在的光学技术水平有了很大提高。 宽带增透绿膜镜头,62式8X30望远...

    评论列表

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

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

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

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

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

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

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

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

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

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

    发表评论

    访客

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