信息收集

一、域名信息收集

1.获取域名的whois信息是、

什么是Whois

Whois是一种传输协议,用于查询域名注册所有者等信息。它可以帮助您查询域名是否已被注册,以及获取有关已注册域名的详细信息,例如域名注册商和域名所有人。

早期的Whois查询通常使用命令行接口。现在,一些网页接口简化了在线查询工具,使您可以一次向多个数据库查询。无论使用哪种方式,这些工具仍然依赖Whois协议向服务器发送查询请求。命令行接口工具仍然被系统管理员广泛使用。

Whois通常使用TCP协议43端口。每个域名/IP的Whois信息由对应的管理机构保存。

使用Whois查询,您可以获得域名注册者的电子邮件地址等信息。对于中小型网站,域名注册者通常是网站管理员。您还可以利用搜索引擎对Whois查询到的信息进行搜索,以获取更多有关域名注册者的个人信息

Whois查询网站

以下是常用的Whois查询网站

此处用站长之家的whois查询为示例, 输入你要查询的网站域名,此处我以博客园域名为例(cnblogs.com)

通过whois反查域名的联系人和联系邮箱获取更多信息

2.备案信息查询

备案信息的作用

备案信息对于打击不良互联网信息传播,防止非法网站经营活动非常重要。如果网站没有进行备案,很可能会被查处并关停。备案信息可以提供网站的所有者、运营者、主办单位等相关信息,有助于网站的规范管理和监管。

此外,备案信息还是企业申请营业执照、税务登记证、开展网上交易等业务的必要条件之一。因此,对于任何想要在互联网上开展合法经营活动的组织或个人来说,进行备案是必不可少的一步

备案信息查询网站

以下是常用的查询备案信息的网站:

如下图所示为博客园域名的备案信息

3.子域名收集

子域名的概念

常见的子域名资产类型包括办公系统、邮箱系统、论坛、商城、其他管理系统和网站管理后台等。

这些资产通常可以在目标站点的官网上找到相关信息。探测和分析子域名中的各种资产类型是提高安全性和减少风险的重要步骤,对于黑客或安全研究人员来说尤为重要

子域名查询网站

  • https://phpinfo.me/domain/

  • https://www.t1h2ua.cn/tools/

  • https://dnsdumpster.com/

  • https://site.ip138.com/

  • https://hackertarget.com/find-dns-host-records/

如下图所示对博客园域名进行子域名爆破

使用fofa搜索博客园的子域名:domain="cnblogs.com"

将搜索的资产导出来并下载, 通过分析大概得知目标域名的大概ip段

DNS侦测网站

DNS侦测指的是一种网络安全测试技术,其主要目的是通过查询DNS服务器获取目标主机的DNS记录信息,并分析这些信息来获得有关目标主机的详细信息,例如IP地址、主机名、域名、子域名、MX记录等。通过对DNS记录的分析,可以揭示出目标主机的一些潜在安全风险,例如未授权的子域名、未经授权的主机等等

以下是常用的DNS侦测网站:

  • https://dnsdumpster.com/

  • https://dnslytics.com/

如下图所示, 对博客园域名做DNS侦测

4.host碰撞发掘隐藏域名

什么是隐藏域名

隐藏域名指的是通过限制IP直接访问的方式,将网站的主要业务通过域名进行访问的一种技术手段。这种做法在访问目标资产IP时通常会返回401、403、404、500等错误响应,但是用域名请求却能够正常访问业务系统。这是现代互联网公司常用的一种方式,可以有效增强网站的安全性和稳定性。

大多数域名需要绑定host才能正常请求访问。因此,可以通过将收集到的资产域名和IP地址结合起来,以IP段+域名的形式进行捆绑碰撞,来发现隐藏的资产

实战演示

首先通过微步在线查询目标网站的当前解析ip和历史解析ip, 此处收集cnblogs.com的当前解析ip有101.37.113.127121.40.43.188

而历史解析IP足足有17条

再用fofa或者其他子域名爆破工具收集博客园网站的子域名

打开Hosts_scan工具, 将收集到的ip和域名分别填入其目录下的ip.txthost.txt

在Hosts_scan工具的文件夹有IP_hosts_scan.py(单线程)和IP_hosts_scan_multithreading.py(多线程), 这里执行IP_hosts_scan_multithreading.py

python3 IP_hosts_scan_multithreading.py

当工具扫描完毕后可在hosts_ok.txt查看扫描结果

二、绕CDN获取真实ip

CDN的概念

CDN是Content Delivery Network的缩写,即内容分发网络。CDN通过在全球各地分布式部署节点,解决了跨运营商和跨地域访问的问题,大大降低了访问延迟。CDN的边缘节点可以处理大部分的请求,从而分流流量,有效减轻了网站服务器的负载。

当网站采用CDN技术时,我们需要对CDN进行绕过才能获取到网站的真实IP地址。CDN在网络安全中也起到了保护作用,可以对网站进行缓存、加速、负载均衡、防护等操作。同时,CDN也可以提高网站的可用性和稳定性,提升用户体验

判断网站是否存在CDN

通过对目标服务器进行多地ping测试来判断CDN是否存在

多地ping: 对目标服务器使用不同地区进行ping测试

以下是常用的多地ping网站:

例如此处对博客园网站www.cnblogs.com进行多地ping测试, 此处测试结果出现了多个响应IP, 则代表此网站使用了CDN技术

绕过CDN的方法

1.空间搜索cert证书

此处以博客园网站为例, 首先查看博客园网站源码来获取title值:"博客园 - 开发者的网上家园"

随后用谷歌浏览器查看网站的证书序列号(16进制), 随后将此序列号转换成10进制

什么是网站证书序列号:网站的证书序列号(Certificate Serial Number)是数字证书中唯一标识该证书的一个序号。在SSL/TLS加密协议中,证书序列号是证书中的一个重要元素,它由证书颁发机构(CA)在证书颁发时生成,并与证书内容一起签名。证书序列号通常是一个大于等于零的整数,并且必须是唯一的。在HTTPS通信中,当客户端向服务器发起连接请求时,服务器会将自己的数字证书发送给客户端,客户端会验证证书的合法性,并且会检查证书序列号是否与之前保存的序列号一致,以保证通信的安全性。证书序列号也可以用于证书吊销、证书更新等操作中

03E3AC5347CD4A3862C2855A71A6F94F(十六进制) => 5169830546853086247231079365397117263(十进制)

打开fofa网站, 输入country="CN" && title="博客园 - 开发者的网上家园" && cert="5169830546853086247231079365397117263", 查询返回3条独立ip, 随后依次匹对html源码来筛选出网站的真实ip

2.查询历史DNS解析记录

在查询到的历史解析记录中,最早的历史解析ip很有可能记录的就是真实ip,快速查找真实IP推荐此方法,但并不是所有网站都能查到。如下为常用的DNS解析网站

  • DNSDB: https://dnsdb.io/zh-cn/

  • 微步查询: https://x.threatbook.com

个人认为微步查询网站最为有效, 此处查询博客园网站的dns历史解析记录

3.空间搜索ico图标

可以通过浏览器F12或者目录文件扫描工具查找目标网站的ico图标并将其下载, 通常图标文件名为favicon.ico

将ico文件拖入fofa网站即可查询到真实ip

4.SSL证书查询真实IP

证书颁发机构(CA)必须将其发布的每个SSL/TLS证书发布到公共日志中。SSL/TLS证书通常包含域名、子域名和电子邮件地址等敏感信息,因此成为攻击者进行攻击和侵入的切入点之一

首先在https://crt.sh上查找目标网站(www.t00ls.com)的SSL证书:B8FDB19E5538CABC0F33F73347A7C50CB0FEAC60851504B4CD0B94F570A504E8

随后点击SSL证书的hash跳转至censys网站, 搜索功能切换至Hosts来搜索真实IP,此处查询到的真实ip为47.243.238.59

5.邮箱获取真实IP

当网站向你的电子邮箱发送邮件时,通常会在邮件的头部中附带发送服务器的IP地址信息。通过在邮件客户端中点击“显示邮件原文”等选项,可以查看到完整的邮件头部信息,包括发件人、收件人、主题、发送时间等内容,以及发送服务器的IP地址。邮件发送服务器的IP地址可能是该网站的真实IP地址,也可能是中转服务器的IP地址

6.网站敏感文件泄露

例如phpinfo文件泄露, 查看$_SERVER['SERVER_ADDR']即可获取真实ip

7.F5 LTM解码

当服务器使用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。

8.获取APP和小程序IP

burpsuite配置代理服务器:192.168.132.1:8080

下载mumu模拟器后打开浏览器访问代理服务器, 然后右上角的CA Certificate下载CA证书

打开文件管理器的$MuMu共享文件夹, 双击cacert.der将证书命名为burpsuite, 随后会要求你设置pin码

转到WLAN设置, 长按连接的wifi修改网络, 将其HTTP代理设置为burpsuite代理服务器(192.168.132.1:8080)

配置完成后开始使用Burpsuite进行抓包, 例如抓取Bilibili的发包ip, 此处数据包的域名为data.bilibili.com

对以上域名进行ping测试发现此域名做了CDN, 后续还得继续寻找真实ip

也可以抓小程序的包来获取域名ip, 步骤和上述一致, 下图为抓取我校外卖小程序的数据包

9.网站配置不当

有些网站为了方便用户访问, 会将www.test.comtest.com解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com就可绕过 CDN 。

同样地,如果站点同时支持http和https访问,但是CDN只配置 https协议,那么这时访问http就可以轻易绕过CDN

10.扫描全网获取真实ip

先省略

三、端口扫描

常见的端口服务

nmap扫描工具

Nmap是一款高效的端口扫描工具,功能丰富、操作简单,能够扫描出目标主机上开放的端口,还能进行操作系统、服务版本等信息探测,并能够识别各种类型的防火墙、IDS等安全设备。Nmap支持多种扫描技术,包括TCP、UDP、SYN、ICMP等,支持多种操作系统,包括Windows、Linux、macOS等,输出结果清晰明了,能够帮助安全人员快速定位目标漏洞并进行修复

命令参数

  • -v: 显示扫描过程

  • -A: 全面系统检测,启用脚本检测扫描

  • -p: 指定端口

  • -O: 探测目标系统的操作系统,但可能出现误报

  • -sV: 获取目标服务版本信息

  • -sn: 查看目标是否在线

  • -sT: TCP扫描,可能在目标主机日志留下记录

  • -sU: UDP扫描,较慢

  • -Pn: 适用于防火墙禁PING扫描

  • -iL:扫描IP段

  • --script:搭配脚本进行扫描

常用操作

1. 扫描C段主机存活数

Nmap -sn 192.168.1.0/24

2. 跳过ping扫描主机(防止主机关闭了ping检测)

Nmap -Pn 192.168.0.1

3. 列出C段主机,且不留痕迹

Nmap -sL 192.168.0.0/24

4. 探测目标主机IP C段指定的端口

Nmap -pS80,443 192.168.0.0/24   //SYN扫描

Nmap -pU80,443 192.168.0.0/24  //UDP扫描

5. 扫描目标主机服务版本号与开放的端口

nmap -sU -sT -p0-65535 192.168.122.1

6. 扫描多个IP或者IP段, 将IP存到ip.txt文件中

nmap -iL ip.txt

搭配脚本

1. 扫描网站敏感目录

Nmap -p 80 --script=http-enum.nse www.xxx.com

2. 绕开鉴权,也可以检测弱口令

Nmap -p 80 --script=auth www.xxx.com

3. 使用默认脚本,收集到信息后对具体服务进行攻击

Nmap -p 80 --script=default www.xxx.com

4. 检测常见的Web漏洞

Nmap -p 80 --script=vuln www.xxx.com

图形化界面Zenmap

在线端口检测网站

  • HackerTarget:提供简单易用的在线端口扫描工具,支持Nmap、Zmap等多种扫描方式,同时提供扫描报告和漏洞扫描服务。

  • Pentest-Tools:提供在线的TCP端口扫描工具,支持Nmap和Masscan两种扫描方式,可以自定义端口范围和扫描选项。

  • Port Checker:提供简单易用的在线端口扫描工具,支持常见的TCP和UDP端口扫描,同时提供IP地址查询、DNS解析等功能。

  • IPVoid:提供在线的TCP和UDP端口扫描工具,可以自定义端口范围和扫描选项,同时提供域名查询和反向IP查询等功能。

  • T1Shopper:提供简单易用的在线端口扫描工具,支持TCP和UDP端口扫描,同时提供WHOIS查询、DNS解析等功能

  • coolaf:提供在线端口扫描

如下图所示,对一个网站进行端口扫描

四、旁站C段

什么是旁站与C段

  • 旁站: 指与目标站点在同一服务器但不同端口的站点。

  • C段: 指与目标站点在同一服务器C段的站点,通常为同一台物理服务器或同一组服务器。可通过C段扫描查找其他潜在目标站点或系统

在线网站查询

如下是查询旁站C段的常用网站:

  • http://stool.chinaz.com/same

  • https://chapangzhan.com/

  • https://c.webscan.cc/

例如此处我要查找的ip为104.21.18.55, 打开网站https://chapangzhan.com/输入要查找的ip,查询结果显示了在同一C段的站点, 单击ip还可以查看其绑定了哪些域名

网络空间搜索

使用Fofa搜索旁站, 只需输入ip="104.21.18.55", 会显示该ip下不同端口及对应的应用服务

若要搜索C段则输入ip="104.21.18.0/24"

五、敏感文件泄露

扫描工具

1.御剑

在其配置文件目录可以设置爆破字典

运行御剑, 添加需扫描的网址和选择爆破字典

2.7kbstorm

3.bbscan

先用pip2.7安装工具所需的库

pip2.7 install -r requirements.txt

扫描单个web服务, 例如扫描www.test.com

python2 BBScan.py --host www.test.com

扫描www.test.com/28的所有主机

python2 BBScan.py --host www.test.com --network 28

--network: 设置子网掩码, 小公司设为2830, 大公司设为2426

扫描hosts.txt文件下的所有主机

python2 BBScan.py -f hosts.txt

4.dirsearch

使用参数

dirsearch下载地址: git clone https://github.com/maurosoria/dirsearch.git

工具使用参数如下:

常用操作

1.扫描url.txt文件里的所有url

dirsearch.py -l url.txt

2.扫描指定网站的php文件,以及排除403状态码

dirsearch.py -u http://127.0.0.1  -e php,zip -x 403

3.扫描所有类型并且设置线程为20

 dirsearch.py -u http://127.0.0.1 -e* -t 20

4.使用自定义字典扫描

dirsearch.py -u http://127.0.0.1  -e* -w db/php.txt

5.使用随机ua头且指定cookie扫描

dirsearch.py -u http://127.0.0.1  -e* --random-agents -c "user=Mo60;"

源码泄露

1..Git泄露

简介

Git是一个主流的分布式版本控制系统,开发人员经常会遗忘.git文件夹从而导致源码泄露

  • 此处演示的靶场环境为:https://www.ctfhub.com/#/skilltree

  • 使用的工具为:GitHacker

使用kali linux安装GitHacker: pip3 install GitHacker, 安装完后即可使用githacker命令

漏洞利用

githacker使用方法如下:

githacker --url <网站地址> --output-folder <输出文件夹>
githacker --url http://challenge-ac6c09cab4c14575.sandbox.ctfhub.com:10800/ --output-folder 1

进入输出文件夹查看执行结果:ls -a

查看操作日志: git log

发现存在3个日志操作, 分别是移除flag、添加flag和初始化, 我们要做的是回滚到含有flag日志的git版本(即添加flag的日志操作),使用git reset --hard <版本号> 命令, 然后再查看含有flag的txt文件

git reset --hard aaee477e0d92f40ba5bff4b1fd0529f553abca43

2..Svn泄露

简介

SVN是源代码版本管理软件,在使用Svn管理本地代码过程中,会自动生成名为.svn的隐藏文件夹,其中包含重要的源码信息,但一些网站管理员在发布代码时,不愿意使用“导出”功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境

黑客可以借助其包含版本信息追踪的entries文件来以此摸清站点结构, 通常此文件的目录为: .svn/entries

  • 使用的工具为: Seay-Svn

漏洞利用

打开Seay-Svn工具, 添加.svn/entries文件的目录地址, 随后即可下载源码文件

解决方案

  • 不要使用svn checkoutsvn up更新服务器上的代码,使用svn export(导出功能)代替

  • 服务器软件(Nginx、apache、tomcat、IIS)等设置目录权限,禁止访问.svn目录

3..Hg泄露

简介

在初始化项目时, HG会在当前文件夹下创建一个.hg隐藏文件夹, 此文件夹下包含代码和分支修改记录等信息

  • 漏洞利用工具: dvcs-ripper

漏洞利用

rip-git.pl -v -u http://www.example.com/.git/

4..Ds_Store泄露

简介

在发布代码时未删除文件夹中隐藏的.DS_Store文件, 从而导致敏感文件泄露

  • 漏洞利用工具: dsstoreexp

漏洞利用

python2 ds_store_exp.py http://www.example.com/.DS_Store

5.WEB-INF泄露

简介

WEB-INF 是Java Web应用程序的安全目录。要在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射。

通常,某些Web应用程序会使用多个Web服务器进行搭配,以解决单个Web服务器的性能瓶颈、实现负载均衡优势和实现分层结构的安全策略等。在使用这种架构时,由于对静态资源的目录或文件的映射配置不当,可能会引发安全问题,导致 web.xml 等文件被意外暴露

WEB-INF主要包含以下的文件或目录:

漏洞利用

通过找到 web.xml 文件,可以推断出 class 文件的路径,然后直接访问 class 文件。通过反编译 class 文件,可以获取网站的源代码。

通常情况下,JSP引擎默认禁止访问 WEB-INF 目录。但是,在使用Nginx配合Tomcat进行负载均衡或集群等操作时,可能会出现安全问题。问题的原因在于,Nginx不会考虑到其他类型引擎(如JSP引擎)所导致的安全问题,并将其纳入自身的安全规范中(这样的耦合性太高)。因此,要解决这个问题,可以修改Nginx的配置文件,禁止访问 WEB-INF 目录:

javascriptCopy codelocation ~ ^/WEB-INF/* {
    deny all;
}

或者返回404错误:

javascriptCopy codelocation ~ ^/WEB-INF/* {
    return 404;
}

js敏感信息

网站的url链接写到了js里面, 而js的api接口里包含用户相关信息

以下介绍几款扫描js的api接口的工具

1.JsFinder

使用参数

常用操作

1.深度扫描指定网站的js敏感信息

python3 JSFinder.py -u https://www.cnblogs.com/ -d

2.批量扫描指定url文件

python3 JSFinder.py -f url.txt 

3.将扫描到的url和子域名分别保存在url.txt和domain.txt文件中

python3 JSFinder.py -u https://www.cnblogs.com/ -d -ou url.txt -os domain.txt

2.Packer-Fuzzer

简介

随着Web前端打包工具的流行,越来越多的网站使用以Webpack为代表的打包器构建。通常,这类打包器生成的JS文件数量和代码量都非常庞大,给手工测试带来了很大的不便。因此,Packer Fuzzer软件应运而生。

Packer-Fuzzer是一款针对Webpack等前端打包工具构建的网站进行快速扫描的工具。

使用方法

python3 PackerFuzzer.py -u http://www.lingnan.edu.cn/

扫描的结果保存在reports目录,结果文件后缀名为html和docx

六、CMS识别

CMS的概念

CMS是Content Management System的缩写,即内容管理系统。它是一种用于网站内容管理的软件,允许用户通过简单的操作方式来发布、修改、删除网站上的内容。常见的CMS包括WordPress、Joomla、Drupal等,它们提供了丰富的功能和插件,方便用户进行网站建设和管理。

在渗透测试中,CMS的概念通常指通过对网站进行指纹识别来确定所使用的CMS类型以及版本信息。这对于攻击者来说非常重要,因为不同版本的CMS可能存在不同的漏洞和安全问题。攻击者可以利用漏洞来入侵目标网站,甚至获取网站管理员的权限,造成更大的安全威胁

在线查询cms网站

  • 云悉: http://www.yunsee.cn/

  • 潮汐指纹: http://finger.tidesec.net/

  • bugscaner: http://whatweb.bugscaner.com/look/

Kali的WhatWeb命令

WhatWeb 是一个开源的网络指纹识别工具,用于识别 Web 应用程序的技术栈。它能够自动扫描网站并快速地获取有关目标站点的信息,包括 Web 服务器的类型、运行的脚本语言、Web 应用程序框架、Web 应用程序的版本号、CMS 系统以及其他有用的信息

使用参数

以下是WhatWeb命令的常用参数:

  • -v:输出详细信息

  • -a:设置并发数

  • -o:将输出结果写入文件

常用操作

1.扫描单个站点:

whatweb www.example.com

2.扫描多个站点:

whatweb www.example.com www.test.com

3.输出结果到文件:

whatweb -v -a 3 -o /path/to/output.txt www.example.com

最后更新于