来源:自学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