渗透的本质是信息收集
信息收集也叫做资产收集
信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口。
whois查询
域名在注册的时候 需要填入个人或者企业信息 如果没有设置隐藏属性可以查询出来 通过备案号 查询个人或者企业信息 也可以whois反查注册人 邮箱 电话 机构 反查更多得域名和需要得信息。
收集子域名
域名分为根域名和子域名
moonsec.com 根域名 顶级域名
www.moonsec.com子域名 也叫二级域名
www.wiki.moonsec.com 子域名 也叫三级域名 四级如此类推
域名: 一个 IP 地址的代称,目的是为了方便人们记忆后者
子域名: 在域名系统等级中,高一层域的子域
域名系统(DNS) : 将域名和 IP 地址相互映射的一个分布式数据库,DNS 使用的是 TCP 和 UDP 的 53 端口
实际使用: 以查询 zh.wikipedia.org 为例:
- 客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果
存在记录则直接返回结果。- 如果
记录老化或不存在,则:
端口扫描
服务器需要开放服务,就必须开启端口,常见的端口是 TCP 和 UDP 两种类型
范围 0-65535 通过扫得到的端口,访问服务规划下一步渗透。
查找真实ip
企业的网站,为了提高访问速度,或者避免黑客攻击,用了CDN 服务,用了CDN 之后真实服务器ip会被隐藏。
CDN: 是指一种透过互联网互相连接的电脑网络系统,利用
最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户
探测旁站及C段
旁站: 一个服务器上有多个网站通过ip查询服务器上的网站
c段: 查找同一个段服务器上的网站。可以找到同样网站的类型和服务器,也可以获取同段服务器进行下一步渗透。
C 段: 1.1.1.1的C段是1.1.1.1~255。
网络空间搜索引擎
通过这些引擎查找网站或者服务器的信息,进行下一步渗透。
扫描敏感目录/文件
通过扫描目录和文件,大致了解网站的结构,获取突破点,比如后台,文件备份,上传点。
指纹识别
获取网站的版本,属于那些 cms 管理系统,查找漏洞exp,下载 cms 进行代码审计。
功能: 通过whois来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS解析服务器、注册人联系电话等,因为有些网站信息查得到,有些网站信息查不到,所以推荐以下信息比较全的查询网站,直接输入目标站点即可查询到相关信息。
在线网站备案查询功能: 网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,如果需要查询企业备案信息(单位名称、备案编号、网站负责人、电子邮箱、联系电话、法人等),推荐以下网站查询
查询目标站点的主要域
当找到目标域的所有 IP 范围,可以尝试对这些 IP 进行反向 DNS 查找,以查找范围内更多的域,尝试使用受害者的一些dns服务器或一些知名的dns服务器(1.1.1.1、8.8.8.8)
DNSrecon
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
也可以使用在线工具获取 PTRarchive
就是在已经发现的基础之上,对数据进行二次查询
如果在 2 个不同的页面中找到相同跟踪器的相同 ID,您可以假设这两个页面由同一个团队管理。
例如,如果您在多个页面上看到相同的 Google Analytics ID 或相同的 Adsense ID。
有一些页面可让您通过这些跟踪器等进行搜索:
通过网站图标来找到与目标相关的域和子域
工具: favihash
收集子域名可以扩大测试范围,同一域名下的二级域名都属于目标范围。
子域名中的常见资产类型一般包括办公系统,邮箱系统,论坛,商城,其他管理系统,网站管理后台也有可能出现子域名中
首先找到目标站点,在官网中可能会找到相关资产(多为办公系统,邮箱系统等),关注一下页面底部,也许有管理后台等收获。
查找目标域名信息的方法有:
A 记录、别名记录(CNAME)、MX 记录、TXT 记录、NS 记录
A 记录:
是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。
别名记录:
也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。同样的方法可以用于当您拥有多个域名需要指向同一服务器IP,此时您就可以将一个域名做A记录指向服务器IP然后将其他的域名做别名到之前做A记录的域名上,那么当您的服务器IP地址变更时您就可以不必麻烦的一个一个域名更改指向了 只需要更改做A记录的那个域名其他做别名的那些域名的指向也将自动更改到新的IP地址上了。
如何检测别名记录:
输入命令" nslookup -q=cname 这里填写对应的域名或二级域名",查看返回的结果与设置的是否一致即可。
MX 记录:
邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程。
TXT 记录:
TXT记录一般指为某个主机名或域名设置的说明,如:
1)admin IN TXT “jack, mobile:13800138000”;
2)mail IN TXT “邮件主机, 存放在xxx ,管理人:AAA”,Jim IN TXT “contact: abc@mailserver.com”
也就是您可以设置 TXT ,以便使别人联系到您。
进入命令状态;(开始菜单 - 运行 - CMD[回车]);
输入命令" nslookup -q=txt 这里填写对应的域名或二级域名",查看返回的结果与设置的是否一致即可。
NS 记录:
ns 记录全称为Name Server 是一种域名服务器记录,用来
明确当前你的域名是由哪个DNS服务器来进行解析的。
FOFA 搜索子域名
Layer 子域名挖掘机
SubDomainBrute
Sublist3r
OneForALL
Wydomain
FuzzDomain
隐藏域名 Hosts 碰撞
很多时候访问目标资产IP响应多为:401、403、404、500,但是用域名请求却能返回正常的业务系统(禁止IP直接访问),因为这大多数都是需要绑定host才能正常请求访问的 (目前互联网公司基本的做法)(域名删除了A记录,但是反代的配置未更新),那么我们就可以通过收集到的目标的 域名 和 目标资产 的IP段组合起来,以 IP段+域名 的形式进行捆绑碰撞,就能发现很多有意思的东西。
在发送http请求的时候,对域名和IP列表进行配对,然后遍历发送请求 (就相当于修改了本地的hosts文件一样),并把相应的title和响应包大小拿回 来做对比,即可快速发现一些隐蔽的资产。
进行hosts碰撞需要目标的域名和目标的相关IP作为字典
域名就不说了
相关IP来源有:
目标域名历史解析IP
https://site.ip138.com/
https://ipchaxun.com/
ip正则
https://www.aicesu.cn/reg/
相关工具:
hostscan:自动化Host碰撞工具
Hosts_scan:用于IP和域名碰撞匹配访问的python脚本
尝试使用可能的子域名来寻找新的子域暴力破解 DNS 服务器
最推荐的工具是massdns、 gobuster、 aiodnsbrute和shuffledns。第一个更快但更容易出错(您应该始终检查误报),第二个更可靠。还有其他工具,例如gotator,可帮助通过排列生成 DNS 单词表。
常见的子域列表:
https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056
https://github.com/pentester-io/commonspeak
请注意这些工具如何需要公共 DNS 的 IP 列表。如果这些公共 DNS 出现故障(例如 DNS 中毒),您将得到不好的结果。为了生成受信任的 DNS 解析器列表,您可以从https://public-dns.info/nameservers-all.txt下载解析器并使用dnsvalidator过滤它们。
完成子域查找后,您可以使用dnsgen、 altdns和gotator生成已发现子域的可能排列,并再次使用massdns和gobuster来搜索新域。
当确定了目标大概的ip段后,可以先对ip的开放端口进行探测,一些特定服务可能开起在默认端口上,探测开放端口有利于快速收集目标资产,找到目标网站的其他功能站点。
如果目标网站使用了CDN,使用了CDN 真实的ip会被隐藏,如果要查找真实的服务器就必须获取真实的ip,根据这个ip继续查询旁站。
注意:很多时候,主站虽然是用了CDN,但子域名可能没有使用CDN,如果主站和子域名在一个ip段中,那么找到子域名的真实ip也是一种途径。
多地 ping 确认是否使用 CDN
http://ping.chinaz.com/
http://ping.aizhan.com/
查询历史 DNS 解析记录
在查询到的历史解析记录中,最早的历史解析ip很有可能记录的就是真实ip,快速查找真实IP推荐此方法,但并不是所有网站都能查到。
phpinfo
如果目标网站存在phpinfo泄露等,可以在phpinfo中的SERVER_ADDR或_SERVER[“SERVER_ADDR"]找到真实ip
旁站: 是指一个服务器上有多个网站 ---- Ip 反查 (这里的 IP 指的是服务器 IP)
C 段: xxx.xxx.xxx.xxx/24
旁站往往存在业务功能站点,建议先收集已有IP的旁站,再探测C段,确认C段目标后,再在C段的基础上再收集一次旁站。
扫描敏感目录需要强大的字典,需要平时积累,拥有强大的字典能够更高效地找出网站的管理后台,敏感文件常见的如.git文件泄露,.svn文件泄露,phpinfo泄露等,
御剑
7Kbstorm
bbscan
dirmap
dirsearch
gobuster
网站文件:
1. robots.txt
2. crossdomin.xml
3. sitemap.xml
4. 后台目录
5. 网站安装包
6. 网站上传目录
7. mysql管理页面
8. phpinfo
9. 网站文本编辑器
10. 测试文件
11. 网站备份文件(.rar、zip、.7z、.tar.gz、.bak)
12. DS_Store 文件
13. vim编辑器备份文件(.swp)
14. WEB—INF/web.xml文件
15 .git
16 .svn
https://www.secpulse.com/archives/55286.html
in:name test #仓库标题搜索含有关键字test
in:descripton test #仓库描述搜索含有关键字
in:readme test #Readme文件搜素含有关键字
Github 关键词监控工具
https://github.com/0xbug/Hawkeye
https://github.com/MiSecurity/x-patrol
https://github.com/VKSRC/Github-Monitor
python3 JSFinder.py -u http://www.mi.com -d -ou mi_url.txt -os mi_subdomain.txt
python3 PackerFuzzer.py -u https://www.liaoxuefeng.com
python3 SecretFinder.py -i https://www.moonsec.com/ -e
如果找到了目标的一处资产,但是对目标其他资产的收集无处下手时,可以查看一下该站点的body里是否有目标的特征,然后利用网络空间搜索引擎(如fofa等)对该特征进行搜索,如:body=”XX公司”或body=”baidu”等。
该方式一般适用于特征明显,资产数量较多的目标,并且很多时候效果拔群。
当通过上述方式的找到test.com的特征后,再进行body的搜索,然后再搜索到test.com的时候,此时fofa上显示的ip大概率为test.com的真实IP。
果需要对政府网站作为目标,那么在批量获取网站首页的时候,可以用上 链接之后可以结合上一步的方法进行进一步的信息收集。
SSL/TLS证书通常包含域名、子域名和邮件地址等信息,结合证书中的信息,可以更快速地定位到目标资产,获取到更多目标资产的相关信息。
- https://myssl.com/
- https://crt.sh
- https://censys.io
- https://developers.facebook.com/tools/ct/
- https://google.com/transparencyreport/https/ct/
SSL 证书搜索引擎:
- https://certdb.com/domain/github.com
- https://crt.sh/?Identity=%.moonsec.com
- https://censys.io/
- GetDomainsBySSL.py
目前很多网站使用了cdn服务,用了此服务可以隐藏服务器的真实IP,加速网站静态文件的访问,而且你请求网站服务时,cdn服务会根据你所在的地区,选择合适的线路给予你访问,由此达网站加速的效果,cdn不仅可以加速网站访问,还可以提供waf服务,如防止cc攻击,SQL注入拦截等多种功能,再说使用cdn的成本不太高,很多云服务器也免费提供此服务。在进行黑盒测试的时候,往往成了拦路石,所以掌握cdn找真实ip成了不得不掌握的一项技术。

- http://ping.chinaz.com/
- http://ping.aizhan.com/
- https://www.17ce.com/
- http://ping.chinaz.com/www.t00ls.net
找到真实IP可以继续旁站检测,找其他站点进行突破,也可以绕过cdn进行访问,从而绕过waf针对攻击语句的拦截 发现有攻击语句就会对攻击的IP封堵。(不会有人傻到不挂代理搞事情吧)
通过以下这些网站可以访问dns的解析,有可能存在未有绑cdn之前的记录
通过子域名的解析指向 也有可能指向目标的同一个IP上。
使用工具对其子域名进行穷举
部分cdn只针对国内的ip访问,如果国外ip访问域名 即可获取真实IP
全世界DNS地址:
Censys工具就能实现对整个互联网的扫描,Censys是一款用以搜索联网设备信息的新型搜索引擎,能够扫描整个互联网,Censys会将互联网所有的ip进行扫面和连接,以及证书探测。
若目标站点有https证书,并且默认虚拟主机配了https证书,我们就可以找所有目标站点是该https证书的站点。
通过协议查询
https://censys.io/ipv4?q=((www.t00ls.net) AND protocols: “443/https”) AND tags.raw: “https”&
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:moonsec.com
证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。
获取网站SSL证书的HASH再结合Censys
利用Censys搜索网站的SSL证书及HASH,在https://crt.sh上查找目标网站SSL证书的HASH
再用Censys搜索该HASH即可得到真实IP地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xPrnXIL-1659096050900)(https://typora-1311404666.cos.ap-beijing.myqcloud.com/img/20220729140218.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4C096IB-1659096050901)(https://typora-1311404666.cos.ap-beijing.myqcloud.com/img/20220729140222.png)]
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,
例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小
节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,
以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就
是最后的真实ip。
rverpool-cas01=3255675072.20480.0000; path=/
3255675072 转十六进制 c20da8c0 从右向左取 c0a80dc2 转10进制 192 168 13 194
使用抓包工具进行分析
在配置CDN的时候,需要指定域名、端口等信息,有时候小小的配置细节就容易导致CDN防护被绕过。
案例1:为了方便用户访问,我们常常将www.test.com 和 test.com 解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com,就可以绕过 CDN 了。
案例2:站点同时支持http和https访问,CDN只配置 https协议,那么这时访问http就可以轻易绕过。
获取目标站点的 banner,在全网搜索引擎搜索,也可以使用AQUATONE,在Shodan上搜索相同指纹站点。
可以通过互联网络信息中心的IP数据,筛选目标地区IP,遍历Web服务的banner用来对比CDN站的banner,可以确定源IP。
欧洲: http://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest
北美: https://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
亚洲: ftp://ftp.apnic.net/public/apnic/stats/apnic/delegated-apnic-latest
非洲: ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
拉美: ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest
获取CN的IP: http://www.ipdeny.com/ipblocks/data/countries/cn.zone
例如:
找到目标服务器 IP 段后,可以直接进行暴力匹配 ,使用zmap、masscan 扫描 HTTP banner,然后匹配到目标域名的相同 banner
zmap -p 80 -w bbs.txt -o 80.txt使用zmap的banner-grab对扫描出来80端口开放的主机进行banner抓取。
cat /root/bbs.txt |./banner-grab-tcp -p 80 -c 100 -d http-req -f ascii > http-banners.out
根据网站返回包特征,进行特征过滤
location: plugin.php?id=info:index
https://fofa.so/
title=“T00LS | 低调求发展 - 潜心习安全 - T00ls.Net”
https://www.zoomeye.org/
title:“T00LS | 低调求发展 -潜心习安全 -T00ls.Net”
https://quake.360.cn/
response:“T00LS | 低调求发展 - 潜心习安全 - T00ls.Net”
在长期渗透的时候,设置程序每天访问网站,可能有新的发现。每天零点 或者业务需求增大 它会换ip 换服务器的。
发包机可以一下子发送很大的流量。
这个方法是很笨,但是在特定的目标下渗透,建议采用。
cdn除了能隐藏ip,可能还考虑到分配流量,
不设防的cdn 量大就会挂,高防cdn 要大流量访问。
经受不住大流量冲击的时候可能会显示真实ip。
站长->业务不正常->cdn不使用->更换服务器。
被动获取就是让服务器或网站主动连接我们的服务器,从而获取服务器的真实IP
如果网站有编辑器可以填写远程url图片,即可获取真实IP
如果存在ssrf漏洞 或者xss 让服务器主动连接我们的服务器 均可获取真实IP
https://github.com/superfish9/hackcdn
https://github.com/boy-hack/w8fuckcdn
http://ipwhois.cnnic.net.cn/index.jsp
- QQ群 QQ手机号
- 微信群
- 领英
- https://www.linkedin.com/
- 脉脉招聘
- boss招聘
安全防护 云waf、硬件waf、主机防护软件、软waf