「黑客工具」Web渗透测试-DVWA的暴力破解操作

简述暴力破解(Brute Force)的意思是攻击者借助计算机的高速计算不停枚举所有可能的用户名和密码,直到尝试出正确的组合,成功登录系统 。理论上,只要字典足够大,破解总是会成功的 。阻止暴力破解的最有效方式是设置复杂的密码(英文字母大小写、数字、符号混合) 。而如果你的字典是从某网站泄露出来的,你使用它试图登陆其他网站,就便是撞库 。撞库攻击的成功率高于暴力破解,因为你在A网站的用户名、密码通常和B网站的用户名、密码一致 。例如:12306铁道部购票网站曾在2014年底发生过撞库攻击 。
DVWA提供以下四种安全级别:Low、Medium、High、Impossible 。
Low级别首先,我们将安全级别设置为Low进行破解,选择左侧DVWA Security选项,下拉框选Low并提交,然后选择Brute Force 。

「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
方法一:使用Burp Suite暴力破解
1.浏览器设置代理,地址127.0.0.1,端口8080;
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
2.启动Burp Suite软件,在Proxy选项卡下选择Options,监听127.0.0.1:8080;
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
3.在Proxy选项卡下的Intercept中开启intercept(拦截数据包);
4.随后在DVWA中输入用户名和密码,假设已知用户名是admin,密码未知(随意填写),点击登录;
5.在Burp Suite中得到请求代码,全选按Ctrl+I或者点击鼠标右键Send to Intruder 。
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
6.切换到Intruder选项卡,选择Positions,点击右侧Clear,然后选中密码123456,点击Add,结果如图 。
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
7.点击Payloads,在Payload set中选择第几个需要暴力破解的参数,我们这里只有一个,在下面选择Load加载字典文件(*.txt格式),然后点击Start attack;
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
8.我们可以看到密码password的返回长度和其他不一样,证明password就是正确密码;
「黑客工具」Web渗透测试-DVWA的暴力破解操作

文章插图
 
方法二:SQL注入漏洞
查看php代码;
<?phpif( isset( $_GET[ 'Login' ] ) ) {// Get username$user = $_GET[ 'username' ];// Get password$pass = $_GET[ 'password' ];$pass = md5( $pass );// Check the database$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = MySQLi_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successfulecho "<p>Welcome to the password protected area {$user}</p>";echo "<img src=https://www.isolves.com/it/aq/rj/2019-10-16/"{$avatar}" />";}else {// Login failedecho "

Username and/or password incorrect.
";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); }?>代码审计可以发现,没有对username和password进行过滤,存在SQL注入漏洞:
$query = "SELECT * FROM `users` WHERE user = '$user' AND password ='$pass';";
比如在Username中输入admin' #或者admin' or '1'='1等都可以登录 。
Medium级别代码如下;
<?phpif( isset( $_GET[ 'Login' ] ) ) {// Sanitise username input$user = $_GET[ 'username' ];$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitise password input$pass = $_GET[ 'password' ];$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass );// Check the database$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successfulecho "<p>Welcome to the password protected area {$user}</p>";echo "<img src=https://www.isolves.com/it/aq/rj/2019-10-16/"{$avatar}" />";}else {// Login failedsleep( 2 );echo "


推荐阅读