总字符数: 28.13K
代码: 9.18K, 文本: 6.69K
预计阅读时间: 1.15 小时
信息收集
渗透的本质是信息收集,信息收集又称资产收集
信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口
信息收集的分类
主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
被动信息收集:利用第三方的服务对目标进行访问了解,如BURP,Google搜索、shodan搜索等
为什么要信息收集?
在Web渗透测试中,信息收集是非常重要的一步,它有以下几个关键作用:
- 了解目标网站或应用程序:通过信息收集,可以获取目标网站或应用程序的基本信息,包括域名、IP地址、服务器类型、备案情况等。这有助于渗透测试人员对目标进行评估和定位,选择适合的攻击路径和策略。
- 发现系统漏洞和弱点:通过信息收集,可以获取目标网站或应用程序的架构、技术框架、插件组件等,从而了解潜在的漏洞和弱点。例如,在JS文件中可能包含硬编码的敏感信息、API密钥、数据库连接字符串等。了解这些信息可以帮助渗透测试人员找到攻击的切入点。
- 寻找攻击面和路径:信息收集可以帮助渗透测试人员确定目标系统的攻击面和可能存在的漏洞位置。通过分析目标的网络拓扑、子域名、目录结构、文件权限等,可以确定攻击的方向和路径。例如,通过收集子域名,可以发现其他可能存在漏洞的系统。
- 风险评估和决策支持:通过信息收集,可以全面了解目标系统的安全状况,并对潜在的风险进行评估。这有助于渗透测试人员制定合理的攻击策略,选择适当的工具和技术,减少不必要的尝试和风险。
被动信息收集
利用第三方服务对目标进行被动信息收集防止被发现
被动信息收集的目的:通过公开渠道,去获得目标主机的信息,从而不与目标系统直接交互,避免留下痕迹
信息收集内容
信息收集的内容取决于渗透测试人员的目标和方法,一般来说,信息收集应包括以下内容:
- IP地址、业务相关域名和服务器信息:确定目标系统的IP地址和域名是信息收集的首要任务。这可以通过DNS解析、Whois查询、Ping命令等方式进行。
- 开放端口:了解目标系统上开放的端口和运行的服务是信息收集的重要内容。这可以通过端口扫描工具(如Nmap)进行。
- 操作系统和应用程序:了解目标系统的操作系统和运行的应用程序是非常重要的,这可以帮助渗透测试人员确定针对目标系统的攻击方法和工具。这可以通过服务识别、Banner Grabbing等方式进行。
- 漏洞和弱点:寻找目标系统的漏洞和弱点是渗透测试的重点之一,这可以通过漏洞扫描、Web应用程序扫描等方式进行。
- 目录和文件:寻找目标系统中存在的目录和文件可以帮助渗透测试人员发现系统中可能存在的敏感信息或漏洞。这可以通过目录扫描、文件爆破等方式进行。
- 社会工程学信息:寻找目标系统相关人员的姓名、职位、联系方式等信息可以帮助渗透测试人员进行社会工程学攻击。这可以通过搜索引擎、社交媒体等方式进行。
- 网络拓扑:了解目标系统的网络拓扑可以帮助渗透测试人员了解目标系统的结构和环境。这可以通过网络拓扑图、路由表等方式进行。
将信息整合起来,可以帮助渗透测试人员更好地了解目标,制定攻击策略,并在后续的渗透测试过程中根据具体情况进行进一步的信息收集和攻击。
信息用途
信息收集的主要用途是为了帮助渗透测试人员更好地了解目标系统的结构、环境、弱点和潜在风险,从而为 攻击目标制定更加有效的策略和方案。
具体来说,收集到的信息可以用于以下方面:
- 确定目标系统的弱点和漏洞,从而寻找攻击目标的最佳路径和方式。
- 了解目标系统的环境和结构,为攻击目标选择最合适的工具和技术。
- 发现目标系统中可能存在的敏感信息或数据,为后续攻击做好准备。
- 为渗透测试人员进行社交工程学攻击提供信息基础。
总之,信息收集是渗透测试中不可或缺的环节,收集到的信息将为渗透测试人员提供关键的支持和帮助,有助于攻击目标的成功实施。同时,在收集信息的过程中,渗透测试人员需要注意保护隐私和遵守法律规定, 避免侵犯他人权益。
DNS信息收集
ping可以快速的将域名解析为IP地址
1 | ping www.baidu.com |
使用nslookup查看域名
1 | nslookup 12306.cn |
1 | nslookup www.baidu.com |
DNS信息收集-DIG
1 | # kali下的命令 |
使用-X
参数IP反查域名
1 | └─# dig -x 114.114.114.114 |
whois查询
域名注册信息的两种查询方式:
- Web接口查询
- Whois命令查询
- 通过whois来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS解析服务器、注册人联系电话等,因为有些网站信息查得到,有些网站信息查不到,所以推荐以下信息比较全的查询网站,直接输入目标站点即可查询到相关信息。
通过Web接口查询
- https://whois.aliyun.com/
- https://whois.cloud.tencent.com/
- http://whois.chinaz.com/
- https://whois.aizhan.com/
- https://whois.cloud.tencent.com/
- https://whois.cndns.com/
使用whois查询
1 | # kali系统 |
备案信息查询
网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,如果需要查询企业备案信息(单位名称、备案编号、网站负责人、电子邮箱、联系电话、法人等)
Web接口查询:
- http://icp.chinaz.com/
- https://www.tianyancha.com/
- https://icp.aizhan.com/
- http://cha.fute.com/index
- https://www.beian88.com/
- http://beian.miit.gov.cn/publish/query/indexFirst.action
收集子域名
子域名介绍:
顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://example.com 这个域名中,顶级域是.com(或.COM),大小写视为相同。
常见的顶级域主要分2类:
通用顶级类别域名常见的有:用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov; 用于互联网络信息中心和运行中心的.net;用于非盈利组织的.org
国家及地区顶级域,如.cn代表中国,.uk代表英国等,地理顶级域名一般由各个国家或地区负责管理。.jp代表什么?
子域名(Subdomain Name)凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
挖掘子域名的重要性
子域名中的常见资产类型一般包括办公系统,邮箱系统,论坛,商城,其他管理系统,网站管理后台也有可能出现子域名中。
首先找到目标站点,在官网中可能会找到相关资产(多为办公系统,邮箱系统等),关注一下页面底部,也许有管理后台等收获。
子域名是某个主域的二级域名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。
例如:www.xxxxx.com
主域不存在漏洞,并且防护措施严密。而二级域名edu.xxxxx.com存在漏洞,并且防护措施松散。
查询子域名
- 搜索引擎挖掘.如:Google intitle:公司名称
- 第三方网站查询: https://bp.lmboke.com/
- FOFA title=”公司名称”
- 钟馗之眼 site=”baidu.com”
- Dns探测
- Layer子域名挖掘机
- subDomainsBrute
- Sublist3r
OneForAll
1 | git clone https://gitee.com/shmilylty/OneForAll.git |
esd
1 | ┌──(root㉿kali)-[/home/kali/subdomain/OneForAll] |
dnsub
1 | ┌──(root㉿kali)-[/home/kali/subdomain/dnsub_linux_amd64_v2.0] |
subDomainsBrute
1 | ┌──(root㉿kali)-[/home/kali/subdomain/subDomainsBrute-1.4] |
查找真实IP(绕过CDN)
如果目标网站使用了CDN(内容分发网络),使用了cdn真实的ip会被隐藏,如果要查找真实的服务器就必须获取真实的ip,根据这个ip继续查询旁站。
注意:很多时候,主站虽然是用了CDN,但子域名可能没有使用CDN,如果主站和子域名在一个ip段中,那么找到子域名的真实ip也是一种途径。
- 多地Ping
- 查询历史DNS解析记录
旁站和C段
旁站往往存在业务功能站点,建议先收集已有IP的旁站,再探测C段,确认C段目标后,再在C段的基础上再收集一次旁站。
旁站是和已知目标站点在同一服务器但不同端口的站点,通过以下方法搜索到旁站后,先访问一下确定是不是自己需要的站点信息。
网站头信息收集
- 中间件 : Web服务【Web Servers】 apache iis7 iis7.5 iis8 nginx WebLogic tomcat
- 网站组件: js组件jquery、vue 页面的布局bootstrap通过浏览器获取
- Google And firefox 插件: Wappalyzer
- wooyun漏洞库 https://wooyun.website
- 网站注册信息 http://www.reg007.com/
指纹识别
EHole
1 | ┌──(root㉿kali)-[/home/kali] |
cms识别
Google And firefox 插件: Wappalyzer
Kali:cmseek
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53┌──(root㉿kali)-[/home/kali/]
└─# cmseek -u https://www.xxx.com/
___ _ _ ____ ____ ____ _ _
| |\/| [__ |___ |___ |_/ by @r3dhax0r
|___ | | ___| |___ |___ | \_ Version 1.1.3 K-RONA
[+] Deep Scan Results [+]
┏━Target: www.xxx.com
┃
┠── CMS: WordPress
┃ │
┃ ├── Version: 5.6
┃ ╰── URL: https://wordpress.org
┃
┠──[WordPress Deepscan]
┃ │
┃ ├── Readme file found: https://www.xxx.com//readme.html
┃ ├── License file: https://www.xxx.com//license.txt
┃ ├── User registration enabled: https://www.xxx.com//wp-login.php?action=register
┃ │
┃ ├── Plugins Enumerated: 5
┃ │ │
┃ │ ├── Plugin: page-links-to
┃ │ │ │
┃ │ │ ├── Version: 3.3.4
┃ │ │ ╰── URL: https://www.xxx.com//wp-content/plugins/page-links-to
┃ │ │
┃ │ ├── Plugin: wp-pagenavi
┃ │ │ │
┃ │ │ ├── Version: 2.70
┃ │ │ ╰── URL: https://www.xxx.com//wp-content/plugins/wp-pagenavi
┃ │ │
┃ │ ├── Plugin: download-manager
┃ │ │ │
┃ │ │ ├── Version: 5.6
┃ │ │ ╰── URL: https://www.xxx.com//wp-content/plugins/download-manager
┃ │ │
┃ │ ├── Plugin: buddypress
┃ │ │ │
┃ │ │ ├── Version: 6.3.0
┃ │ │ ╰── URL: https://www.xxx.com//wp-content/plugins/buddypress
┃ │ │
┃ │ ╰── Plugin: mailchimp-for-wp
┃ │ │
┃ │ ├── Version: 4.8.1
┃ │ ╰── URL: https://www.xxx.com//wp-content/plugins/mailchimp-for-wp
┃ │
┃
┠── Result: /usr/share/cmseek/Result/www.xxx.com/cms.json
┃
┗━Scan Completed in 29.8 Seconds, using 44 Requests
SSL/TLS证书查询
SSL/TLS证书通常包含域名、子域名和邮件地址等信息,结合证书中的信息,可以更快速地定位到目标资产,获取到更多目标资产的相关信息.
- https://myssl.com/
- https://crt.sh
- SSL证书搜索引擎
常见端口
常见端口
端口 | 服务 | 漏洞 |
---|---|---|
20/21/69 | ftp/tftp:文件传输协议 | 1. 爆破 2. 嗅探溢出 3. 后门 4. 匿名访问 |
22 | SSH | 爆破、OpenSSH漏洞 |
23 | telnet:远程连接 | 爆破、嗅探 |
25 | SMTP邮件服务 | 弱口令、未授权访问、邮件伪造 |
53 | DNS:域名系统 | 1. DNS区域传输 2. 劫持 3. 缓存投毒 4. 隧道技术穿透防火墙 |
80/443/8080 | Web | 1. 常见Web攻击 2. 控制台爆破 3. 对应服务器版本漏洞 |
80/8080 | Apache/Tomcat/Nginx/Axis2 | 1. 爆破:弱口令(爆破Tomcat manager后台) 2. HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响 3. 解析漏洞 |
80/81/443 | IIS | 1. PUT写文件:利用IIS漏洞,PUT方法直接将文件放置到服务器上 2. 短文件名泄露:这种一般没啥影响 3. 解析漏洞:详细见Apache服务 |
110 | POP3 | 弱口令 |
123 | NTP | ntp放大攻击 |
137/139 | samba | 1. 爆破:弱口令 2. 未授权访问:给予Public用户高权限 3. 远程代码执行漏洞:CVE-2015-0240等等 |
143 | imap | 弱口令 |
161 | snmp | 爆破public弱口令 |
389 | ldap | 1. 注入攻击:盲注 2. 未授权访问 3. 爆破:弱口令 |
443 | Https | 心脏滴血 |
445 | SMB | 溢出漏洞 ms17-010 |
873 | rsync | 未授权访问 |
1080 | socket | 爆破:进行内网渗透 |
1098 | JavaRmi | 命令执行 |
1352 | Lotus | 1. 爆破:弱口令控制台(admin password) 2. 信息泄露:源代码 3. 跨站脚本攻击 |
1433 | MsSQL | 1. 爆破:使用系统用户登录 2. 注入攻击 |
1521 | Oracle | 弱口令 |
2049 | NFS | 未授权访问 |
2181 | Zookeeper | 未授权访问 |
2222 | DA | DA虚拟主机 |
2601 | Zebra | 默认密码 |
3128 | squid | 空口令 |
3306 | Mysql | 1. 爆破 2. 拒绝服务 3. 注入 |
3389 | Windows远程连接(RDP) | 1.爆破:3389端口爆破工具 2. Shift粘滞键后门 3. 3389漏洞攻击 |
4100 | SysBase | 弱口令 |
4440 | rundeck | 弱口令 |
4848 | glassfish | 1. 爆破:控制台弱口令 2. 认证绕过 |
5000 | sybase/DB2 | 1. 弱口令 2. 命令注入 |
5422/5432 | postgreSQL | 1. 缓冲区溢出 2. 注入攻击 3. 爆破:弱口令 |
5900 | VNC | 默认端口:5900+桌面ID(5901;5902) 攻击方式: 1. 爆破:弱口令 2. 认证口令绕过 3. 拒绝服务攻击(CVE-2015-5239) 4. 权限提升(CVE-2013-6886) |
5984 | CouchDB | 命令执行 |
6082 | varnish | 未授权访问 |
6379 | redis | 1. 弱口令 2. 未授权访问 |
7001 | WebLogic | 1. 爆破:弱口令 用户名密码一致 2. Congsole后台部署Webshell 3. Java反序列化 4. SSRF嗅探内网 5. 命令执行 |
8000 | jdwp | 命令执行 |
8069 | zabbix | 命令执行 |
8080 | Apache/Tomcat/Ngin/Axis2/Jboss中间件 | 1. 弱口令 2. 命令执行 |
8080 | Jboss | 默认端口8080 其他端口:1098/1099/444/4445/8080/8009/8083/8093 攻击方式: 1. 爆破:弱口令(爆破Jboss系统后台) 2. 远程代码执行 3. Java反序列化 |
8080 | GlassFish | 默认端口:http 8080 IIOP:3700 控制台4848 攻击方式: 1. 爆破:弱口令(对于控制台) 2. 任意文件读取 3. 认证绕过 |
8080 | Resin | 攻击方式: 1. 目录遍历 2. 远程文件读取 |
8080/8089 | Jenkins | 默认端口:8080、8089 攻击方式: 1. 爆破:弱口令(默认管理员) 2. 未授权访问 3. 反序列化漏洞 |
8080 | Jetty | 默认端口:8080 攻击方式: 1. 远程共享缓冲区溢出 |
8161 | activeMQ | 文件上传 |
8649 | ganglia | 1. 未授权访问 2. 信息泄露 |
8980 | OpenNMS | 反序列化漏洞 |
9080/9090 | WebSphere | 1. 弱口令 2. 反序列化 3. 文件泄露 4. 控制台爆破 |
9200/9300 | ElasticSearch | 1. 远程代码执行 2. 未授权访问 |
11211 | MemCache | 未授权访问 |
27017/27018 | MongoDB | 1. 爆破 2. 未授权访问 |
50000 | SAP | 命令执行 |
50010/50030/50070 | Hadoop | 1.未授权访问 2. 信息泄露 3. 命令执行 |
fofa、zoomeye、quake、sumap、hunter、shodan
介绍:
他们是一款非常强大的搜索引擎,网络空间资产检索系统是世界上数据覆盖更完整的IT设备搜索引擎,拥有全球联网IT设备更全的DNA信息。探索全球互联网的资产信息,进行资产及漏洞影响范围分析、应用分布统计、应用流行度态势感知等。
- https://fofa.info/
- https://www.zoomeye.org/
- https://quake.360.net/quake/#/index
- https://sumap.dbappsecurity.com.cn/
- https://hunter.qianxin.com/
- https://www.shodan.io/
公共字段
首先是大家都共有的字段搜索
字段名称 | 字段说明 |
---|---|
title | 网站标题 |
body | 正文,或者说响应体 |
cert | 证书内容 |
ip | ip或ip段 |
port | 端口 |
protocol | 协议 |
server | http headers里面的Server字段 |
base_protocol | 传输层协议 |
os | 系统 |
asn | 自治域号码 |
status_code | web状态码 |
icon_hash | 图标hash |
region | 地区 |
app | 应用指纹 |
FOFA基础语法
逻辑连接符 | 具体含义 |
---|---|
= | 匹配,=””时,可查询不存在字段或者值为空的情况 |
== | 完全匹配,==””时,可查询存在且值为空的情况 |
&& | 与 |
!= | 不匹配,!=””时,可查询值为空的情况 |
~= | 正则语法匹配专用(高级会员独有,不支持body) |
() | 确认查询优先级,括号内容优先级最高 |
title网站标题
title="beijing"
从标题中搜索“北京”
body页面内容
- body可以通过页面中包含的特定字符串来搜索资产.
body="网络空间测绘"
从html正文中搜索”网络空间测绘”
- body可以通过页面中包含的特定字符串来搜索资产.
domain域名
domain="qq.com"
搜索根域名带有qq.com的网站
实战-FOFA根据地区搜索
country="CN"
搜索指定国家(编码)的资产region="Xinjiang"
搜索指定行政区的资产city="bejing"
搜索指定城市的资产排除地区方法使用 != 例如在通过domain搜索资产的时候会有香港的服务器,那如何排除香港的服务器?
domain="12306.cn" && region!="HK"
通过语法组合进行筛选,&&
表示左右2个条件都需要满足,左边条件为包含12306.cn
域名的资产,右边条件 则为地区不等于HK
,HK
表示香港。这样就能够帮我们定位到不包含香港服务器的资产。
通过组合条件使搜索更加精准
(domain="12306.cn" && region!="HK") && body="12306"
搜索12306.cn域名排除香港的资产列表,并且body中包含12306实战-通过使用”FOFA规则列表”搜索CMS资产
搜索:CMS:WordPress
有时我们搜索产品的时候可能需要指定对应的版本号进行搜索,但是fofa内置的应用规则中绝大部分是不支持指定版本号进行搜索的,此时可以通过提取页面中的特征来进行定位
discuz论坛
现在确定Discuz! x3.4
版本存在sql注入漏洞.
那如何定位Discuz! x3.4
版本的资产呢?
在论坛首页中,查看源代码可以看到对应的版本信息。页面中的信息我们可以通过body参数检索。
构造搜索条件:app="Tencent-Discuz" && body="Discuz! X3.4"
搜索中国台湾地区所有的Discuz! X3.4论坛
app="Tencent-Discuz" && body="Discuz! X3.4"&& region="TW"
网络摄像头
"JAWS" && icon_hash="90066852"
:这个JAWS的默认密码是 无密码 || 111111 || 666666 || 888888"DVRDVS-Webs"
海康威视摄像头弱口令测试:超级用户:admin超级用户:123456
1 | # 其他示例 |
需要注意的是fofa语句不是一成不变的,同一个目标单位的查询关键词可能有好几个,同时在信息收集的过程中也可能发现新的关键词,比如备案号、传真、客服电话等,这些东西往往是唯一的。搜索别人没有搜的关键词就可能发现别人没发现的资产,就可能拿到别人没拿到的shell,需要灵活运用。
Google搜索引擎使用技巧
我们通常使用搜索引擎都是直接搜索自己想要的内容,正常情况下我们都是直接使用语言进行描述问题 来进行搜索,然后搜索引擎也有特定语法可以使用,熟练掌握搜索引擎的语法可以让你的搜索效率和准确率 大幅度提升,当然我们学习这种技巧是为了寻找存在漏洞的页面,或者存在敏感信息的文件
Google常用语法说明
内容 | 解析 |
---|---|
site | 指定域名 |
inurl | URL中存在的关键字页面 |
intext | 网页内容里面的关键字 |
Filetype | 指定文件类型 |
intitle | 网页标题中的关键字 |
link | 返回你所有的指定域名链接 |
info | 查找指定站点信息 |
cache | 搜索Google里的内容缓存 |
1 | # 例子: |
例一
intitle:index.of .bash_history
(linux历史命令)
.bash_history
表示我们要筛选的文件名称,也可以替换成其他的敏感信息文件,该文件记录了用户的历史命令记录
例二
查找discuz
论坛中存储mysql
密码的配置文件config\_global.php
intitle:index.of config_global.php
例三
cache:12306.cn
cache返回的结果是被搜索引擎收录时的页面,比如一些页面被删除了,我们通过cache还是可以访问。
例四
Kali filetype:torrent
Kali是我们要搜索的关键字,至于同学们关心什么奇怪的内容老师就不知道了。
filetype
指定文件类型torrent
文件类型名称,torrent
是种子文件,可以填写任意扩展名。
例五
intext:user.sql intitle:index.of
组合使用技巧
intext:user.sql
查询包含user.sql
用户数据库信息的页面
intitle:index.of
表示网站目录是开放状态. 我们可以看到有很多页面都包含了敏感信息
常见最新漏洞公布网站
- http://www.exploit-db.com
- http://www.exploit-db.com/
- http://www.securityfocus.com
- http://www.cnvd.org.cn/
- http://www.nsfocus.net
- https://www.securitylab.ru/vulnerability/
- http://cve.mitre.org
- http://vulhub.org.cn/index
- https://www.anquanke.com/
- https://nvd.nist.gov/
- https://www.seebug.org/
Github信息泄露监控
- https://github.com/0xbug/Hawkeye
- https://github.com/MiSecurity/x-patrol
- https://github.com/VKSRC/Github-Monitor
- https://github.com/search/advanced
- https://wordpress-1258894728.cos.ap-beijing.myqcloud.com/202210010949213.png