WEB信息收集精简(写给入门的你)

世界杯比赛时间表 2025-08-10 05:47:16

一 、综述

这里先综述一下信息收集的分类以及要收集的信息以及收集目的。

信息收集大致可以分为主动和被动两种。被动信息收集:利用第三方的服务对目标进行访问:Google搜索、Shodan搜索、其他综合工具,被动信息收集是指京可能多低收集与目标相关的信息。主动信息收集:通过直接扫描目标主机或者网站,主动方式能获取更多的信息,目标系统可能会记录操作信息。

需要收集的信息直接列举一下:目标主机的DNS信息、目标IP地址、子域名、旁站和C段、CMS类型、敏感目录、端口信息、操作系统版本、网站架构、漏洞信息、服务器与中间件信息、邮箱、人员、地址等。

这里简单介绍一下以上信息收集的目的。收集DNS信息和IP本质上是一回事,都是为了定位目标在网络了的地址,为下一步的渗透测试做准备的。

子域名的收集主要目的就是曲线渗透进攻,收集子域名的操作也叫子域名爆破,顾名思义,就是「枚举」所有可能存在的子域名(实用工具枚举,下面会演示两种工具)。通常,一台服务器上有很多个站点,这些站点之间没有必然的联系,是相互独立的,使用的是不同的域名(甚至端口都不同),但是它们却共存在一台服务器上如果我们要对某一个站点进行直接渗透无法突破时,那么我们可以对同服务器的其他站点进行渗透,只要能打破一个缺口,就能沦陷服务区上的整个站点,甚至是一个集群。

旁站和C段的思路也是曲线渗透。旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的webshell,然后再提权拿到服务器的权限。C段指的是同一内网段内的其他服务器,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。

CMS即内容管理系统是让内容的创作人员、编辑人员、发布人员来提交、修改、审批、发布内容的。收集其信息也是很有必要的。

而敏感目录能干的事情就很多了,某些网站的安全做的很好,直接通过技术层面无法完成渗透。因此就要搜索暴露在互联网上的信息。如:数据库文件,SQL注入,服务器配置信息,甚至通过Git找到站点的源代码,以及Redis等未授权访问、robots.txt敏感信息等。一般我们会收集到用户名密码,邮箱,源代码等信息。可以用来撞库,登录某些管理后台,从代码角度分析漏洞。敏感目录扫描能够得到其他网页的很多信息,找到后台管理页面,尝试进入后台,然后提升权限等扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄露。

端口是用来区分不同的网络服务的,了解端口可以实现对网络应用的精准渗透。包括服务器和中间件的收集,也是为了进一步的明确目标。

端口扫描 (1)端口 在网络技术中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口,如ADSL Modem、集线器、交换机、路由器上用于连接其他网络设备的接口。逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。我们这里讲的是逻辑端口。

端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务,端口号25指的是SMTP服务等。

而端口扫描的实质就是通过端口与计算机网络服务进行交互并进行信息收集的过程。通过对所有端口发送信息,然后分析返回信息来判断目标主机的弱点所在。

(2)Nmap——扫描之王

首先这里先附上下载配置连接: 网络扫描神器:Nmap 保姆级教程(附链接)_虚拟机怎么安装nmap-CSDN博客

这里对其常用参数进行说明:

Pn: 该参数用于穿透防火墙进行扫描,不需要先进行ping探测。例如:nmap -Pn 。-sS: 执行半开放扫描(SYN扫描),这种扫描方式不会在目标主机的日志中留下记录,但需要Root权限。-sT: 执行TCP connect()扫描,这种方式会在目标主机的日志中记录连接请求和错误信息。-sU: 执行UDP扫描,但这种扫描方式相对不太可靠。-sV: 探测端口服务版本,可以获取服务的详细版本信息。-O: 启用远程操作系统检测,但可能存在误报。-A: 进行全面系统检测,包括脚本扫描和版本探测。-p: 指定端口范围或特定端口,例如:nmap -p 1-65535 或 nmap -p 80,443。

注意,默认扫描主机1000个高危端口,指定扫描全体端口则要使用“nmap -p 1-65535”或“-p-”;

-T4: 设置扫描的速度,T4是一个中等速度,适合大多数情况。-v: 显示扫描过程,增加输出的详细程度。

oN: 将扫描结果以标准格式输出到文件。

-oX: 将扫描结果以XML格式输出,便于其他程序处理。

-oG: 将扫描结果以grepable格式输出,方便使用grep工具进行分析。

--open: 只显示状态为open的端口,即开放的端口。

--min-hostgroup: 调整并行扫描组的大小,可以提高扫描效率。

--min-parallelism: 调整探测报文的并行度,同样可以提高扫描效率。

--host-timeout: 设置主机检测超时时间,超时则跳过该主机。

Nmap还可以安装自己的或者下载的插件引擎执行操作。通过“—script=脚本名称”命令执行。下面简单介绍几个引擎。

扫描web敏感目录:namp -p 80 –script=http.enum.exe www.zhihuishu.com

扫描SQL注入漏洞:namp -p 80 –script=sql-injection.nse www.zhihuishu.com

使用所有脚本进行扫描: namp -p 80 –script all www.zhihuishu.com.当然,这个非常慢

使用通配扫描:namp -p 80 –script“http.*” 127.0.0.1 这个意思是以所有开头是http的脚本扫描

(3)实战

下面我们在真实环境中进行实战(注意,IP地址根据具体网络环境可能有所不同),靶机的下载地址为https://www.vulnhub.com/entry/rickdiculousy-easy-1,207/(镜像导入方式请参考之前内容)。

□ 靶机地址为192.168.1.233,操作系统为Federal。

□ 攻击机地址为192.168.1.222,操作系统为Kali Linux。

扫描命令为:

nmap -sT -A -p1-65535 -T4 -O -sV 192.168.1.233

在CTF Web赛题中,通常无须隐藏扫描,除非防火墙绕过或者痕迹隐藏也是题目的考点之一,但这一类题目极少,且本环境不属于这一类。所以在扫描中,无须使用ss、sn、sF等参数。

□ -sT 表示使用TCP扫描,这也是CTF Web题目的一个特点。通常存在漏洞的服务都是基于TCP的,而基于UDP的占少数。当然,我们还是要进行扫描,但是TCP和UDP扫描不能同时使用。因此,在CTF Web中,TCP扫描具有更高的优先级。

□ -A 表示使用Nmap内置的漏洞测试脚本来对服务进行简单的自动化漏洞挖掘,保留这个参数偶尔能提升发现漏洞的效率。

□ -p1-65535 该参数用于指定端口扫描的范围,1-65535表示进行全端口扫描,配合sT参数,即表示进行TCP全端口扫描。

□ -O 代表操作系统指纹识别。

□ -sV 用于输出更详细的信息。

扫描结果如下:

Nmap scan report for 192.168.1.233

Host is up (0.0010s latency).

Not shown: 65528 closed ports

PORT STATE SERVICE VERSION

21/tcp open ftp vsftpd 3.0.3

| ftp-anon: Anonymous FTP login allowed (FTP code 230)

| -rw-r--r-- 1 0 0 4822 Aug 20 2017 FLAG.txt

| -rw-rw-r-- 2 0 0 6 Feb 12 2017 pub

| ftp-syst:

| STAT:

| FTP server status:

| Connected to ::ffff:192.168.1.222

| Logged in as ftp

| TYPE: ASCII

| No session bandwidth limit

| Session timeout in seconds is 300

| Control connection is plain text

| Data connections will be plain text

| At session startup, client count was 4

| vsFTPd 3.0.3 - secure, fast, stable

|_End of status

22/tcp open ssh fingerprint-strings:

| NULL:

|_ Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64)

|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)

80/tcp open http Apache httpd 2.4.27 (Fedora)

| http-methods:

|_ Potentially risky methods: TRACE

|_http-server-header: Apache/2.4.27 (Fedora)

|_http-title: Morty's Website

9090/tcp open http Cockpit web service

|_http-title: Did not follow redirect to https://192.168.1.233:9090/

3337/tcp open unknown

| fingerprint-strings:

| NULL:

|_ Welcome to Ricks baked backer shell...

|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)

3 services unrecognized despite returning data. If you know the service/

version, please submit the following fingerprints at https://nmap.org/

cgi-bin/submit.cgi?new-service

|_NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)

|_SF-Port22-TCP:V=7.80%I=7%D=3/12%Time=5FOACB43%P=65535:6616-pc-linux-gnu%r(N

ULL,F4,"Welcome\x20to\x20Linux\x204\x2e4\x2e0\x2d31\x2dgeneric\x20x86_64\n

")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2e0)

\n")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2e

0)\n");

|_NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)

|_SF-Port3337-TCP:V=7.80%I=7%D=3/12%Time=5FOACB43%P=65535:6616-pc-linux-gnu%

r(NULL,F4,"Welcome\x20to\x20Linux\x204\x2e4\x2e0\x2d31\x2dgeneric\x20x86_64

\n")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2e

0)\n")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2

e0)\n");

|_NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)

|_SF-Port60000-TCP:V=7.80%I=7%D=3/12%Time=5FOACB49%P=65535:6616-pc-linux-gnu

%r(NULL,F4,"Welcome\x20to\x20Linux\x204\x2e4\x2e0\x2d31\x2dgeneric\x20x86_64

\n")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2e

0)\n")%r(OpenSSH,2F,"Welcome\x20to\x20OpenSSH\x207\x2e5\x20(Protocol\x202\x2

e0)\n");

MAC Address: 8C:95:90:55:30:EB (Apple)

Device type: general purpose

Running: Linux 3.X|4.X

OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4

OS details: Linux 3.2 - 4.9

Network Distance: 1 hop

Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

从结果中可以看出,目标开放了7个TCP端口:21、22、80、13337、22222、60000

和9090。同时,通过观察返回的服务信息,我们也可以发现,端口与服务之间并没有绝

对的对应关系。理论上,任意服务都是可以在任意端口上开放的,只不过根据标准规

定,默认那些端口号代表固定的网络服务,例如21端口代表FTP、22端口代表SSH等。

实际上,在CTF中,很多时候这种对应关系并不是绝对的。

通过Nmap的 -A参数,会默认执行内置的漏洞测试脚本,如图4.1.2所示。在本环境中,

Nmap对FTP服务尝试用Anonymous账户登录。Anonymous账户是FTP默认的一种

登录方式,用户可以在不提供密码的情况下,使用Anonymous账户登录FTP服务器。

这里展示了21端口的扫描结果,这里可以看见FTP服务器根目录下存在FLAG.txt文件,这里需要我们远程登陆获取,用户名为Anonymous,密码空

这里读取文件即可拿到flag

继续往下看,可以发现13337端口直接返回了一个flag

这里依据扫描信息,可以看见80 和 9090是web服务,访问发现9090存在flag,这里还可以查看有无漏洞以继续深入挖掘,但是这里不讨论。

此时还有22端口、22222端口和60000端口,前两个端口运行的都是SSH服务,需要用户名和密码,在端口扫描阶段,我们暂不进行尝试。尝试连接60000端口,这里我们使用Kali内置的nc工具进行端口连接。

Netcat是一款简单的UNIX工具,使用UDP和TCP,通常被用作网络的测试工具或黑客工具,素有“黑客工具中的瑞士军刀”的美誉。使用如下命令行:

nc 192.168.1.233 60000

直接得到一个shell,其当前目录下存在FLAG,直接读取即可。

二 目录探测

目录探测,也称为目录扫描,是Web安全中常用的一种漏洞挖掘技术。通过目录探测,攻击者可以了解目标站点的结构,寻找敏感文件(目录名、探针文件、后台、robots.txt、备份文件等)。但需要注意的是,某网站存在某个Web漏洞,往往并不代表该网站的所有页面都存在这个漏洞,而只是某些特定页面存在该漏洞。这些页面就需要通过目录探测来进一步发现和挖掘漏洞,这也是目录探测的另一个作用,即发现潜在的漏洞风险点。

根据探测的手法,目录探测技术大致分为三类:一类是基于目标的页面内容,一类是基于字典,还有一类是单纯爆破的方式。基于目标的页面内容的探测实际上类似于爬虫,即根据页面中包含的URL进行探测,优点是命中率高,且能发现一些特殊命名(例如根据管理员喜好来命名)的目录页面,缺点是探测结果比较少,遗漏页面较多(很多敏感页面的URL并不会显示在页面内容里)。基于字典的探测是根据字典内容对目标路径进行爆破,优点是发现敏感页面的概率更高,缺点是非常依赖字典的质量。基于单纯爆破的探测方法相对简单,它不需要字典,也不需要爬虫,只需要按照一定规则(例如纯数字、纯字母之类)生成目录名,然后进行探测即可。从某种角度来说,这可能是最行之有效的方式,因为不用考虑其他因素,这种方式最终可以得到所有目录信息(在无限的时间内生成无限多的目录名)。

通常来讲,在进行目录探测时,这些技术并不冲突,往往可以结合使用,但需要考虑使用的顺序。一般会先使用前两种技术然后在进行爆破一堆结果进行补充。这里需要注意的是工具探测的返回信息是HTTP的状态码。

下面介绍CTF里的目录探测出题思路:

1)源码:CTF比赛中的Web渗透题目与实际渗透测试的最大不同在于,目标一定是有漏洞且可以被攻击的。为了实现这一点,出题人通常需要为选手预置一些提示信息或漏洞信息。为防止这类题目变成“脑洞题”,提供源码是一个比较好的选择。此外,如果漏洞类题目没有源码,解题的难度会非常大,例如挖掘反序列化类的漏洞。在具体题目中,有可能涉及文件泄漏,例如index.php.bak、www.zip、www.tar.gz等文件,也可能涉及开发环境信息泄漏,例如.git/svn信息泄漏。

2)提示页面/信息:此时通常在网页中给出提示页面,或者在备注中给出源码。提示页面通常和robots协议相关。robots协议也叫作robots.txt(统一小写),是一种存放于网站根目录下的ASCII编码的文本文件,它会告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容不应被搜索引擎的漫游器获取,哪些内容可以被漫游器获取。在CTF Web中,robots.txt的意义恰恰相反:越是禁止访问的,就越要去访问。robots.txt中的信息可能是一个页面,也可能是一个文件,但不管是哪一类,这些文件的名字通常都比较复杂。利用目录探测工具是获取不到的。另一类提示信息的获取方式比较简单,这一类提示信息和路径URL信息无关,而是直接在源码里给出提示,通常直接单击鼠标右键,选择源代码即可获得提示信息。

下面介绍御剑工具的使用。

这里给出安装教程:端口扫描神器:御剑 保姆级教程(附链接)_御剑扫描-CSDN博客

这个是御剑珍藏版的操作界面,使用也十分简单,在域名栏目填写目标网址,可以选择配置扫描线程以及扫描超时,文件类型等。但是该软件无法对TLS协议下的网站生效,无法绕过防火墙。

三、指纹识别

这里展示了常见的指纹识别对象。下面对这些对象进行解释。

Web指纹定义:Web指纹是一种对目标网站的识别技术,通过识别网站所使用的服务器、运行的脚本、安装的CMS等信息对目标进行精准的分类和定位。Web指纹识别可以帮助安全研究人员在安全测试中快速了解目标网站的基本信息,有助于搜索其相关漏洞。

CMS,即内容管理系统,是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里发内容范围及其广阔,几乎包括了所有文件类型。例如cloudflare是一个全球云平台。

CDN即内容分发网络,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能减轻源站的压力。提高网络或应用的可用性和安全型。 CDN的基本原理是将源站的内容分发到离用户最近的节点上进行缓存,并通过智能路由、负载均衡等技术来保证用户能够快速、稳定地访问到所需资源。CDN将源站与用户之间的网络传输距离缩短,通过多节点并行传输,从而显著降低了网络传输的延迟和带宽消耗。

WAF即Web应用防火墙,国际上公认的一种说法是:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

这里展示其部署方式。它可以过滤HTTP/HTTPS协议流量,阻止web攻击,还可以对web应用进行安全审计,或者组织cc攻击。

下面介绍指纹识别的软件应用——whatweb。

该插件已经在kali里内置,建议直接安装kali即可。

这里给出安装网址:(需要先安装VM)如何在 VM 虚拟机中安装 Kali Linux 2023.4 操作系统保姆级教程(附链接)_kali 2023.4 安装-CSDN博客

下面介绍一些常用的命令:

Whatweb IP/域名:扫描指定网站指纹。

-V参数,可以返回详细信息。

-a参数指定扫描等级,1:只发送一次HTTP请求;2:不可用;3:发送少量HTTP请求;4:发送大量HTTP请求尝试每一个插件。

Whatweb –no-errors -t 255 197.1.1.10/24 扫描指定内网网段。

-i参数指定扫描文件,用于扫描不同网站

Whatweb -l:查看插件列表,whatweb --info-plugins="插件名" 查看指定插件的信息。插件可以直接借鉴别人的也可以自己编写。

whatweb www.fjrshg.com --log-xml=result.xml将扫描结果导出文件,默认放在当前路径下。

导出文件格式可以自定义,格式如下:

--log-brief 简单的记录,每个网站只记录一条返回信息

--log-verbose 详细输出

--log-xml xml格式的日志

--log-json json格式记录日志

--log-json-verbose 详细的json日志

--log-magictree xml的树形结构

--log-object ruby对象格式

--log-mongo-database mongo数据库格式

最后附上一个总览表目:

下面介绍一下御剑指纹识别工具。

御剑WEB指纹识别系统是一款CMS指纹识别工具,根据内置字典进行匹配扫描。这里和上面的御剑后台扫描工具不是一个。且仅支持windows系统。

网盘链接:https://pan.baidu.com/s/18T_m7jJseJFROPf2Oa88-A 提取码:sbsr

而御剑指纹识别的原理十分的死板,就是遍历内置字典进行比对,而字典存放在bin文件夹里。自定义字典在该文件夹里新建一个txt文本即可,按照/kangjun/199.html------CHANPIN------MyCMS()的格式书写。规则的意思是,当网站存在 /kangjun/199.html 路径,并且这个路径的页面中包含 CHANPIN 关键字时,就表示这个网站使用了 MyCMS()

使用就是添加域名,点击可是即可