腾讯云RASP挑战赛绕过思路挖掘

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

RASP(运行时应用自我保护)是一种嵌入应用程序的安全技术,能够实时监测并阻止攻击。与传统WAF相比,RASP的检测更为精准且误报率低。文章分析了百度的OpenRASP,探讨其工作原理及绕过方法,包括请求线程识别和hook点的上下文分析,最终通过特定类和方法组合成功绕过RASP检测。

🎯

关键要点

  • RASP是一种嵌入应用程序的安全技术,能够实时监测并阻止攻击。
  • 与传统WAF相比,RASP的检测更为精准且误报率低。
  • RASP通过Instrumentation API在Java中进行类的插桩,便于部署。
  • OpenRASP是国内广泛使用的开源RASP产品,本文分析其工作原理。
  • RASP的请求处理流程包括请求hook点、ProcessImpl创建和ProcessBuilderHook点。
  • RASP通过检测堆栈信息和方法参数来判断是否为恶意命令执行。
  • 绕过RASP的关键在于混淆目标代码执行的上下文,使恶意操作在未标记为请求线程的线程中执行。
  • 可以通过创建新线程执行恶意操作来绕过RASP的检测。
  • hook点组合绕过涉及到不在RASP拦截hook类中的方法和调用栈中没有已知命令执行来源。
  • 在Springboot应用中,利用CVE-2022-21724漏洞可以执行任意代码。
  • 上传文件并让系统解析和执行代码是相对安全的绕过方法。
  • RASP对直接的系统命令执行非常敏感,需考虑其他方式调用系统命令。
  • 通过切换线程清除栈信息的方法可以帮助绕过RASP的检测。

延伸问答

RASP是什么,它的主要功能是什么?

RASP(运行时应用自我保护)是一种嵌入应用程序的安全技术,能够实时监测并阻止攻击,提供主动、动态的保护。

RASP与传统WAF相比有什么优势?

RASP的检测更为精准,误报率低,并且具有更强的0Day发现能力,相比传统WAF更有效。

如何绕过RASP的检测?

可以通过混淆目标代码执行的上下文,使恶意操作在未标记为请求线程的线程中执行,或者创建新线程执行恶意操作来绕过RASP的检测。

OpenRASP的工作原理是什么?

OpenRASP通过请求hook点标记请求线程,分析堆栈信息和方法参数来判断是否为恶意命令执行,并根据检测结果决定是否拦截请求。

在Springboot应用中,如何利用CVE-2022-21724漏洞?

可以通过ClassPathXmlApplicationContext进行xml加载,从而执行任意代码,构造相应的payload。

RASP对系统命令执行的敏感性如何?

RASP对直接的系统命令执行非常敏感,尤其是通过反射调用的命令执行,因此需要考虑其他方式调用系统命令。

➡️

继续阅读