2. Information Gather
参考:
https://book.hacktricks.xyz/external-recon-methodology
https://book.hacktricks.xyz/pentesting/pentesting-web#web-tech-tricks web 信息收集
https://github.com/redhuntlabs/Awesome-Asset-Discovery 信息收集工具箱
主要是个人总结积累,结合网络上多篇优秀文章。
持续改进中 ~~
难免有不当之处,恳请指正。
简介
什么是信息收集? 为什么?
收集目标一系列相关信息。
信息收集主要目标是为了详细了解目标。一个复杂的系统,了解越多,就能发现更多攻击面,攻击面多了,存在缺陷的可能性也就大了。就跟和阿喀琉斯之踵一样。
要收集哪些信息?
从全局来讲。分为外网信息收集和内网信息收集,此处暂时仅关注外网。关于内网信息收集,后期会更新。
一般渗透测试,客户会指定 域名或 ip。所以就从这些给定的范围入手。
像一些 其它信息收集方法,asn 号、favicon 同类站点、注册人查询 等等,在指定特定范围时,就没必要收集这些信息。
开始之前,我们要了解:
- 一个机构可以有多台服务器,一个服务器上一般有一个公网 ip,一个 ip 上可以有多个 web 端口 ( 多个中间件同时开启,80 8080 443 等),一个端口可以有多个网站 ( 虚拟主机,host 头部不同),一个网站不同目录可以使用不同的 cms。
- Web 渗透测试,主要就是测试网站安全性,每个网站都是可能的入侵点。所以信息收集主要目标之一是收集到所有网站入口。
收集方法、步骤
假设一台服务器上只有一个公网 IP,一台服务器上可能开放多个网站端口,一个端口可能有多个网站(虚拟主机)。可能一个服务器上搭建多个网站,暴露一个 80 端口,根据 host 头部区分请求转达的目标。这个时候的不同的域名就对应不同的网站。这也是一个入口点。
通常来讲,web 服务器若未设置 cdn,则web 端口通常时 固定的 80 、443 而当设置 cdn,则可以指定其它端口。因为 域名解析只能解析到域名所对应的 ip 信息,无法获取任何跟端口相关的信息。而 cdn 回源可以指定端口。
大纲
-
对客户所给的所有域名找到所有子域。
原因:因为有可能不同子域对应不同的服务器。
工具:oneforall
-
对获取到的所有域名,尝试获取 ip 。对获取到的 ip 整合去重
目的:获取到目标范围内所有暴露在公网上的 web 服务器 ip。
工具:脚本去重。域名解析获得 ip,若碰到 cdn ,尝试绕过。
-
对每个获得到的 ip ,扫描其端口,探测服务。
工具:nmap + exploit-db 或者 nessus
更多技巧见下文。
-
定位到每个 web 端口,以及其上的网站域名。
web 信息收集,见下文。
识别服务
也可以用 shodan fofa 之类,收集端口
对每个 ip 进行端口扫描,识别第三方软件,可以利用 nessus 。或 nmap + searchsploit
如果找到命令执行的漏洞,那就不用进行下一步了。
# ICMP 请求
nmap -PEPM -sP -n 199.66.11.0/24
# 常见的 http 端口
nmap -p80,443,8000-8100,8443 199.66.11.0/24
#udp scanner
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# sctp
nmap -T4 -sY -n --open -Pn <IP/range>
Web 信息收集
对于 web 站点,则进行进一步信息收集。
-
web server。
由于前面通过端口服务探测,可以得到 web server 版本信息,以及是否存在漏洞。
此处进一步可以尝试扫描其默认的敏感文件,例如 tomcat 的manage 界面。
例如已知 exp、或默认路径敏感文件。
配置缺陷,例如支持额外 http 方法 webdav put
-
检测是否存在 WAF 等相关信息。
可以通过 wafw00f 或恶意payload 探测。
若有 WAF ,使用代理池、爬虫白名单、时延等技术绕过 WAF 对探测的拦截。否则可能会影响后面的探测。
# 代理池 https://www.kuaidaili.com/ https://github.com/jhao104/proxy_pool
-
收集 cms 相关信息。
如果目标使用的是 cms,可以尝试 代码审计。途径:网络公开的源码,或跑网站备份文件。
此外 cms 的敏感文件、默认凭证等信息。
# 在线识别 cms 网站 http://whatweb.bugscaner.com/ https://whatcms.org/
-
收集 脚本语言、数据库等信息。可以通过 url 探测,或者常见的搭建组合猜想。
aspx mssql windows iis php mysql windows/linux apache jsp mssql/oracle windows/linux tomcat javaee mysql/oracle/ windows/linux weblogic/jboos/tomcat
某些脚本语言可能也存在漏洞。可以和其它网站功能结合利用。
-
对于网站功能,则进行相应漏洞检测。
重点关注:sql 注入,文件上传、下载,代码、命令执行,越权,登录界面跑密码等等。
主要关注能进行命令执行的漏洞。而像某些漏洞,例如 客户端 xss,一般而言利用条件苛刻,不需要投入太多精力。
-
可以检测的其它信息。
如果目标未使用 cms ,则可以尝试 跑/爬取 目录文件 ,或者尝试 使用 burp param minier 发现隐藏参数。
工具: burp 的 scanner 功能可以爬取。dirsearch 主要用来爆破目录、文件。
其它
不同站点的组建方式
# 域名类站点:
www.xiaodi8.com -> zblog
test.xiaodi8.com -> zbzcms
port.xiaodi8.com -> tongdaOA
bbs.xiaodi8.com -> discuz
# 端口站点:
http://101.32.62.213 -> null
http://101.32.62.213:81 -> tongdaOA
port.xiaodi8.com -> null
port.xiaodi8.com:88 -> zblog
# 目录站点:
test.xiaodi8.com -> zbzcms
test.xiaodi8.com/blog -> zblog