1. 什么是信息收集?主动收集与被动收集的核心区别是什么?
信息收集:指通过技术或非技术手段,系统性收集目标对象(如企业、网站、服务器等)的各类信息(网络架构、资产范围、人员信息、技术栈等),为后续渗透测试提供基础。
主动收集与被动收集的核心区别:
主动收集:直接与目标系统交互(如发送请求、扫描端口),可能被目标检测到(有 “痕迹”);
被动收集:通过第三方渠道获取信息(如搜索引擎、公开数据库),不直接与目标交互(无 “痕迹”)。
2. 给一个目标的信息收集步骤?
以 “目标为某企业官网()” 为例:
基础信息:
WHOIS 查询(域名注册人、邮箱、过期时间);
DNS 记录(A 记录→IP,CNAME→CDN / 子域名,MX→邮件服务器)。
判断 CDN 存在及获取真实 IP
网络资产:
子域名枚举(工具 + 搜索引擎:site:example.com -www);
IP 反查(旁站扫描,通过 Censys 查该 IP 绑定的其他域名);
端口扫描(Nmap -sV -p- [IP],识别开放端口及服务版本)。
C 段嗅探(同网段扫描)
应用层信息:
指纹识别(Wappalyzer:如 “PHP+Nginx+WordPress”);
目录扫描(Dirsearch -u -e php,txt);
查找后台(常见路径爆破 + 查看页面源码注释)。
API 接口
敏感信息:
检查 robots.txt、sitemap.xml;
搜索 GitHub 是否有相关代码泄露;
查看 Wayback Machine 历史快照,寻找旧版本漏洞(如过时的 API 接口)。
人员信息:
招聘网站(如拉勾网)查该企业招聘岗位,获取技术栈和邮箱格式(如 name@example.com);
领英查员工姓名,尝试猜测账号(如 zhangsan@example.com)。
信息整合与漏洞分析:
整理关键信息;
漏洞利用方向
3. 子域名收集方式?
爆破工具:基于字典枚举(如 Layer 子域名挖掘机、OneForAll,支持多线程 + DNS 验证)。
搜索引擎:Google/Baidu 语法(site:example.com -www,排除主域名)。
SSL 证书:通过 Censys、crt.sh 查询目标域名的 SSL 证书,证书中常包含子域名。
DNS 记录查询:
枚举 DNS 服务器的 AXFR 记录(若允许区域传输,可获取所有子域名);
解析历史(如的 DNS 历史记录)。
第三方服务:
威胁情报平台(如微步在线、360 威胁情报);
子域名聚合工具(如 dnsdb.io、Sublist3r 集成多源数据)。
关联信息挖掘:
企业备案信息中的关联域名;
邮件后缀(如 support@mail.example.com);
网站内部链接(如 “关于我们” 页面的子域名跳转)。
4. 怎么获取目标的文件目录?
目录扫描工具:Dirsearch、Gobuster、Burp Suite Intruder(爆破常见目录名,如 /admin、/backup)。
网站爬虫:Burp Spider、OWASP ZAP 爬取网站链接,提取目录结构(如 /static/css、/api/v1)。
敏感文件泄露:
robots.txt(可能包含禁止爬取的目录,如 “Disallow: /admin/”);
.DS_Store(Mac 系统生成,泄露目录结构)、.git/(Git 版本控制文件,可恢复目录和文件)。
错误信息:访问深层路径(如 /example/a/b/c),若返回 403/404,可能泄露上层目录(如 “/example/a/b/not found”)。
漏洞利用:文件遍历漏洞(如 “../” 跳转)、任意文件读取漏洞(直接读取目录列表或配置文件)。
公开文档:目标企业的技术文档、帮助中心可能提及内部目录结构(如 “上传文件存储在 /uploads/”)。
5. 网站查找后台的方法有哪些?
常见路径爆破:使用字典(如 admin、manage、login、system、backend)+ 常见后缀(.php、.asp、.jsp),工具如 Dirsearch。
网站内部链接:检查页面源码、导航栏、底部链接(如 “管理员入口”“登录后台”)。
robots.txt:可能包含后台路径(如 “Disallow: /admin/login.php”)。
CMS 默认后台:如 WordPress(/wp-admin)、Dedecms(/dede)、Discuz(/admin.php)。
搜索引擎语法:site:example.com inurl:admin(查找 URL 含 “admin” 的页面)。
错误信息泄露:输入错误账号密码,跳转的 URL 可能为后台路径(如 “/admin/login?error=1”)。
源码泄露:通过 GitHub、备份文件(如 wwwroot.rar)查找后台路径注释。
暴力猜测:结合企业名称缩写(如企业名为 “ABC”,尝试 /abcadmin、/abc_login)。
6. Phpinfo 你会关注哪些信息?
服务器信息:操作系统(OS)、Web 服务器版本(如 Apache/2.4.29)、PHP 版本(判断是否有已知漏洞)。
配置项:
allow_url_fopen
/allow_url_include
(是否允许远程文件包含);register_globals
(是否开启全局变量注册,可能导致变量覆盖);magic_quotes_gpc
(是否过滤特殊字符,影响 SQL 注入利用);open_basedir
(限制文件访问范围,判断文件包含漏洞利用难度)。
文件路径:
DOCUMENT_ROOT
(网站根目录)、SCRIPT_FILENAME
(当前 phpinfo 文件路径)。环境变量:
$_SERVER
中的 IP、域名、用户信息(如REMOTE_ADDR
、USER
)。扩展模块:是否加载危险模块(如
php_curl
、php_exec
,可能被用于命令执行)。Session 配置:
session.save_path
(Session 文件存储路径,可能用于 Session 劫持)。SSL 信息:若启用 HTTPS,查看 SSL 协议版本、证书信息(判断是否有 SSL 漏洞)。
7. 常用端口有哪些?(含对应服务,举例 15 个)
常用端口及对应服务如下:
21/tcp:FTP(文件传输协议,用于文件上传下载)
22/tcp:SSH(安全外壳协议,用于远程登录服务器)
23/tcp:Telnet(远程登录协议,明文传输,安全性低)
25/tcp:SMTP(简单邮件传输协议,用于发送邮件)
53/udp/tcp:DNS(域名系统,用于域名解析)
80/tcp:HTTP(超文本传输协议,网页访问默认端口)
443/tcp:HTTPS(加密的 HTTP 协议,基于 TLS/SSL)
110/tcp:POP3(邮局协议版本 3,用于接收邮件)
143/tcp:IMAP(互联网消息访问协议,邮件接收与管理)
3306/tcp:MySQL(关系型数据库服务)
3389/tcp:RDP(远程桌面协议,Windows 远程连接)
5432/tcp:PostgreSQL(关系型数据库服务)
6379/tcp:Redis(非关系型数据库,键值存储)
8080/tcp:常见 Web 服务器默认备用端口(如 Tomcat、Nginx)
9200/tcp:Elasticsearch(搜索引擎服务,非关系型数据库)
8. 常见关系型数据库及其端口?常见非关系型数据库及其端口?
关系型数据库及端口:
MySQL:3306/tcp
PostgreSQL:5432/tcp
Oracle:1521/tcp(默认服务端口)
SQL Server:1433/tcp(默认实例端口)
DB2:5000/tcp(默认端口)
非关系型数据库及端口:
Redis:6379/tcp
MongoDB:27017/tcp(默认端口)
Elasticsearch:9200/tcp(HTTP 接口)、9300/tcp(节点间通信)
Memcached:11211/tcp/udp(分布式缓存服务)
Cassandra:9042/tcp(CQL 协议端口)
9. 常见的端口扫描技术有哪些?
全连接扫描(TCP Connect Scan):通过调用
connect()
函数与目标端口建立完整 TCP 连接,成功则端口开放(特征明显,易被防火墙检测)。半连接扫描(SYN Scan):发送 SYN 包,若收到 SYN+ACK 则端口开放(不建立完整连接,隐蔽性较好)。
FIN 扫描:发送 FIN 包,若收到 RST 则端口关闭,无响应则可能开放(适用于对 FIN 包不严格处理的系统,如 Unix)。
Xmas 扫描:发送带 FIN、URG、PSH 标志的包,规则同 FIN 扫描(利用系统对异常标志包的处理差异)。
NULL 扫描:发送无任何标志的包,逻辑同 FIN 扫描(仅对遵循 RFC 的系统有效)。
ACK 扫描:发送 ACK 包,通过返回的 RST 包 TTL 值判断端口是否被防火墙过滤(用于探测防火墙规则)。
UDP 扫描:发送 UDP 包,若收到 ICMP 端口不可达则端口关闭,无响应可能开放(速度慢,因 UDP 无连接特性)。
10. 3 种端口扫描工具及核心功能;nmap 如何识别开放端口及服务版本?
端口扫描工具:
Nmap:核心功能是端口扫描、服务版本探测、操作系统识别、脚本扫描(如漏洞检测),支持多种扫描技术,灵活性极强。
Masscan:超高速端口扫描工具,可同时扫描全网端口,核心功能是大规模网段快速探测,速度远快于 Nmap(但精度略低)。
Zmap:专注于网络普查的高速扫描工具,核心功能是对大量 IP 进行特定端口扫描(如 443 端口),支持自定义探针,适合批量探测。
Nmap 识别开放端口及服务版本的方法:
执行命令:
nmap -sV [目标IP]
(-sV
参数用于服务版本探测)。原理:先通过端口扫描确定开放端口,再向开放端口发送特定探针(如 HTTP 的
GET /
、SSH 的版本请求),根据返回的 banner 信息(如 “Apache/2.4.41”)匹配内置指纹库,识别服务名称及版本。
11. 内网的 IP 地址有哪些?
根据 RFC 1918 标准,内网 IP 地址范围如下:
A 类:
10.0.0.0 ~ 10.255.255.255
(子网掩码255.0.0.0
)B 类:
172.16.0.0 ~ 172.31.255.255
(子网掩码255.240.0.0
)C 类:
192.168.0.0 ~ 192.168.255.255
(子网掩码255.255.0.0
)
12. T3 协议(含 Weblogic T3 反序列化漏洞原理及防御)
T3 协议:Weblogic 特有的通信协议(基于 TCP),用于 Weblogic 服务器与客户端(如 EJB 客户端)的远程通信,默认端口 7001。
Weblogic T3 反序列化漏洞原理:
攻击者向 Weblogic 的 T3 端口发送恶意序列化数据(如精心构造的 Java 对象),Weblogic 在解析 T3 协议数据时,会对序列化对象进行反序列化操作,若对象中包含恶意代码(如CommonsCollections
链),则会触发代码执行,获取服务器权限。
防御措施:
升级 Weblogic 至官方补丁版本(如 CPU 补丁)。
禁用 T3 协议:在
weblogic.xml
中配置<enforce-valid-basic-auth-credentials>true</enforce-valid-basic-auth-credentials>
,或通过控制台关闭 T3 监听。限制 T3 端口访问:仅允许信任 IP 连接 7001 端口(如防火墙 ACL 规则)。
13. RMI 协议(含工作流程、核心组件、格式)
RMI(Remote Method Invocation):远程方法调用协议,允许 Java 程序调用远程主机上的对象方法。
工作流程:
服务端注册:远程对象通过
LocateRegistry.createRegistry()
在指定端口(默认 1099)注册服务。客户端查找:客户端通过
Naming.lookup()
从注册中心(Registry)获取远程对象引用。方法调用:客户端调用远程对象方法,参数通过序列化传输到服务端,服务端执行后返回结果(反序列化)。
核心组件:
Registry:注册中心,负责存储远程对象的引用(绑定名称与对象)。
Server:提供远程对象实现类,注册到 Registry。
Client:查找远程对象并调用其方法。
格式:
基于JRMP(Java Remote Method Protocol),数据传输采用 Java 序列化格式(ObjectOutputStream
),协议头包含 JRMP 版本等信息。
14. LDAP 协议
LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,用于访问和维护分布式目录服务(如企业用户信息、设备列表),基于 X.500 目录服务简化而来。
用途:常见于单点登录(SSO)、用户认证、地址簿查询等。
默认端口:389(TCP/UDP,明文)、636(TCP,SSL 加密,即 LDAPS)。
15. PHP 伪协议(含 php.ini 配置详解)
PHP 伪协议:
file://
:访问本地文件系统(如file:///etc/passwd
)。php://filter
:读取文件源码(如php://filter/read=convert.base64-encode/resource=index.php
)。php://input
:读取 POST 请求体数据(需allow_url_include=On
,可用于文件包含漏洞)。data://
:传递数据作为文件内容(如data://text/plain,<?php phpinfo();?>
,需allow_url_fopen=On
)。zip://
/bzip2://
/zlib://
:读取压缩包内文件(如zip://test.zip#test.php
)。phar://
:访问 PHAR 归档文件(可用于反序列化漏洞,如phar://test.phar/test.txt
)。
php.ini 配置:
allow_url_fopen
:布尔值,控制是否允许通过fopen()
等函数访问远程文件(如http://
、ftp://
),默认On
。allow_url_include
:布尔值,控制是否允许在include/require
中使用 URL(如include('http://example.com/evil.php')
),默认Off
(若开启,易触发远程代码执行)。
16. 跨域;Jsonp 与 Cors 是什么?
跨域:浏览器的同源策略限制下,不同源的网页之间无法互相访问资源(如 AJAX 请求),“不同源” 指协议、域名、端口任意一项不同。
Jsonp(JSON with Padding):跨域解决方案,利用
<script>
标签不受同源策略限制的特性,通过回调函数获取远程数据。流程:客户端定义回调函数,请求 URL 携带回调名(如http://api.com/data?callback=func
),服务端返回func(data)
,客户端脚本执行func()
处理数据。CORS(Cross-Origin Resource Sharing):服务器端配置的跨域机制,通过响应头(如
Access-Control-Allow-Origin: https://example.com
)明确允许特定源访问资源,支持多种 HTTP 方法(如 POST、PUT),比 Jsonp 更规范、安全。
17. 同源策略中的同源条件;作用与限制?
同源条件:
需同时满足协议相同(如均为http
或https
)、域名相同(如均为example.com
,a.example.com
与b.example.com
不同源)、端口相同(如均为 80 或 443)。
作用:
防止恶意网站通过脚本窃取用户数据(如 Cookie、LocalStorage)或操作 DOM,是浏览器的核心安全机制。
限制:
不能读取不同源网页的 Cookie、LocalStorage、SessionStorage。
不能访问不同源网页的 DOM(如
iframe
中的内容)。不能发送跨域 AJAX/ Fetch 请求(或需服务器允许,如 CORS)。
不能调用
window.open()
打开的不同源窗口的window
对象属性。
18. 什么是 CDN?CDN 的作用是什么?
CDN(Content Delivery Network,内容分发网络):是一组分布在不同地理位置的服务器集群,通过负载均衡、内容缓存等技术,将源站内容分发到离用户最近的节点,实现内容快速传输。
作用:
加速内容访问(减少用户与源站的物理距离);
减轻源服务器压力(流量分散到边缘节点);
提高可用性(某节点故障时自动切换到其他节点);
增强安全性(抵御 DDoS 攻击,隐藏源站 IP)。
19. 如何判断目标是否存在 CDN?
判断目标是否使用 CDN 的核心是检测其 IP 地址是否 “多节点分布式”,常用方法:
多节点 ping 测试:从不同地区(如国内不同省份、国外)ping 目标域名,若返回的 IP 地址不同,大概率存在 CDN;
DNS 解析查看:通过
nslookup
或dig
命令查询域名的 DNS 记录,若返回多个 IP 且来自不同运营商(如阿里云、腾讯云、Cloudflare 等),可能存在 CDN;在线工具检测:使用 WhatIsMyIP、CDN Finder 等工具,直接查询域名是否使用 CDN;
子域名排查:主域名可能用 CDN,但部分子域名(如
mail.xxx.com
、ftp.xxx.com
)可能未使用,若子域名 IP 固定,可能为源站 IP。
20. 如何绕过 CDN 找真实 IP 地址?
绕过 CDN 的核心是 “找到与源站直接交互的入口”,五种方法:
子域名遍历:主域名用 CDN 但子域名可能未用(如
admin.xxx.com
、test.xxx.com
),解析子域名获取 IP 后,验证是否为源站(如访问该 IP 能否打开主站内容);邮件头分析:目标网站发送的邮件(如注册通知、营销邮件)中,
Received
字段会记录邮件服务器的 IP,该 IP 可能与源站同网段;历史 DNS 记录查询:通过工具(如 DNSlytics、SecurityTrails)获取目标域名过去解析的 IP,尝试访问这些 IP 验证是否为源站;
利用服务器主动连接:若目标存在 SSRF 漏洞,构造 payload 让服务器访问自己的公网监控地址(如
http://xxx.xxx.xxx.xxx:port
),监控日志中会记录目标的真实 IP;边缘节点漏洞:部分 CDN 配置不当(如未对源站 IP 做访问控制),可通过扫描 CDN 节点的反向代理配置(如 Nginx 的
X-Forwarded-For
泄露源站 IP)。ICMP 隧道 / 特殊协议:部分 CDN 仅加速 HTTP/HTTPS 流量,对 ICMP(ping)、FTP 等协议未代理,可通过 ping 或 FTP 连接尝试获取真实 IP。
21. 什么是目录遍历?如何通过工具(如 Dirbuster)发现隐藏文件或敏感目录?
目录遍历:攻击者通过构造特殊请求(如
../
路径穿越)或爆破路径,访问网站未公开的目录(如admin/
、backup/
)或文件(如config.php
、database.sql
),获取敏感信息。Dirbuster 用法:
输入目标 URL(如
http://xxx.com
),选择扫描模式(“List based brute force”);加载字典(如
directory-list-2.3-medium.txt
),设置文件扩展名(如.php
、.html
);配置线程数(默认 10,视目标抗压力调整)、超时时间,启动扫描;
扫描结果中,状态码为 200(存在)、301/302(跳转)的路径即为潜在敏感目录 / 文件。
22. 简述通过 Robots.txt、Sitemap.xml 收集信息的技巧(如隐藏目录、备份文件)
Robots.txt:网站用于告知搜索引擎 “哪些目录 / 文件不允许爬取”,但可能泄露敏感路径:
直接访问
http://xxx.com/robots.txt
,若存在Disallow: /admin/
、Disallow: /backup/
等记录,可直接尝试访问这些目录;若存在
Disallow: /config.php
,可能是数据库配置文件,尝试下载。
Sitemap.xml:用于告知搜索引擎网站的结构(如页面 URL、更新时间),可能暴露:
隐藏页面(如
http://xxx.com/internal/report.html
);备份文件(如
http://xxx.com/backup/20231001.sql
);动态参数页面(如
http://xxx.com/user?id=123
),可用于后续参数注入测试。
23. 什么是 Whois 查询?它能获取哪些关键信息(如注册人、DNS 服务器等)?
Whois 查询:通过域名注册商的数据库,查询域名的注册信息(公开可查)。
关键信息:
注册人(姓名 / 企业名)、联系邮箱、联系电话;
域名注册商、注册时间、过期时间;
DNS 服务器(如
ns1.aliyun.com
、ns2.cloudflare.com
);注册地址(可能关联企业真实地址)。
用途:用于社会工程学攻击(如通过邮箱 / 电话钓鱼)、挖掘关联域名(同 DNS 服务器可能属于同一企业)。
24. DNS 枚举的常用工具
nslookup/dig
:基础 DNS 解析工具,用于查询 A 记录(IP)、CNAME 记录(别名)、MX 记录(邮件服务器)等;dnsenum
:自动化枚举工具,支持爆破子域名、查询 MX 记录、反向查询 IP 对应的域名;Amass
(OWASP 工具):结合被动收集(如 DNS 存档、证书透明度日志)和主动爆破,高效发现子域名;Sublist3r
:专注子域名枚举,集成多个搜索引擎 API(如 Google、Bing)和字典爆破。
25. 如何快速识别目标网站使用的 CMS(如 WordPress、Drupal)?
查看网页源码:
检查
<meta>
标签(如 WordPress 可能包含<meta name="generator" content="WordPress 6.0">
);查看链接或脚本路径(如
wp-content/
为 WordPress 特征,sites/default/files/
为 Drupal 特征)。
响应头分析:通过浏览器开发者工具(F12)的 “Network” 面板,查看
X-Powered-By
或自定义头(如X-Drupal-Cache
表明 Drupal)。特定文件检测:访问
readme.txt
(Wordpress 会显示版本)、CHANGELOG.txt
(Drupal 版本信息)。工具识别:使用
WhatWeb
(命令行工具,如whatweb http://xxx.com
)、Wappalyzer
(浏览器插件)直接识别 CMS 类型及版本。
26. Google 搜索语法有哪些?
Google 搜索语法通过关键词组合,可精准定位目标信息,常用如下:
语法 | 作用 | 示例 |
---|---|---|
site:域名 | 仅搜索指定域名下的内容 | site:xxx.com admin (找 下含 “admin” 的页面) |
inurl:关键词 | 搜索 URL 中包含关键词的页面 | inurl:login.php site:xxx.com (找 的登录页) |
intitle:关键词 | 搜索标题中包含关键词的页面 | intitle:"后台管理" site:xxx.com (找后台管理页) |
filetype:扩展名 | 搜索指定类型的文件 | filetype:sql site:xxx.com (找 的 SQL 备份文件) |
link:域名 | 搜索链接到该域名的页面 | link:xxx.com (找与 相关的网站) |
related:域名 | 搜索与该域名内容相似的网站 | related:xxx.com (找同类型网站) |
关键词 -过滤词 | 排除包含 “过滤词” 的结果 | xxx.com 后台 -百度 (排除百度的结果) |
27. 如何手工快速判断目标站是 Windows 还是 Linux 服务器?
可通过以下差异特征判断:
文件路径分隔符:
Windows 使用反斜杠
\
(如C:\inetpub\wwwroot
),Linux 使用正斜杠/
(如/var/www/html
)。若页面报错信息中出现路径,可直接区分。
默认目录与文件:
Windows 服务器常见默认路径:
/iisstart.htm
(IIS 默认页)、/aspnet_client/
( 相关)。Linux 服务器常见默认路径:
/index.php
(PHP 站点)、/robots.txt
权限差异(Linux 对文件权限更敏感)。
大小写敏感性:
Linux 系统对文件名 / 路径大小写敏感(如
Index.html
与index.html
视为不同文件),Windows 不敏感。可通过访问不同大小写的 URL 测试(如http://目标/Test
与http://目标/test
)。
服务与端口:
Windows 常用 IIS 服务器(端口 80/443)、远程桌面(3389);Linux 常用 Apache/Nginx(80/443)、SSH(22)。若目标开放 22 端口,大概率是 Linux;开放 3389 则大概率是 Windows。
错误信息泄露:
IIS 服务器(Windows)报错可能包含
Microsoft-IIS/版本
标识;Apache/Nginx(Linux)报错会显示对应服务器版本(如Apache/2.4.6
)。PHP 环境中,
phpinfo()
页面的SERVER_SOFTWARE
字段会显示服务器系统(如Windows NT
或Linux
)。
28. 如何使用 nmap 进行渗透测试?
Nmap 是渗透测试的核心工具,主要用于信息收集与初步漏洞探测,流程如下:
存活主机探测:
nmap -sn 192.168.1.0/24
(仅 Ping 扫描,不扫描端口,避免触发防火墙)。端口扫描:
全端口扫描:
nmap -p- 192.168.1.1
(扫描所有 65535 个端口)。常用端口扫描:
nmap -p 1-1000 192.168.1.1
。
服务与版本探测:
nmap -sV 192.168.1.1
(识别端口对应服务及版本,如 “Apache httpd 2.4.29”)。操作系统识别:
nmap -O 192.168.1.1
(通过 TTL、端口特征推测操作系统)。漏洞扫描:结合 NSE(Nmap 脚本引擎),如
nmap --script vuln 192.168.1.1
(检测常见漏洞,如 Heartbleed)。特定漏洞检测:使用专用脚本,如
nmap --script redis-info 192.168.1.1 -p 6379