腾讯云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对直接的系统命令执行非常敏感,尤其是通过反射调用的命令执行,因此需要考虑其他方式调用系统命令。
➡️