网站地图    收藏   

主页 > 后端 > 网站安全 >

防止Webshell密码被暴力破解 - 网站安全 - 自学ph

来源:自学PHP网    时间:2015-04-17 10:15 作者: 阅读:

[导读] 虽然早就知道有这种工具,但是一试之后才发现确实太过凶残。我想了一下,对于这种蛮不讲理的方式貌似是没有完美的解决办法。这东西就像DDOS一样,你可以轻视视,但不能无视。不...

虽然早就知道有这种工具,但是一试之后才发现确实太过凶残。
 
 
我想了一下,对于这种蛮不讲理的方式貌似是没有完美的解决办法。这东西就像DDOS一样,你可以轻视视,但不能无视。
不过针对现有的较为流行的Webshelll密码破解工具,可以做一些简单的措施来降低被爆菊的可能性。
 
第一个自然是增强密码强度了。
 
考虑到现在的密码破解主要是通过加载字典进行穷举,所以把密码改的又长又臭是非常简单而有效的安全措施。

第二就是增加一个判断机制。
 
通常攻击者要进行暴破时会先观察一下Webshell,比如密码的提交方式(POST还是GET)、密码错误的提示。
然后根据这些信息来配置攻击参数。当然现在大部分的webshell密码提交是post的。
 
我们可以再加一个GET的验证,这样破解工具就失效了。(因为他并不知道你对GET参数是怎么验证的)
假如之前的密码验证是这么写的的话
 

<?php
// … some code
$pass= “我是密码”;

if($_POST['pass']==$pass)
{
echo”登录成功!”;
// … some code
}

//…some code

?>

 

我们可以这么改一下
 

<?php
// … some code
$pass= “我是密码”;

if($_POST['pass']==$pass)
{
if($_GET['url'] == “ADmin”)
{
echo”登录成功!”;
// … some code
}
}

//…some code

?>

 

 
这样我们可以通过webshell.php?url=ADmin 来正常登陆。而攻击者只能抱着webshell.php团团打转。
 
此外还可以通过判断HTTP_REFERER来验证。
一般的工具进行暴破时,会伪造一个HTTP_REFERER的值为webshell的ur的包l,或者有的干脆就是空的。
当我们通过webshell.php?url=ADmin或者另一个页面(比如本地html)提交密码时,HTTP_REFERER的值是其他的值。这样也可以分辨出是不是你自己在登录。
 
第三个就更猥琐的,换一个验证的方式。
 
在webshell上留下一个POST的表单。但是程序不对POST数据做任何验证。而是验证提交的cookies内容。
比如这样
 
<?php
// … some code
$pass= “我是密码”;

if($_COOKIE['admin']==$pass)
{
echo”登录成功!”;
// … some code
}

//…some code
?>

 

 
目前还没看到有提交cookies的暴力破解工具(不过没看到有用cookies提交密码的webshell ^_^),这样就可以躲过一劫了。
就是有点麻烦,如果你是第一次登陆自己的webshell,可能需要开一个修改cookies的插件。
还有一个无聊的方法我自己没有用:
 
<?php
// … some code
$pass= rand(2000,99990);
if($_POST['pass']==$pass)
{
echo”登录成功!”;
header(‘location: /userRpmNatDebugRpm26525557/MyShell.htm’);
}
////// 以下为密码验证部分
$pass= “我是密码”;

if($_COOKIE['admin']==$pass)
{
echo”登录成功!”;
// … some code
}

//…some code
?>

 

 
代码要是这么改以后,我估计爆密码那哥们得纠结纠结自己下载的工具有没有问题了……
对于怎么隐藏Webshell入口或是隐藏Webshell本身各位一定有更多更好的见解。
本文抱砖引玉,旨在用一个简单的方法来躲过webshell密码破解工具的攻击,简单为上

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论