SpringBoot-Scan
SpringBoot-Scan copied to clipboard
CVE_2022_22947漏报
师傅的漏洞检测逻辑是访问注册的hacktest路由,读取id命令的回显,但是这个只使用于linux系统,看师傅内置了payload2用于执行whoami,但是并没有针对windows漏洞检测逻辑,如果Spring Cloud Gateway部署在windows上,漏洞会误报。 而且师傅的逻辑是只要读取到id的回显时,才会删除注册的hacktest路由 if ('uid=' in str(re3.text)) and ('gid=' in str(re3.text)) and ('groups=' in str(re3.text)): cprint(f'[+] [CVE-2022-22947] {url}', "red") f2 = open("vulout.txt", "a") f2.write("[+] [CVE-2022-22947] " + url + '\n') f2.close() re4 = requests.delete(url=url + "actuator/gateway/routes/hacktest", headers=headers2, timeout=10 ,verify=False, proxies=proxies) re5 = requests.post(url=url + "actuator/gateway/refresh", headers=headers2, timeout=10 ,verify=False, proxies=proxies) 但是如果是windows平台,由于执行的是id命令,java.lang.ProcessBuilder.start会抛出异常,也就走不到删除路由的逻辑了,导致注册的路由持久性的留着了服务器上面,渗透结束后,需要手工清除,可以调整一下逻辑。官方补丁中是用SimpleEvaluationContext 替换 StandardEvaluationContext,限制了SPEL表达式的执行,并没有限制路由注册。
还有一个问题就是,SPEL表达式执行发生在/refresh刷新路由缓存逻辑的时候,后续所有正常的/refresh操作也会抛出异常,影响服务器正常功能以及其它扫描器对CVE_2022_22947漏洞的探测
已经收到师傅的反馈,感谢师傅的建议🤩 对于漏洞利用和Poc扫描模块,已经收到了诸多反馈,目前相关代码还需完善,已经放入下一个版本更新计划了,同时也欢迎师傅提交PR😀
新版windows上漏报依旧存在的
因为近期相关工作和事务都比较繁忙,在攻防演练期间,才有时间来详细查看问题 师傅的提议和建议我都收到了,我已经更新了代码和realease,将Linux和Windows的Payload都进行了发包和识别,同时对于路由的清除流程做了优化🥰 有其他问题,欢迎继续提交Issuse,感谢师傅的支持!