钦州二中公网服务架构研析

前言

在高二(15)班进行生日会活动时,我突发奇想,决定打开钦州二中官网,却发现一些些不一样的地方。

官网爆炸了

256EFF9073C5AA3DD00D8D0963F6D072

这可是千年难得一遇的机会,于是我立刻开始着手进行研究。

建立监测机制

对于故障来说,往往需要监测其开始和结束时间。第一观测到其官网崩溃的时间为9月29日18:31,为了后期溯源,我迅速打开monitor.windeling.com,新建了一个服务监测指针指向钦州二中官网。同时我注意到,钦州二中官网是没有TLS证书的,因此其使用的是HTTP而非HTTPS。

但是,这一个监控探针并未能发挥应有的功效,9月30日下午17:53,我尝试访问钦州二中官网,发现其服务已经正常恢复,但是监控探针仍处于超时状态。

也就是说,我们只能判断出钦州二中的服务崩溃时间不晚于29日18:31,修复时间不晚于30日17:53。

问题症状

从阿里云和itdog的拨测反馈来看,钦州二中官网的服务器并未给出任何错误代码,该问题症状表现为连接超时。

由于钦州二中的官网没有TLS/SSL证书,这给了我们一个好机会来判断问题的征兆。

我们先来看一下客户端是如何与服务器建立连接的:

URL解析与DNS查询

当用户在网络浏览器中输入URL时,首先触发URL解析过程。

URL通常由协议方案、主机名、端口号和路径组成。例如,输入http://qxqzez.com时,浏览器解析出协议为HTTP、主机名为gxqzez.com、默认端口为80(HTTP标准端口)。

随后,浏览器发起DNS查询以将主机名解析为互联网协议(IP)地址。这一过程遵循RFC 1034和RFC 1035标准:浏览器首先查询本地DNS缓存,若未命中,则递归地向配置的DNS服务器发送查询请求。最终,DNS服务器返回对应的IP地址(如124.227.1.120),使浏览器能够定位目标服务器。

TCP连接建立

获得IP地址后,浏览器通过传输层协议建立端到端连接。TCP作为面向连接的协议,通过三次握手过程确保可靠通信,如RFC 793所述。具体步骤如下:

  • SYN报文发送:客户端(浏览器)向服务器端(目标IP地址和端口)发送一个TCP报文,其中同步(SYN)标志位设置为1,并随机生成初始序列号(ISN)。
  • SYN-ACK报文响应:服务器端接收SYN报文后,回复一个TCP报文,其中SYN和确认(ACK)标志位均设置为1,确认号为客户端ISN加1,并生成服务器端的ISN。
  • ACK报文确认:客户端收到SYN-ACK后,发送一个ACK报文,确认号为服务器端ISN加1,完成握手。
    至此,TCP连接进入已建立状态,允许双向数据传输。这一过程在默认HTTP端口80上进行,无需任何加密或身份验证。

HTTPS连接(使用TLS)会在TCP握手后执行TLS握手,包括证书验证、密钥交换和加密算法协商,以确保机密性、完整性和身份验证。

HTTP请求与响应

TCP连接建立后,若无TLS证书,浏览器在应用层发起HTTP事务,遵循RFC 2616(HTTP/1.1)或RFC 7230系列标准。

浏览器将构造一个HTTP请求报文,包括请求行(如GET / HTTP/1.1)、头部字段(如Host: gxqzez.com)和可选实体主体。该报文通过TCP连接以明文形式发送至服务器。服务器解析请求后,返回HTTP响应报文,包括状态行(如HTTP/1.1 200 OK)、头部字段(如Content-Type: text/html)和资源数据(如HTML内容)。整个通信过程未受保护,数据在传输过程中可能被窃听、篡改或劫持。

细心的同学注意到:

HTTP请求与响应,整个通信过程未受保护,数据在传输过程中可能被窃听、篡改或劫持。

这会不会和这一问题有关呢?

答案是否定的,如果没有证书,那么与服务器的连接可能会遭到中间人攻击。但是,随着服务的恢复,钦州二中官网仍没有证书,除非是中间人主动放弃了攻击,因此可以排除这一小概率可能。

是否是防火长城GFW的攻击?

这不可能。对于这种脆弱的没有证书保护没有伪装的连接,GFW一脸嫌弃的走开了。

就算一定要给一个封锁,使用基于RST包的阻断或者DNS污染也是更为高效的选择,使用IP封禁导致的超时一般用于对大型站点的攻击。

有没有可能是在维护?

这个想法的确有很高的可能性,但是为何不在国庆节期间维护?而且若要进行维护,通常会给出明确的维护页面,例如综合评价系统每天0点至6点的维护就并未拒绝连接,而是给出了超时界面。

针对这一问题,我们已经向钦州二中信息装备处副主任发文求证,截至发稿未获回复。

是服务器配置错误吗?

我们认为这种可能性最大。

在我配置自己的网站时,如果没有正确指定Index.html也会导致响应时间过长而非404错误,再加上下面的发现辅佐,我们可以认为是服务器配置错误导致的问题。

通过DNS查询可知,http:gxqzez.com的解析指向124.227.1.120这一IP,但是我们在Bing上搜索时会有神奇的发现:

搜索发现

我们会发现找不到所谓的官网,观察链接和标题可发现,除第一个是裸域名以外,下面的都跟有路径属于站点的某页面。

按照我们已知的发现,http:gxqzez.com是指向官网,怎么出来了校庆页面。

我们点击可以发现,链接指向的是官网。这让我们意识到,钦州二中的服务器采用了虚拟主机技术。

什么是虚拟主机

当我们访问一个网站时,浏览器发送的请求中不仅仅包含“访问页面”,还包含一个非常重要的信息:“访问域名”。这个信息存放在 HTTP 请求的 Host 头部字段中。

如果通过域名访问:

  • 浏览器会先通过 DNS 查询到 IP 地址(124.227.1.120)。
  • 然后浏览器向这个 IP 地址的 80(HTTP)或 443(HTTPS)端口发送一个 HTTP 请求。
  • 在这个请求中,浏览器会明确地加上一行:Host: gxqzez.com
  • 服务器(124.227.1.120)收到请求后,会查看这个 Host 头,知道我想访问的是 gxqzez.com 这个网站,于是就从配置中找出对应这个域名的网站文件(即官网)返回给浏览器。

如果直接通过 IP 地址访问(124.227.1.120):

  • 浏览器将直接向 124.227.1.120 发送 HTTP 请求。
  • 在这个请求中,Host 头要么是空的,要么就是 IP 地址本身(Host: 124.227.1.120)。
  • 服务器收到请求后,发现这个请求没有指定一个它认识的域名。这时,服务器通常会返回一个默认的网站,也就是活动页面。

为了证明我们的猜想,我们采用curl命令验证:

使用IP地址直连并带上host

IP裸连无host

可以发现返回的结果并不一样,这也证实了存在虚拟主机的猜测。同时因为这个特性,配置错误导致找不到官网的概率大大提升。

回到先前的话题:为什么BIng搜索出来是校庆呢?

原因很简单:搜索引擎抓取网页时,会提取页面的标题和描述来生成搜索结果的简介。这个描述通常来自网页HTML代码中的 <meta name="description"> 标签。

我们可以看出,官网使用的是PHP语言,没有<meta name="description">标签,但是活动界面使用的是HTML页面,这就导致了活动界面的HTML作为主要信息来源,官网则只获得了一个全站搜索的二级链接。

到这里,似乎就结束了。这只是一场配置的问题。

探索未至之境

研究完这个问题后,我又前往了钦州二中公众号,探索其中的网址:

1
2
3
4
5
6
lark.17win.com
bm.gxqzez.com

wx.123xfw.com
sf.gxqzez.com
h5.gxqzez.com

其中都是通过了一次链接重定向,如果我们直链访问就会发现:

隐藏了错误信息

502错误服务应该被删了

403Forbidden

bm页面需要有路径

h5神秘页面

问题&小结

根据探索结果来看,钦州二中多次运用外链跳转影响了使用体验,并且结构管理混乱,没有明确的结构区分。

其中像报名界面都用的是bm等拼音缩写,虚拟主机配置混乱,搜索SEO优化不佳等问题。

我们仍未能排除其服务器遭到攻击的可能性,我们在此建议大家遵守相关法律法规,不要攻击钦州二中的服务器。

由于其未使用TLS证书的严重问题,其通信可轻易的被中间人攻击或窃听。

主站点采用PHP语言, PHP属于服务器端脚本语言,其特点是服务器先执行,再将结果(HTML)发给浏览器,由于其可以需轻松连接和操作数据库,特别需要注意安全。并且用户查询会对服务器造成比纯HTML页面更大的开支。

并且其IP暴露于公网且未配置代理服务器,相当于裸露的靶机,对于DDOS等拒绝服务攻击特别是UDP泛洪攻击抵御更为困难。

我们建议大家绝对不要在每年8月份等报名时段对服务器进行DDOS拒绝攻击,其将严重损害我们的母校校园网系统的服务可用性,希望大家共同努力,保护我们的校园。


钦州二中公网服务架构研析
https://blog.windeling.com/202510018be96e16/
作者
黄文林
发布于
2025年10月1日
更新于
2025年10月8日
许可协议