SKIN=javax.swing.plaf.nimbus.NimbusLookAndFeel设置皮肤为nimbusSPL=->| 表示截取数据的开始符号SPR=|
除了修改以上参数过WAF外,程序还额外提供了一种Customize过WAF的模式。
Customize模式原本是用于支持一些程序默认不支持的脚本,比如CFM、ASMX、ASHX、PY等等,只要用户自写的脚本能正确与菜刀进行交互即可。
换一个思考方式,如果我们自写一个PHP脚本实现了列文件以及目录的功能,它能够正确的与C刀进行交互,这个时候如果我们选择PHP(Eval)的连接方式就会连接失败。
应该选择Customize模式进行连接。有人说为什么一句话就可以连接,你偏偏还要写这么多代码用Customize模式连接?如果一个很厉害的WAF检测eval,assert等关键词
,你的一句话实在是饶不过,这个时候你可以不用一句话,就在PHP脚本里用正常代码实现列文件以及目录,然后用Customize模式连接就达到了过WAF的目的。
Customize(自定义)模式跟其他模式一样,每一个步骤也都写入到配置文件里面,用户同样可以参数名称以及参数内容。
比如你自写了用Customize模式连接的Customize.php服务端。
显示主页功能提交的参数应该是:密码=1&action=index以及密码=1&action=readdict。
如果C刀普及以后WAF厂商肯定会把readdict列入黑名单,这个时候你就可以修改readdict的名称为其他名称,同样可以修改action的名称,也可以修改1为其他字符 CUS_MAKE=1CUS_INDEX=indexCUS_READDICT=readdictCUS_READFILE=readfileCUS_SAVEFILE=savefileCUS_DELETE=deleteCUS_RENAME=renameCUS_NEWDICT=newdictCUS_UPLOAD=uploadCUS_DOWNLOAD=downloadCUS_SHELL=shell[此处省略1W字]
0×03 自定义模式过WAF原理
如果只是使用一句话,很多厂商都查杀了eval等敏感关键词,也查杀了传递过程中数据包中的敏感关键词。我们只需要正常的实现列目录、读文件等功能并且没有包含eval等敏感关键词就可以绕过WAF, 即服务端不使用一句话,而是把功能代码都放在服务端来执行,客户端提交正常的数据包。
0×04 过狗准备
有的朋友说还要自己写列目录、读文件等等这些功能啊,那肯定没戏了。其实不需要自己写,只需要复制粘贴修改即可。
你要有点编程基础(不用担心只要会 if 语句就行),然后按照我给的框架添加就行。以 PHP 为例:
框架如下:
$pwd= 'Cknife'; // 密码
if($_POST [$pwd] == 1) {
$act = $_POST ['action']; // action 名称
echo ("->|"); // 前分隔符
if ($act == 'index') { // 显示主页功能
} else if ($act == 'readdict') { // 读取目录功能
} else if ($act == …) // 你想要实现的功能,可以从 Config.ini 里面解密出来使用
{
}
echo ("|
}
?>
首先打开咋们可爱的Config.ini文件,找到PHP_INDEX
它是C刀文件管理显示主页的功能,我们先把它解密,先url解密再base64解密
把解密结果放到eclipse里面,自动整理下(右键Source->Format)
去掉 echo (“->|”) 前面的所有代码,去掉 echo (“|
然后就是找到PHP_READDICT解密, 这里要 注意 解密出来 z1 参数前面有 base64_decode 函数,我们的 自定义模式下传递方式是原文传递 ,不会自动 base64 加密, 所以要去掉 base64_decode 函数
还是老规矩,去掉 echo (“->|”) 前面的所有代码,去掉 echo (“|
最后按照前面的方式再加入读取文件的功能,即PHP_READFILE
把代码保存为test.php,然后选用自定义模式连接
测试发现并没有拦截
我们尝试下一句话连接,发现会被拦截
本文原创发布php中文网,转载请注明出处,感谢您的尊重!