渗透测试笔记系列文章目录
信息收集篇
漏洞扫描篇
漏洞利用篇
权限维持篇
内网渗透篇
前言
渗透测试的第一步和本质均为信息收集,本篇将围绕一下几个问题展开:
希望收集到的信息有那些?
这些信息都会有什么用处?
如何收集到这些信息?
然后会进行信息收集实战,分析信息收集时的思路
渗透测试中的核心目标是全面识别目标系统的攻击面,为后续漏洞利用和提权提供线索。我们要明确授权的范围是什么?是仅限web应用还是包含内外主机?我们目标的资产类型是什么?是web服务器、数据库、API接口、内网主机还是移动设备?此外,目标企业的业务内容最好也搞清楚。
收集的信息详解(网络层、应用层、系统层、社工层)
1.基础网络信息-网络层
目标资产清单
- IP地址:主站IP、子网范围、内网IP段(如192.168.1.0/24)。
作用:可以分析网络边界和潜在横向移动路径。 - 域名与子域名:主域名、子域名、域名注册信息(whois记录、注册商、过期时间)。
作用:发现隐藏服务(如admin.example.com指向后台管理系统)子域名可以增加攻击面 - 端口与服务:开放端口(如80HTTP、443HTTPS、3306MYSQL)、服务版本(如Apache2.4.51)。
作用:识别暴露的服务(如22SSH、3306MYSQL)判断是否存在未授权访问或弱密码漏洞,而暴露服务版本(如Apache2.4.51)可以直接匹配CVE漏洞(如CVE-2021-41773) - CDN与负载均衡:检测是否使用Cloudflare、AWS CloudFront等CDN
作用:判断是否需要CDN绕过获取真实IP
网络拓扑与架构
- 路由器:路由器型号
作用:路由器型号(如华为AR-HWv2、思科CiscoIOS15.6)直接关联公开的CVE漏洞库。许多路由器型号(如TP-Link WR1043N)默认使用admin/admin凭据,或未启用WPA2-PSK加密。还能根据路由器型号(如企业级路由器华为USG)可推测内网规模和架构。 - 防火墙:防火墙规则
作用:可帮助攻击者过滤无效流量,避免触发WAF或IDS警告。还能分析防火墙放行的非标准端口来发现隐蔽服务。 - 内网划分:VLAN分布、子网隔离情况(如192.168.1.0为办公网,192.168.2.0为DMZ)。
作用:优先定位高价值资产(如财务数据库)。进入内网后规划横向移动路径。 - DNS解析:DNS服务器IP、MX记录(邮件服务器)、TXT记录(SPK/DKIM配置)。
作用:DNXS记录(如MX、A、TXT)可揭示目标隐藏资产。DNS解析发现未公开的子域名。
2.web应用层信息-应用层
应用指纹与版本
- HTTP头部:Server字段(如Apache/NGINX版本)、X-Powered-By(如PHP/Python版本)、
Content-Type(如JSON/XML响应头)。
作用:用于匹配已知漏洞 - CMS与框架:WordPress、Drupal、Joomla版本
*作用:直接利用公开漏洞POC
API与接口
- API端点:/api/user、/login 等路径。
作用:发现未授权的API端点(如/api/user/list)测试越权访问或注入漏洞 - 参数类型:GET/POST参数、请求头(如Authoriation Bearer Token)。
作用:构造恶意Payload(如SQL注入) - 速率限制:API调用速率限制。
作用:确保不会触发防御机制
漏洞与历史记录
- CVE漏洞:查询目标资产关联的CVE编号。用作攻击
- 历史漏洞扫描结果:使用Vulners或Exploit-DB检索已知漏洞。用作攻击
敏感数据泄露
- 数据库暴露:通过Shodan搜索mysql://example.com探测开放数据库端口。
- 文件泄露:使用Google Hacking语法(如site:example.com"config.php")查找配置文件。
作用:可能包含敏感文件(数据库密码、各种密钥)。
3.操作系统与内网信息-系统层
主机配置
- 操作系统类型与版本:Linux或windows
作用:以选择对应提权攻击(如Linux内核漏洞CVE-2021-4034) - 内核版本:uname-r
作用:可验证是否存在本地提权漏洞。
运行服务与进程
- 服务列表:systemctl list-units (如nginx、dockerd)。
- 进程监控:ps aux 或top命令输出(如检测sqlmap进程)。
- 敏感服务:Redis(未授权访问)、SHH(弱密码)、RDP(端口3389开放)。
作用:直接利用进行RCE或数据窃取。发现sqlmap进程表面目标可能已经遭受攻击。
内网渗透线索
- 共享文件夹:SMB协议共享目录。
作用:可能获得敏感数据(如备份数据库)。 - 组策略漏洞:windows域控制器组策略配置(如允许匿名访问)。
作用:内网横向移动时使用。 - 日志文件:/var/log/auth.log(Luinx登录日志)、Event Viewer(Windows安全日志)。
作用:用于清除攻击痕迹。
4.社会工程学信息-物理层
- 员工信息:姓名、邮箱、职位、联系方式
- 组织架构:部门划分、管理层邮箱。
- 会议记录:内部会议视频、文档(如Zoom会议链接、Google Docs共享链接)分析目标设计钓鱼针对性话术和分析会存在什么敏感数据。
- 钓鱼测试结果:模拟钓鱼邮件点击率、密码重置频率。
- 弱密码统计:通过John the Ripper 破解哈希后的常见密码(如password123)。
- 云服务:AWS S3储存权限(如公开可读写)、Azure VM暴露的端口
- 邮件服务:使用smtp-user-enum测试邮箱是否存在。检测SPF/DKIM/DMARC配置(如未配置DMARC易遭受钓鱼攻击)。
简单总结
信息类型 | 攻击阶段 | 典型利用场景 |
---|---|---|
IP与子网 | 信息收集 | 网络扫描、内网横向移动 |
CMS版本 | 漏洞探测 | 自动化攻击(如WorldPress漏洞利用) |
Redis未授权访问 | 漏洞利用 | 直接获取数据库凭据 |
邮箱 | 社会工程 | 钓鱼攻击 |
内核漏洞 | 提取阶段 | 本地提权至root |
如上表所示不同的信息用于不同攻击阶段,在进行信息收集时步骤也基本遵循上表从上至下顺序
信息收集实战
落实到信息收集实战时,我们根据是否与目标直接接触而分为被动信息收集和主动信息收集。
被动信息收集
被动信息收集通过公开渠道非侵入式获取目标信息,利用搜索引擎(如Google高级语法)定位技术文档、配置文件等敏感信息;通过Shodan等网络空间引擎探测设备服务及架构;结合Whois和ICP备案查询解析域名归属及注册者信息;挖掘社交媒体(LinkedIn/微博)获取员工账号及组织架构,从而构建目标画像。
whois查询和ICP备案信息查询
whois是用来查询域名的IP以及所有者等信息的传输协议。以及注册域名的详细信息的数据库(如域名所有人,域名注册商)。
通过whois查询可以获得域名注册者邮箱地址等信息。一股情况下对于中小型网站域名注册者就是网站管理员。利用搜索引擎对whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
https://www.whoiscx.com/
能够拿到站点信息如下表
whois反查
先通过whois获取注册人和邮箱,再通过注册人和邮箱反查域名。缺点是很多公司都是DNS解析的运营商注册的,查到的是运营商代替个人和公司注册的网站信息。
因为ICP备案是中国政府要求的,即网站运营者需要向工信部备案,获取备案号。查询ICP备案可以获取主办单位、负责人、联系方式等信息,这对渗透测试中的信息收集同样重要,尤其是在国内目标的情况下。
网络安全空间测绘-FOFA
完全的语法规则在首页“查询语法”点击就可以看到。
通过公司名称定位域名/IP
domain="公司名称拼音或英文" || title="公司名称" || cert.org="公司名称"
发现公司官网、子公司域名或国际域名
通过公司名称搜索证书信息
cert.org="公司名称" || cert.subject="CN=.*公司名称.*"
找到使用公司名称签名的 SSL 证书,可能暴露内网服务或测试环境。
结合通用子域名字典发现子域名
domain="公司主域名" && subdomains.yes
可以列出所有子域名
定位业务系统与端口
domain="公司主域名" && (port="80" || port="443" || port="3389")
发现可能的远程桌面服务(RDP)、Web 服务或 API 接口
domain="公司主域名" && protocol="https" && title="后台管理"
定位管理后台、登录页面等敏感入口
Google Hacking
Google 会爬取并索引全球网页内容,而 Google Hacking 利用其高级搜索运算符(如 intitle, inurl, filetype 等)结合特定关键词(如漏洞名称、配置文件、日志文件等),从公开网页中筛选出高价值信息。
假设仅知道目标公司名称为“启明星科技”
通过公司名称定位主域名、子域名或相关资产。
搜索语法:
# 1. 搜索主域名(常见拼写或英文名)
"启明星科技" inurl:www OR "Qimingxing Tech" inurl:www
# 2. 通过证书信息查找域名(如 SSL 证书中的 Organization 字段)
cert.org:"启明星科技" OR cert.subject:"CN=Qimingxing Tech*"
# 3. 搜索员工邮箱或联系方式(可能暴露域名后缀)
"contact@qimingxing" OR "support@qimingxing" filetype:txt
预期结果:
发现主域名:qimingxing.com 或 starlighttech.cn。
找到员工邮箱:security@qimingxing.com,用于后续社工攻击。
枚举子域名与开放服务
发现目标公司所有可能的子域名及开放端口。
搜索语法:
# 1. 基础子域名发现(需结合工具二次验证)
site:qimingxing.com -www
# 2. 查找未授权管理页面(如后台目录)
intitle:"index of" "/admin" site:qimingxing.com
# 3. 搜索特定服务(如 RDP、SSH)
inurl:"/3389" site:qimingxing.com OR inurl:"/ssh" site:qimingxing.com
预期结果:
子域名列表:dev.qimingxing.com, api.qimingxing.com。
发现暴露的 RDP 服务:rdp.qimingxing.com:3389
敏感文件泄露探测
查找配置文件、备份文件、日志等可能泄露敏感信息的文件。
搜索语法:
# 1. 搜索 .env 文件(含 API 密钥、数据库凭证)
filetype:env "QIMINGXING" site:qimingxing.com
# 2. 查找 Git 目录泄露(源码可能包含漏洞)
intitle:"index of" .git site:qimingxing.com
# 3. 搜索日志文件(含内部 IP 或密码)
filetype:log "error" site:qimingxing.com
预期结果:
泄露的 .env 文件内容:DB_PASSWORD=admin123。
发现未删除的 Git 仓库:git.qimingxing.com/.git,可下载源码分析。
漏洞关联与验证
利用 Google Hacking 快速定位已知漏洞的利用代码或受影响资产。
搜索语法:
# 1. 搜索特定 CMS 漏洞(如 DedeCMS 反序列化漏洞)
"启明星科技" inurl:dede/index.php AND vuln:CVE-2023-1234
# 2. 查找 WebLogic 反序列化漏洞利用代码
filetype:php "ysoserial.php" site:qimingxing.com
# 3. 搜索 SQL 注入漏洞页面(含特征参数)
inurl:"id=1" "warning" site:qimingxing.com
预期结果:
发现某子站使用旧版 DedeCMS,存在 CVE-2023-1234 反序列化漏洞。
找到可利用的 ysoserial.php 文件,可直接构造 POC。
攻击面扩展
通过已发现的信息横向扩展攻击面。
搜索语法:
# 1. 搜索与目标相关的其他域名或IP
related:qimingxing.com OR net:"qimingxing.com/24"
# 2. 查找内网暴露的设备(如摄像头、路由器)
intitle:"Netgear Router Login" net:"qimingxing.com/24"
# 3. 搜索企业使用的第三方服务(如阿里云、腾讯云)
site:qimingxing.com "Powered by 阿里云"
主动信息收集
主动信息收集是指通过直接与目标系统交互来获取信息,这种方式可能会留下痕迹,需要谨慎操作。主要包括端口扫描和抓包分析。
Nmap端口扫描服务识别
1:主机存活确认
目标:确认目标 IP 是否在线,避免扫描无效地址。
命令:
nmap -sn 192.168.1.10
参数说明:
-sn:跳过端口扫描,仅进行主机存活探测(ICMP Echo、TCP SYN、ARP 请求)。
输出示例:
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-01 10:00 UTC
Nmap scan report for 192.168.1.10
Host is up (0.0010s latency).
MAC Address: 00:11:22:33:44:55 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
2:全端口扫描与服务识别
目标:发现所有开放端口及对应服务版本。
命令:
nmap -sV -p- -T4 192.168.1.10
参数说明:
-sV:探测服务版本。
-p-:扫描全部 65535 个端口。
-T4:快速扫描模式(平衡速度与准确性)。
输出示例:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
443/tcp open ssl/http Apache httpd 2.4.41 ((Ubuntu))
3389/tcp open ms-wbt-server Microsoft Terminal Services
3306/tcp open mysql MySQL 8.0.26
3:操作系统与网络指纹识别
目标:判断目标 OS 类型及网络设备信息。
命令:
nmap -O --osscan-guess 192.168.1.10
参数说明:
-O:启用操作系统检测。
--osscan-guess:猜测非标准响应的 OS(提高检测率)。
输出示例:
OS details: Linux 4.15 - 5.6 (kernel 5.4.0-42-generic)
Network Distance: 1 hop
Service Info: Host: example.com; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Wireshark抓包分析
如果发现了目标网站或服务使用未加密的协议(如 HTTP、FTP、Telnet)传输数据。我们可以尝试
捕获明文传输的密码、API 密钥、会话令牌或用户数据。
检查是否存在敏感信息泄露(如数据库查询、内部服务器路径等)。
总结
在渗透测试信息收集阶段,一定要完成的是对目标的画像要全面,为后续步骤做好铺垫。