三、web安全-信息收集

发布于:2025-05-28 ⋅ 阅读:(27) ⋅ 点赞:(0)

1、信息搜集的重要性

(1)明确攻击面

信息搜集能让渗透测试人员清晰地勾勒出目标系统的边界,包括其网络拓扑结构、开放的服务端口、运行的软件系统等。例如,通过信息搜集发现目标企业除了对外提供官网服务外,还有一个内部员工使用的办公系统暴露在公网,这就大大扩展了攻击面,为测试人员提供了更多的潜在攻击点。

(2)发现潜在漏洞线索

搜集到的信息中可能隐藏着目标系统存在的漏洞线索。比如,通过查看目标网站使用的软件版本信息,发现其运行的某个开源内容管理系统(CMS)版本存在已知的高危漏洞,这为后续利用该漏洞进行渗透提供了明确的方向。

(3)制定针对性策略

基于全面的信息搜集,渗透测试人员可以制定出更具针对性的测试策略。如果了解到目标系统对某些特定的网络协议或服务依赖程度较高,那么在测试过程中就可以重点围绕这些方面展开,提高渗透测试的效率和成功率。

2、信息搜集的主要内容

2.1 目标基本信息

2.1.1 域名信息搜集:

包括域名的注册人、注册时间、到期时间、DNS服务器等。通过查询域名信息,可以了解目标企业的网络资产分布情况,以及是否存在域名劫持等潜在风险。例如,发现目标企业的一个重要业务子域名指向了一个可疑的IP地址,可能暗示着该子域名已被攻击者控制。

2.1.2 IP地址信息搜集:

确定目标系统的IP地址范围,了解其所属的网络运营商、地理位置等。IP地址信息有助于分析目标网络的拓扑结构,以及判断其是否使用了云服务、CDN等技术。

2.2 网络架构信息

  • 网络拓扑信息搜集

尝试绘制目标网络的拓扑结构图,包括路由器、交换机、防火墙等网络设备的位置和连接关系。了解网络拓扑可以帮助测试人员找到网络中的关键节点和薄弱环节,例如,发现某个核心交换机存在配置漏洞,可能导致整个子网面临安全风险。

  • 开放端口和服务信息搜集

使用端口扫描工具(如Nmap)扫描目标系统的开放端口,并识别运行在这些端口上的服务。不同的服务可能存在不同的安全漏洞,例如,开放的SSH服务如果使用弱密码,就容易被暴力破解。

2.3 系统和软件信息

  • 操作系统类型和版本:通过分析目标系统返回的Banner信息、使用指纹识别工具(如Nmap的操作系统检测功能)等方法,确定目标系统运行的操作系统类型(如Windows、Linux)和版本。不同操作系统版本的安全漏洞和防护机制存在差异,了解这些信息有助于选择合适的攻击手段。
  • 应用程序信息:识别目标系统上运行的各种应用程序,包括Web服务器(如Apache、Nginx)、数据库管理系统(如MySQL、Oracle)、中间件(如Tomcat、WebLogic)等。同时,获取这些应用程序的版本信息,以便查找已知的安全漏洞。
2.3.1 2.4 人员和组织信息
  • 员工信息:通过社交媒体、招聘网站、企业官网等渠道搜集目标企业员工的相关信息,如姓名、职位、联系方式等。员工信息可能被用于社会工程学攻击,例如,通过伪装成企业内部员工发送钓鱼邮件,诱使其他员工点击恶意链接或下载恶意文件。
  • 组织架构和业务流程:了解目标企业的组织架构和业务流程,有助于发现潜在的安全风险点。例如,发现某个部门的业务系统涉及大量敏感数据的处理,但安全防护措施相对薄弱,就可能成为攻击的重点目标。

3、信息搜集的常用方法

3.1 被动信息搜集

2.3.1搜索引擎查询:利用Google、百度等搜索引擎的高级搜索语法,如“site:目标域名”“intitle:关键词”等,查找与目标系统相关的公开信息。例如,通过搜索“site:example.com filetype:pdf”可以找到目标网站上公开的PDF文档,其中可能包含敏感信息。

谷歌语法

Site 指定域名
Inurl URL中存在关键字的网页
Intext 网页正文中的关键字
Filetype 指定文件类型
Intitle 网页标题中的关键字
Link link:baidu.com 即表示返回所有和baidu.com做了链接的URL
Info 查询指定站点的一些基本信息
cache 搜索Google里关于某些内容的缓存

site:可以限制你搜索范围的域名。

inurl:用于搜索网页上包含的URL,这个语法对寻找网页上的搜索、帮助之类的很有用。

intext: 只搜索网页部分中包含的文字(也就是忽略了标题、URL等的文字)

intitle:查找关键字的页面,一般用于社工别人的webshell密码

filetype:搜索文件的后缀或者扩展名

link:可以得到一个所有包含了某个指定URL的页面列表。

常用语法:
查找后台地址:site:域名 intitle:管理 | intitle:后台 | 登陆 | 用户名 | 密码 | 验证码 | 系统 | 账号
查找可注入点:site:域名 inurl:edit | lead | editor | Files
查找上传漏洞:site:域名 inurl:file | lead | editor | Files
存在的数据库:site:域名 inurl:asp?id= | web | edit
查看脚本类型:site:域名 filetype:asp/jsp/php
让搜索引擎入库:inurl:cm/data/templates/images/index/

2.3.2社交媒体和公开数据库:关注目标企业及其员工在社交媒体平台上的动态,从中获取有价值的信息。此外,还可以查询一些公开的数据库,如Whois数据库、企业信用信息公示系统等,获取域名注册信息、企业基本信息等。

**2.3.3网络爬虫:**使用网络爬虫工具(如Scrapy)自动抓取目标网站的内容,分析网站的结构和数据。网络爬虫可以帮助发现网站中隐藏的页面、敏感信息泄露等问题。

3.2 主动信息搜集

3.2.1端口扫描

使用Nmap等端口扫描工具对目标系统的IP地址范围进行扫描,检测开放的端口和运行的服务。端口扫描可以分为TCP扫描、UDP扫描等多种类型,根据不同的需求选择合适的扫描方式。

(1)nmap工具功能
  • 判断服务器类型
  • 探测开发端口
  • 探测使用框架
  • 探测使用中间件
  • 探测主机漏洞
(2)nmap,探测全端口tcp扫描
  • 扫描单个ip:nmap 127.0.0.1

  • 扫描多个ip:nmap 192.168.1.1 192.168.1.2

  • 扫描范围:nmap 192.168.1.1 - 192.168.1.10

  • 从文件中扫描:nmap -iL 1.txt

  • 扫描C段:nmap 192.168.1.1/24

  • 扫描除了192.168.1.100的所有地址:nmap 192.168.1.1/24 -exclude 192.168.1.100

  • 指定扫描ip端口:nmap -p 80,443 192.168.1.1

  • 扫描c段存活ip端口:nmap -sP 192.168.1.1/24

  • 扫描操作系统版本识别:nmap -O 192.168.1.1

  • 扫描开放端口对应的服务:nmap -sV 192.168.1.1

  • 扫描常见漏洞、应用服务扫描:nmap --script=vuln 192.168.1.1

  • 暴力破解:nmap --script=brute 192.168.1.1 不ping

  • 扫描常见漏洞:nmap --script=vuln 192.168.1.1

  • 绕过防火墙端口扫描:nmap -Pn 127.0.0.1

(3)参数参考
参数 说明
-sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息。
-sS 半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限。
-sF -sN 秘密FIN数据包扫描、Xmas Tree、Null扫描模式
-sP ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只有主机存活,Nmap才会继续扫描。
-sU UDP扫描,但UDP扫描是不可靠的。
-SA 这项高级的扫描方法通常用来穿过防火墙的规则集
-sV 探测端口服务版本
-Pn 扫描之前不需要用ping命令,有些防火墙禁止ping命令。可以使用此选项进行扫描
-v 显示扫描过程,推荐使用
-h 帮助选项,是最清楚的帮助文档
-p 指定端口,如1 - 65535, 1433, 135, 22, 80等
-O 应用远程操作系统检测,存在多个结果和-A可以一起用
-ON/-OX/-OG 将报告写入文件,分别是正常、XML、grepable三种格式
-T4 针对TCP端口禁止动态扫描延迟超过10ms
-iL 读取主机列表,例如:-iL C:\ip.txt
3.2.2 漏洞扫描

利用专业的漏洞扫描工具(如Nessus、OpenVAS)对目标系统进行全面的漏洞检测。这些工具可以根据已知的漏洞数据库,自动检测目标系统存在的安全漏洞,并生成详细的报告。

3.2.3 指纹识别

通过向目标系统发送特定的数据包,分析其返回的响应信息,识别目标系统的操作系统、应用程序类型和版本等信息。例如,使用Nmap的指纹识别功能可以快速准确地识别目标系统的相关信息。

3.2.3.1 信息搜集-win与linux识别

通过分析目标系统返回的Banner信息、使用指纹识别工具(如Nmap的操作系统检测功能)等方法,确定目标系统运行的操作系统类型(如Windows、Linux)和版本。不同操作系统版本的安全漏洞和防护机制存在差异,了解这些信息有助于选择合适的攻击手段。

(1)区分大小写

linux区分大小写,win不区分大小写。

(2)响应包

通过发送请求的响应包的server参数内容判断服务器类型。

(3)ping

PING命令来查看TTL值从而判断操作系统类型。

  • TTL=128,这是WINNT/2K/XP。
  • TTL=64,这是LINUX。
  • TTL=256,这是UNIX。

(4)nmap工具

  • 判断服务器类型
  • 探测开发端口
  • 探测使用框架
  • 探测使用中间件
  • 探测主机漏洞
3.2.3.2 数据库管理系统

根据开放的数据库端口号判断数据库类型。

(1)关系型数据库端口

  • Oracle — 1521
  • MySQL — 3306
  • Sybase — 5000
  • DB2 — 5000
  • PostgreSQL — 5432

(2)NOSQL数据库端口

  • MongoDB — 27017
  • Redis — 6379
3.2.3.3 中间件
  • 响应包查看server使用的中间件
  • 通过数据库类型推测常用中间件
  • 使用goby识别中间件、框架等信息
3.2.3.4 web指纹

(1)为什么收集web指纹?

  • web指纹是网站使用的cms,基于识别出来的cms进行漏洞挖掘,识别网站使用的cms,基于识别出来的cms已知漏洞搜索。

(2)在线识别&离线识别

  • 在线识别:https://finger.tidesec.com/
  • 离线识别:https://github.com/TideSec/TDFinger
3.2.3.5 子域名查询
  • fofa、谷歌语法、在线子域查询、oneforall、子域名挖掘机
    • fofa:www.fofa.so
    • 在线子域名:https://phpinfo.me/domain/
    • 子域名挖掘机:https://github.com/epii/domainFinder
    • oneforall:https://github.com/shmilylty/OneForAll
3.2.3.6 cdn识别
  • https://www.cnblogs.com/qiuhai/p/9763739.html
3.2.3.7 目录扫描
  • 常用工具:御剑、Jsk、dirmap
    • Jsk:https://github.com/k8gege/Jskscan-WebPathBrute
    • 安装教程
      • pip install -r requirement.txt
      • python dismap.py

4、信息搜集的注意事项

(1)合法合规

在进行信息搜集时,必须严格遵守法律法规和道德规范。未经授权的信息搜集行为可能构成违法犯罪,因此在开展渗透测试之前,一定要获得目标企业的书面授权。

(2)隐蔽性

尽量减少信息搜集活动对目标系统的影响,避免引起目标系统的警觉。可以采用一些隐蔽的扫描技术和策略,如慢速扫描、随机扫描等,降低被目标系统安全防护设备检测到的概率。

(3)记录和整理

对搜集到的信息进行详细的记录和整理,建立信息数据库。这有助于在后续的渗透测试过程中快速查找和利用相关信息,提高测试效率。


网站公告

今日签到

点亮在社区的每一天
去签到