jadx反编译源码搜索encrypt函数,
这里对genEAS函数的返回结果进行了base64编码,传入的参数src是encrypt接收的字符串,另一个也是字符串
查看一下genEAS函数
去掉空值检查和异常处理其实就是用AES算法对输入字符串数据基于给定密钥进行加密并返回加密后的字节数组
可以跟最基本的javax.crypto包提供的 AES 加密功能实现代码
可以看到genAES函数中填充方式为C8479a.f30298b,键入进去看一下,可以看到这个值为"AES/CBC/PKCS5Padding"
这里对genEAS函数的返回结果进行了base64编码,传入的参数src是encrypt接收的字符串,另一个也是字符串
查看一下genEAS函数
去掉空值检查和异常处理其实就是用AES算法对输入字符串数据基于给定密钥进行加密并返回加密后的字节数组
可以跟最基本的javax.crypto包提供的 AES 加密功能实现代码
可以看到genAES函数中填充方式为C8479a.f30298b,键入进去看一下,可以看到这个值为"AES/CBC/PKCS5Padding"
远程
还是先创建文件映射对象 然后映射到内存 写入shellcode
额外的一步是通过MapViewOfFile2 将本地文件视图映射到远程进程
MapViewOfFile2 与 MapViewOfFile 共享文件映射句柄 所以任何对本地映射视图中的有效载荷的任何修改都会反映在远程进程的远程映射视图中的文件中
注意进程句柄必须有PROCESS_VM_OPERATION 权限 所以这里创建完进程后通过OpenProcess指定PROCESS_VM_OPERATION再拿进程句柄 pi.hProcess不行
方便起见这里用CreateRemoteThread 如果这里用EarlyBird的话就是MapViewOfFile联动EarlyBird
还是先创建文件映射对象 然后映射到内存 写入shellcode
额外的一步是通过MapViewOfFile2 将本地文件视图映射到远程进程
MapViewOfFile2 与 MapViewOfFile 共享文件映射句柄 所以任何对本地映射视图中的有效载荷的任何修改都会反映在远程进程的远程映射视图中的文件中
注意进程句柄必须有PROCESS_VM_OPERATION 权限 所以这里创建完进程后通过OpenProcess指定PROCESS_VM_OPERATION再拿进程句柄 pi.hProcess不行
方便起见这里用CreateRemoteThread 如果这里用EarlyBird的话就是MapViewOfFile联动EarlyBird
通过篡改函数 导致函数执行其它逻辑
首先是通过loadlibrary加载dll到内存 然后通过GetProcAddress检索地址
这里篡改的函数需要是非常用的 否则可能会出现问题 这里选择bthprops.cpl中的BluetoothFindDeviceClose
首先是获取地址
LPVOID sacrificedAddr = GetProcAddress(LoadLibrary(L"bthprops.cpl"), "BluetoothFindDeviceClose");
修改内存权限为RWX 写入shellcode
首先是通过loadlibrary加载dll到内存 然后通过GetProcAddress检索地址
这里篡改的函数需要是非常用的 否则可能会出现问题 这里选择bthprops.cpl中的BluetoothFindDeviceClose
首先是获取地址
LPVOID sacrificedAddr = GetProcAddress(LoadLibrary(L"bthprops.cpl"), "BluetoothFindDeviceClose");
修改内存权限为RWX 写入shellcode
初步审计与漏洞检测
首先,我们通过get_rce_vulnerability_feedback函数对代码进行初步审计。如果LLM分析到存在潜在的RCE漏洞或不安全的命令执行调用,反馈将被用来生成修复建议。
自适应反馈机制
在初次审计后,adaptive_feedback_loop函数会启动自适应反馈机制。如果漏洞未能修复,LLM根据修复建议对代码进行修改,并再次进行审计。这个过程会持续进行多次,直到漏洞被彻底修复,或者达到最大尝试次数。
修复代码并重新审计
fix_code_and_reaudit函数接收LLM给出的修复建议,修改代码后再次审计,确保修复有效。如果反馈仍然指示有漏洞存在,过程会继续。
提取修复建议
在每一轮反馈中,extract_fix_suggestions函数提取LLM给出的修复步骤,帮助开发者理解如何修复漏洞,并确保后续代码不会再有类似问题。
首先,我们通过get_rce_vulnerability_feedback函数对代码进行初步审计。如果LLM分析到存在潜在的RCE漏洞或不安全的命令执行调用,反馈将被用来生成修复建议。
自适应反馈机制
在初次审计后,adaptive_feedback_loop函数会启动自适应反馈机制。如果漏洞未能修复,LLM根据修复建议对代码进行修改,并再次进行审计。这个过程会持续进行多次,直到漏洞被彻底修复,或者达到最大尝试次数。
修复代码并重新审计
fix_code_and_reaudit函数接收LLM给出的修复建议,修改代码后再次审计,确保修复有效。如果反馈仍然指示有漏洞存在,过程会继续。
提取修复建议
在每一轮反馈中,extract_fix_suggestions函数提取LLM给出的修复步骤,帮助开发者理解如何修复漏洞,并确保后续代码不会再有类似问题。
java 凯撒加密
凯撒加密是一种古老的加密技术,它属于替换加密的一种,得名于罗马的尤利乌斯·凯撒。其基本原理是通过将字母表中的字母按照固定的位移量进行替换,从而达到加密的目的。
凯撒加密 就是一个字符串ascii进行偏移 。
代码定义了一个名为 ByteCodeEvil 的类,它的主要功能是执行一个系统命令并将其输出捕获到一个字符串中。接下来,我将详细解释每个部分的功能和工作原理:
类和构造函数
凯撒加密是一种古老的加密技术,它属于替换加密的一种,得名于罗马的尤利乌斯·凯撒。其基本原理是通过将字母表中的字母按照固定的位移量进行替换,从而达到加密的目的。
凯撒加密 就是一个字符串ascii进行偏移 。
代码定义了一个名为 ByteCodeEvil 的类,它的主要功能是执行一个系统命令并将其输出捕获到一个字符串中。接下来,我将详细解释每个部分的功能和工作原理:
类和构造函数
代码导入了 Java 的 URLClassLoader、URL 和 Method 类,这些类分别用于动态加载类、处理 URL 和反射调用方法。
undefined 设置内容类型:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
创建 URLClassLoader 实例,通过指定 tools.jar 文件的路径来加载类 sun.tools.attach.WindowsVirtualMachine,这是 Java 的工具包之一,通常用于操作 Java 虚拟机。
undefined 遍历方法并查找 enqueue:暂停当前线程 4000 毫秒(4 秒),可能是为了给操作一些时间完成。
undefined 设置内容类型:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
创建 URLClassLoader 实例,通过指定 tools.jar 文件的路径来加载类 sun.tools.attach.WindowsVirtualMachine,这是 Java 的工具包之一,通常用于操作 Java 虚拟机。
undefined 遍历方法并查找 enqueue:暂停当前线程 4000 毫秒(4 秒),可能是为了给操作一些时间完成。
WebLogic coherence UniversalExtractor 反序列化 (CVE-2020-14645) 漏洞分析
该漏洞是针对于CVE-2020-2883的补丁绕过,CVE-2020-2883补丁将MvelExtractor和ReflectionExtractor列入黑名单,因此需要另外寻找一个存在extract且方法内存在恶意操作的类,这里用到的类为com.tangosol.util.extractor.UniversalExtractor,存在于Coherence组件。
其本质上,都是通过ReflectionExtractor调用任意方法,从而实现调用Runtime对象的exec方法执行任意命令,但补丁现在已经将ReflectionExtractor列入黑名单,那么只能使用UniversalExtractor重新构造一条利用链,这里使用poc2的入口即CommonsCollections4链的入口进行构造。
该漏洞是针对于CVE-2020-2883的补丁绕过,CVE-2020-2883补丁将MvelExtractor和ReflectionExtractor列入黑名单,因此需要另外寻找一个存在extract且方法内存在恶意操作的类,这里用到的类为com.tangosol.util.extractor.UniversalExtractor,存在于Coherence组件。
其本质上,都是通过ReflectionExtractor调用任意方法,从而实现调用Runtime对象的exec方法执行任意命令,但补丁现在已经将ReflectionExtractor列入黑名单,那么只能使用UniversalExtractor重新构造一条利用链,这里使用poc2的入口即CommonsCollections4链的入口进行构造。
禅道11.6注入分析
(需要用户权限)
第一眼看到这种传参方式,我心里是懵逼的,利用到的文件都看不出来,所以先研究一下他的URL是怎么写的。
PS:使用禅道前要将本地的apache服务和mysql服务关闭,否则会发生冲突
PS:由于环境限制,没办法搭建调试环境,所以文章中若是有错误内容还请师傅们务必斧正!!!∑(゚Д゚ノ)ノ
URL地址格式分析
应用名为:pms,根路径为index.php路径的上级路径,应用类名为router。
这里最后返回了一个实例化的类,将app名字与根路径作为参数传入。由于这里创建了一个新对象,先去router类中看一下是否有__construct()函数,没有找到就去他的父类baseRouter里找,果然在baseRouter中发现了__construct()函数
(需要用户权限)
第一眼看到这种传参方式,我心里是懵逼的,利用到的文件都看不出来,所以先研究一下他的URL是怎么写的。
PS:使用禅道前要将本地的apache服务和mysql服务关闭,否则会发生冲突
PS:由于环境限制,没办法搭建调试环境,所以文章中若是有错误内容还请师傅们务必斧正!!!∑(゚Д゚ノ)ノ
URL地址格式分析
应用名为:pms,根路径为index.php路径的上级路径,应用类名为router。
这里最后返回了一个实例化的类,将app名字与根路径作为参数传入。由于这里创建了一个新对象,先去router类中看一下是否有__construct()函数,没有找到就去他的父类baseRouter里找,果然在baseRouter中发现了__construct()函数