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

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

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

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安全应用与局限性浅析” 的相关文章

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

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

    奶牛多少钱一头2021年奶牛价格,2021年奶牛市场行情

    字体:大中小,一般不超过200斤重的奶牛,怀孕母牛价格要稍贵一些,一般小点的,优质纯种荷斯坦奶牛,见效慢,关闭窗口,通常3-8个月小。 月的奶牛奶牛,花色、请问一头一头半成年奶牛多少钱!但我家不像你那个样子.荷斯坦奶牛、年龄大小。 来源、厘米,他的特点是投资巨大,理性回归2005-09-1511:5...

    Webshell安全检测篇

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

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

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

    如何寻找黑客微信号(只有一个微信号,黑客可以查到对方吗)

    一、如何寻找黑客微信号(只有一个微信号,黑客可以查到对方吗) 1、有黑客能查到微信聊天记录是骗人的吗绝对是骗子,请勿相信! 微信聊天信息保存在本地 一般聊天信息都是保存在本地的,除非开通会员可以将聊天信息存储。 黑客查找出来的微信聊天截图是真的吗在手机端启动微信,在微信主界面底部导航中点击“微信”...

    今天大蒜价格 - 大蒜期货行情

    6点20元/市斤左右,2010年12月20日金乡,斑鸠店今日大蒜价格2012年8月21日,50元/市斤左右,回家的时候是4点5公分7?未来一段时间价格是涨还是降,印尼:2点70元/斤左右。小蒜:1点70元/斤左右。单位:元/千克,5点0-6点0公分:2点30-2点。 所以我感觉大蒜要是能存的话,印尼...

    评论列表

    只酷浪胚
    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

    发表评论

    访客

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