CTF Web信息搜集 25000字详解

前言

这段时间开始入门Web,主要是为了在线下赛不那么坐牢

Web的知识还是挺多的,所以需要成体系的学习

每学完一个方面我会写一篇总结性文章,将知识点与例题放在一起,方便后面查阅

如果之后学的更加深入或者遇到什么有代表性的题目,也会添加到文章中

信息收集

渗透的本质是信息收集,信息收集也叫做资产收集。

信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口。

常见信息

搜集方面 作用
whois 得到域名注册人的信息:邮箱、电话号码、姓名
子域名 可以扩大攻击范围,子域名一定是有关联的,很多时候基本上都同属一个公司
端口探测 危险端口可以直接爆破入侵,一个Ip可能搭建了多个网站,分布在不同的端口
目录扫描 目录扫描有的时候可以访问到压缩包源码、编辑器目录、废弃页面、其他站点
指纹识别 识别CMS,寻找通杀漏洞
旁站查询 旁站其实就是同IP站点,一定和目标站点在同一个内网或者是同一台服务器
C段查询 C段可能是同一个内网,同一个公司
内容敏感信息泄露 通过谷歌语法得到其他的东西

分类

域名信息

whois

概述

whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)

收集方法

备案

概述

网站备案也算是中国互联网的一大特色了

非经营性网站备案(Internet Content Provider Registration Record),简称ICP备案,指中华人民共和国境内信息服务互联网站所需进行的备案登记作业。

如果某网站申请了ICP备案,那么就能通过查询备案可以获取备案人的大量信息

收集方法

注意事项

一些个人网站底部贴的备案号很有可能是假的,或从其他站点复制过来的。所以查询备案信息时尽量通过域名来直接查询。

CDN

概述

內容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

正好在我的博客R1ck’s Portal中,也使用到了这种内容分发网络服务,所以对它的作用的体会非常深刻。

在很大程度上,CDN能抵御像DDOS之类的攻击,同时还能让站点的真实IP “隐身”

但是这对于我们渗透测试时影响很大:无论我们对CDN的服务器有多大的控制权,也始终影响不到真实站点,也就是源站

此时需要我们绕过CDN,找到真正源站的IP

绕过方法

  1. 查询历史DNS记录

  2. PHPinfo

    如果目标网站存在phpinfo泄露等,可以在phpinfo中的
    SERVER_ADDR_SERVER["SERVER_ADDR"]找到真实ip

  3. 查询子域名

    CDN的流量费还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。

    具体查询子域名的方法会在接下来介绍

  4. 使用国外主机解析域名

    国内很多 CDN 厂商因为各种原因只做了国内的线路,而没有针对国外的线路,此时我们使用国外的主机直接访问可能就能获取到真实IP。

  5. 网站邮件订阅查找

    RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP了。

子域名

概述

收集子域名可以扩大测试范围,同一域名下的二级域名都属于目标范围。

收集方法

  1. 使用搜索引擎在线收集

  2. 在线查询

  3. 使用工具爆破挖掘子域名

    • Layer

      链接:https://pan.baidu.com/s/1QEYXjrGsARcXk6D-xLS64Q?pwd=1111
      提取码:1111

    • OneForAll

      shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具 (github.com)

      使用OneForAll时需要以管理员身份打开终端

      使用高版本python运行时可能会出现报错ImportError: cannot import name ‘sre_parse’ from ‘re’

      解决方法是找到python文件下的Lib\site-packages\exrex.py文件,对其代码进行更改:

      image-20230822210252449

  4. 使用证书反查

    crt.sh | Certificate Search

解析记录

概述

查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。

同时flag也有可能藏在这些解析记录中

常见解析类型

  1. A记录(Address Record):A记录将域名解析为IPv4地址。这是最常见的DNS记录类型,用于将主机名(例如:http://example.com)指向一个IPv4地址(例如:192.0.2.1)。
  2. AAAA记录(IPv6 Address Record):AAAA记录将域名解析为IPv6地址。与A记录类似,AAAA记录用于将主机名(例如:http://example.com)指向一个IPv6地址(例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
  3. CNAME记录(Canonical Name Record):CNAME记录用于将一个域名指向另一个域名。通常用于别名或子域名的情况,例如将http://www.example.com指向http://example.com。
  4. MX记录(Mail Exchange Record):MX记录用于指定处理域名电子邮件的邮件服务器。通常,MX记录会指向一个邮件服务器的域名,如:http://mail.example.com。
  5. NS记录(Name Server Record):NS记录指定了负责解析域名的DNS服务器。通常,在注册域名时,域名注册商会为您分配默认的NS记录。这些记录可以更改,以便将域名的解析委托给其他DNS服务器。
  6. TXT记录(Text Record):TXT记录用于存储与域名相关的任意文本信息。这些记录通常用于验证域名所有权(如Google网站验证)或实现电子邮件验证技术(如SPF,DKIM和DMARC)。

收集方法

  1. 使用本机的nslookup命令

    nslookup -type=type domain [dns-server]

    其中type为解析类型,domain为域名,dns服务器为可选项

    命令详解:nslookup命令详解和实战例子(全)_老鸟诗人的博客-优快云博客

  2. 在线查询

旁站

概述

旁站指的是同一服务器上的其他网站,一般是同一ip

收集方法

  1. 在线查询

  2. 搜索引擎

    fofa

    语法:ip=“xxx.xxx.xxx.xxx”

C段

概述

对目标主机无计可施时,我们可以尝试一下从C段入手。C段入侵是拿下同一C段下的服务器,也就是说是D段1-255中的一台服务器,然后直接从被端掉的服务器出发进行其他测试

收集方法

  1. 在线查询

    同IP网站查询,C段查询,IP反查域名,在线C段,旁站工具 - WebScan

  2. 搜索引擎

    fofa

    语法:ip=“xxx.xxx.xxx.0/24”

服务器信息

端口

概述

当确定了目标大概的ip段后,可以先对ip的开放端口进行探测,一些特定服务可能开起在默认端口上,探测开放端口有利于快速收集目标资产,找到目标网站的其他功能站点。通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务。

收集方法

  1. 在线端口检测

  2. 扫描工具

    • 御剑

    • Nmap

      教程:https://blog.youkuaiyun.com/weixin_54977781/article/details/123852687

服务器类型

网站服务器有不同的操作系统:windows、Linux、mac os

windows对大小写不敏感,其他两个对大小写敏感

数据库类型

目前比较常用的数据库有:MySQL、SQL server、Oracle等。SQL server开放的默认端口:1433,MySQL开放的默认端口:3306、Oracle开放的默认端口:1521。

waf防火墙

收集方法

kali自带Wafw00f

语法:wafw00f xxx.com

网站信息

备份文件

除了F12查看源代码,有时网站的备份文件也会泄漏源代码

备份文件是常见的源码泄露的方式,实践中往往是开发者的疏忽而忘记删除备份文件,从而导致服务器中残留源码。我们可以通过访问这些备份文件来审计代码,一般情况下可以用后台扫描工具扫描。

备份文件常见的后缀名

备份文件基本上都是压缩包

.rar .zip .7z .tar .gz .bak
对于bak类的备份文件,可以直接输入文件名称+.bak访问例如:
index.php.bak
.txt .old .temp _index.html .swp .sql .tgz

备份文件常见的文件名

web website backup back www wwwroot temp db data code test admin user
sql

gedit备份文件

在Linux下,用gedit编辑器保存后,当前目录下会生成一个后缀为~的文件,其文件内容就是刚编辑的内容。假设刚才保存的文件名为flag,则该文件名为flag~。

通过浏览器访问这个带有~的文件,便能得到源代码

vim备份文件

使用vim编辑器编写filename文件时,会有一个.filename.swp文件产生,它是隐藏文件。如果编写文件时正常退出,则该swp文件被删除,如果异常退出,该文件则会保存下来,该文件可以用来恢复异常退出时未能保存的文件,同时多次意外退出并不会覆盖旧的.swp文件,而是会生成一个新的,例如.swo文件。

针对swp备份文件,我们可以用vim -r命令恢复文件的内容

例如当前目录下假如存在.flag.swp文件,则恢

### CTF Web 安全中的信息收集技巧与工具 #### HTTP头部信息分析 HTTP请求和响应头包含了大量关于目标系统的有用信息。通过仔细审查这些头部段,可以发现潜在的安全弱点或配置错误[^4]。 ```http GET / HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml,*/*; Connection: close ``` #### Robots.txt 文件解析 许多网站会维护一个`robots.txt`文件来指导搜索引擎的行为。这个文件不仅限于阻止访问某些路径,有时也会无意间暴露重要的目录结构或其他敏感资源位置。 ```bash curl http://example.com/robots.txt ``` #### 子域名枚举 子域查找对于扩大攻击面至关重要。可以通过在线服务、DNS查询以及典暴力破解等方式来进行有效的子域名挖掘工作。 ```python import requests def enumerate_subdomains(domain, wordlist_file='subdomains.txt'): with open(wordlist_file) as f: names = f.read().splitlines() found = [] for name in names: try: response = requests.get(f"http://{name}.{domain}") if response.status_code == 200: found.append(name) except Exception as e: continue return found ``` #### 参数污染测试 当应用程序未能正确处理多个同名参数时可能会引发逻辑缺陷甚至命令注入等问题。尝试向URL附加额外的参数并观察其行为变化可以帮助识别此类漏洞的存在。 ```http POST /login.php?username=admin&password=pass&action=login HTTP/1.1 Content-Type: application/x-www-form-urlencoded username=admin&password=pass&action=logout&action=login ``` #### SSRF 攻击检测 服务器端请求伪造(Server-Side Request Forgery, SSRF)允许攻击者诱使受害者的服务器发起恶意构建的内部网络请求。这通常用于绕过防火墙限制从而获取内网资产详情或者执行进一步的操作如读取本地文件等[^2]。 ```python payloads = [ "http://localhost", "file:///etc/passwd", "//internal-service.local" ] for payload in payloads: r = requests.post(url="http://vulnerable-site.com/ssrf-endpoint", data={"url": payload}) print(r.text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

handsomelky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值