找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

373

积分

0

好友

49

主题
发表于 3 天前 | 查看: 12| 回复: 0

0x01 简易自动挖掘漏洞环境搭建

1.服务器准备

这里准备了两台服务器,一台用于搭建AWVS扫描引擎,另一台作为控制端运行自动化脚本。

AWVS服务器搭建(Docker环境):

  1. 在Docker中拉取AWVS13的镜像。
    docker pull secfa/docker-awvs
  2. 将Docker容器的3443端口映射到宿主机的任意端口(示例中使用14434)。
    docker run -it -d -p 14434:3443 secfa/docker-awvs
  3. 访问AWVS管理界面。
    https://服务器IP:映射端口(如14434)

    64034.png

脚本准备:

在控制端服务器上,通过联动脚本实现AWVS扫描任务的自动添加与调度。本文选取了一个支持并发任务数量控制的Python脚本,其核心代码如下:

import json
import time
import requests
requests.packages.urllib3.disable_warnings()  # 忽略SSL警告

class AwvsApi(object):
    # ... (类初始化代码,定义API地址、密钥、最大任务数等参数)
    def __init__(self):
        self.api_host = "https://localhost:3443"
        self.api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 替换为你的API Key
        self.max_task = 6 # 最大并发扫描任务数
        self.headers = {
            'X-Auth': self.api_key,
            'content-type': 'application/json'
        }
    # ... (包含目标添加、扫描启动、状态检查等方法)
    def addTarget(self):
        # 批量添加目标到AWVS
        pass
    def scanTarget(self):
        # 监控并启动扫描任务,控制并发数
        pass

if __name__ == "__main__":
    try:
        AwvsApi.Usage()
        scan = AwvsApi()
    except Exception as e:
        print(AwvsApi.error_color + "Done!")

配置脚本的关键在于获取AWVS的API Key。登录AWVS管理界面,点击右上角用户头像进入Profile,在下拉菜单中找到并复制API Key,将其填入上述脚本的api_key字段。 64035.png

2.资产搜集

在渗透测试或漏洞挖掘中,高效地搜集目标资产是第一步。FofaShodan等网络空间搜索引擎是强大的资产发现工具。例如,可以使用Fofa的语法进行精准检索:

title="集团" && after="2021-06-10" && before="2021-10-01" && country="CN"

为自动化批量获取资产,可以使用工具自动调用Fofa API进行查询和导出。在工具的配置界面填入Fofa邮箱和API Key(在个人中心获取),并输入查询语法和所需数量即可。 64036.png 将导出的资产列表(URL)提供给上述Python脚本,即可启动自动化扫描流程。

0x02 配合公开漏洞进行批量化验证

在自动化扫描运行的同时,可以针对近期公开的通用型漏洞进行批量验证,提升漏洞挖掘效率。

1.漏洞选择

选择影响范围广、验证步骤简单的公开漏洞。例如,用友NC BeanShell远程代码执行漏洞(CNVD-2021-30167)就是一个典型的例子。 64037.png

2.资产收集

使用Fofa搜索引擎搜集可能存在该漏洞的资产,搜索语法为:

icon_hash="1085941792" && country="CN"

利用工具将搜索结果导出,提取URL列表保存为文本文件。 64038.png

3.编写验证脚本

该漏洞的访问路径相对固定。可以编写一个简单的Python脚本,批量请求该路径以验证漏洞是否存在。

# author:soufaker
import requests
import sys

py_str = "/servlet/~ic/bsh.servlet.BshServlet"
head = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'
}
success_code = []

with open('NC.txt', 'r', encoding="utf-8") as f:
    for i in f:
        if i[0:4] != 'http':
            py_url = 'http://' + (i.strip('\n')) + py_str
        else:
            py_url = (i.strip('\n')) + py_str
        print(py_url)
        try:
            x = requests.get(py_url, allow_redirects=False, headers=head, timeout=2)
            if x.status_code == 200:
                success_code.append(py_url)
                print("存在漏洞")
        except:
            print('无法连接')
            continue

print(success_code)
with open('success.txt', 'w+', encoding="utf-8") as f:
    for s in success_code:
        f.writelines(s + '\n')

运行脚本后,success.txt文件中将记录所有存在漏洞的URL地址。 64039.png

4.资产归属查询

在提交漏洞报告时,通常需要确认目标资产的归属单位。

  1. ICP备案查询:通过工信部备案平台https://beian.miit.gov.cn进行查询。 64040.png
  2. 系统界面信息查询:对于无法直接通过IP查到备案的系统,可以尝试访问其登录页或相关界面,系统名称、公司LOGO或版权信息常会暴露所属单位。再结合天眼查等工具进行核实。 64041.png



上一篇:Kafka高性能原理与实现:深入解析其百万级吞吐的四大核心机制
下一篇:栈溢出问题定位实例:缓冲区溢出导致局部变量被篡改
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-7 02:50 , Processed in 0.091653 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表