分享一下WebShell渗透小技巧

admin 2024年10月13日18:46:26评论8 views字数 2141阅读7分8秒阅读模式

前言

哥斯拉WebShell管理工具里的ShellCodeLoader模块中的shellcode加载以及pe加载这两个功能还是挺实用的,但好像很多人都没用过或者注意到,也有一定免杀效果,比如可以直接反弹cs,msf上线,直接加载fscan开炮!然后最近也没啥时间还是忙里偷闲,就简单分析一下然后理解一下这个功能的使用吧,这里的shell是java的,所以分析的时候就跟着java这走了,文最后有详细的用法教程。

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

代码分析

Shellcode加载
loadButtonClick对应模块中的Load按钮,代码中当if(this.load)为true会将loadState的状态设置为true,runButtonClick就是对应Run按钮了,Run的时候就会判断loadState状态,但是可以看到Run按钮对应的代码实现也调用了Load方法,所以其实可以不Load直接Run就完了,然后就是获取你输入的shellcode并通过HexToByte转换,代入runShellcode,所以输入shellcode的时候需要把shellcode转成Hex,接下来就主要看看Load函数与runShellcode函数代码吧。

分享一下WebShell渗透小技巧

Load函数:

这里load()方法调用了this.loadJar(jar),加载了GodzillaJna.jar。这样做是为了让ShellcodeLoader.classs 能够调用 jna.sun.jna.platform.godzilla.AsmcodeLoad 类中的方法,因为该类位于 GodzillaJna.jar 这个 JAR 包中,然后,load() 方法将加载ShellcodeLoader.classs的内容,并通过this.payload.include("plugin.ShellcodeLoader", data) 方法,将 ShellcodeLoader.classs 的内容传递给目标服务器。

分享一下WebShell渗透小技巧

runShellcode函数:

runShellcode通过调用evalFunc方法与服务器进行通信,并将参数传递给服务器。根据是否传入excuteFile参数来决定执行不同的任务。最终,runShellcode方法获取服务器返回的结果,实现了向服务器发送请求调用ShellcodeLoader run方法获取响应的功能。

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

ShellcodeLoader.classs run,获取传入的参数,判断有没有传excuteFile来决定走哪个分支最后调用loadAsBin开炮。

分享一下WebShell渗透小技巧

jna.sun.jna.platform.godzilla.AsmcodeLoad,可以看到是通过CreateRemoteThread运行的。

分享一下WebShell渗透小技巧

Pe加载

loadButtonClick对应模块中的LoadPe按钮了,重点关注runPe的第一个参数,第二个参数,command就是对应我们要运行程序的参数,peContent对应就是我们程序的字节数组,然后默认是注入C:\Windows\System32\rundll32.exe的。

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

runPe 方法的调用了 PeLoader.peToShellcode 来转换 PE 文件为 Shellcode,并且在转换成功后调用 runShellcode 方法来运行该 Shellcode。

分享一下WebShell渗透小技巧

peToShellcode 方法将 PE 文件转换为 Shellcode,pe相关处理调用了pecoff4j这个库,首先解析传入的 PE 文件内容,获取其结构信息,然后根据结构信息构建一个新的字节数组 _peBuffer,用于存放转换后的 Shellcode。然后,将 PE 文件的节数据填充到 _peBuffer 中,根据节的 RVA 进行填充,同时确保 Shellcode 包含正确的 PE 头信息。在转换过程中,还会检查 PE 文件的数据目录中是否包含必要的信息,如基址重定位表和 .NET COM 描述符,并记录警告信息。最后,根据 PE 文件是 32 位还是 64 位,选择对应的 stub 文件,将其内容插入到新的字节数组 newExeBuffer 中,构建 Shellcode 的跳转代码并插入到 newExeBuffer 的开头。最终返回经过转换后的 Shellcode,即可以在目标服务器上执行的 PE 文件内容,具体可以阅读donut与pe2shellcode项目。

分享一下WebShell渗透小技巧

然后剩下的runshellcode就跟上面的一样了。

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

用法

把x去掉,填好注入进程以及shellcode Run就行了。

分享一下WebShell渗透小技巧

分享一下WebShell渗透小技巧

填好参数,LoadPe选好加载的PE文件就行了。

分享一下WebShell渗透小技巧

总结

分析的很粗,忙里偷闲,想详细了解的可以去看看源码以及相关的一些项目,市面上已经有很多优秀的项目了,可以多看看多学习,在人家的基础上搞点好玩的有意思的。

资源下载

1、公众号后台回复:jboss,获取jboss综合利用工具网盘下载链接。
2、公众号后台回复:
ruoyi,获取ruoyi综合利用工具网盘下载链接。
3、公众号后台回复:
postgresql,获取postgresql综合利用工具网盘下载链接
4、公众号后台回复:
ecologySession,获取ecology任意用户登录小工具网盘下载链接
5、公众号回复:资料获取代码审计,红队,物联网安全,漏洞挖掘相关整合资料。

原文始发于微信公众号(小黑说安全):分享一下WebShell渗透小技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日18:46:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   分享一下WebShell渗透小技巧https://cn-sec.com/archives/1895126.html

发表评论

匿名网友 填写信息