2022.2.18:
宝塔终于修复这个问题了,从宝塔面板V7.9.0 开始,可以前往“网站-安全设置”里开启“https 防窜站”功能。
从宝塔面板 V8.0 开始,可以前往“网站-高级设置”里开启“HTTPS 防窜站”功能。

解决宝塔面板启用 ssl 后 Https 窜站问题,防止源站 IP 泄露

1 前言

宝塔面板 https 串站

在这里引用宝塔官方说法:在未指定 ssl 默认站点时,未开启 SSL 的站点使用 HTTPS 会直接访问到已开启 SSL 的站点

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

相信使用宝塔面板的盆友,应该都遇到过宝塔这个 https 串站问题。很多盆友遇到了,但忽略了它,觉得没啥影响的,就置之不理了…

置之不理肯定是不行的,不能有掩耳盗铃侥幸心理,通过这个漏洞,“大有可为”了!先不说串站可能会影响收录 SEO 这一点了,更重要的是它会导致一个不小的安全问题:你的源站 IP 正在泄露,即便你使用了CDN也不行!

至于怎么泄露源站 IP,这里只简单的说一下:可以直接通过 https://你服务器 IP 地址来访问,nginx 会向浏览器发送默认的 SSL 证书,通过查看证书详情可以找到对应的域名。详细了解请见下面的参考文章 1。

下面龙笑天就来说下本文重点了,怎么堵上这个串站、泄露源站 IP 的漏洞。使用宝塔面板的,跟着下面步骤一步步做就 OJBK 了;使用 LNMP 一键包或其它程序的,也可以参考着处理下。

2 新建虚假站点

2.1 新建站点

新建一个不存在的站点,域名填写为:default.default,提交,如下图:

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

2.2 删除默认文件

点击下图红框,进入此站点根目录,删除里面的默认文件 index.html 和 404.html

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

3 配置 SSL 证书

回到宝塔“网站管理”,找到 default.default,点“设置”进入网站配置,然后点击“SSL”,如下图:

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

然后密钥和证书填写如下,填写完毕,点保存:

左边的“密钥(KEY)”填:

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEArNNdCOFAe7b8iUxZ1FKr8p3qeWjn8uzbP6NkvBGU3dtlacVz
3ivW0lf8bFDhBPlxUEsrxge2QAruz83ABdaZNxiDHKA5IRLiYJo2gzlFQ/sDJ967
ScipxFrZ0fza6tWX/TOVNU7VacOy1Fc4ZwDW9yZFpXiFWInbLF7ZNLj986Gc/Esj
msQM5M5nKhtQNu0g2iYzz0d+hB0saMyFh5wfXH4i/gmKtpa4IbV6YqGMHpvjroIt
McNqHPMyWoDwBa3e8CW5hop8sb2b9FOwEJMRLSijTi5l/K+3oQDjNJbCWfjUG8yg
jYUiJ4ae1Zl+5rcYkvsg26+B0PTax8zX+L834QIDAQABAoIBADpcaddc0Xy1j1QB
/3eurzgP0aVMIr+q8mLsF1FXEpFUzEtKjVUiMrn3Ult1eHdIkNZPfCm0Yvv/dSOh
VE3kaPrtASGCjag4i0+Z4/yuM1DAjBFDqrVA2OtgzpuVqouQs3GioKlOxMyhdFs2
VOqbovv05aH6L/V1IBk8slaWfdNuWm/2X2Qr8q8VQa6VImBhx0K8WHG5Qjk+q0uN
8wRuYo/zeRK4a9U6lcCJxh+JHOGQ1MjqPY1gPrmEJR2cv2KzfbHNynelusWNAswu
HrhyGD99spVir16cfMzSWtXknPuBfj/evdXmW4bLAJHYIpZ8X53pxSbxmfR4Ok0z
/PbbMP0CgYEA4uM2alMJRSbXqsINodxziwu7xHX3u0Y9FcxGR2t3soRRkBqAEGmY
lk8qTZW648q6Hjv+6n1WaDN8Mpgv6T6jkEaJggQfkhivN5p4sSdFiZxoGDMDNJcN
ePf08WeTtJ2S2ylATc6WjuDmm3FUXc9eLq5mmIY9uclvcWY1nvi4tLMCgYEAwwBU
J97gxQAMrqScgVmVG72CNzMSqfAS3QOrN529Xtr/BU/oNYNSAhdmF/PD2J0zMNTK
L92komP0VkZrNCbMHau7p3RZa+hUqRI7BMIIi2wVdZzfL5PWAScGvj3e5Sfjs8gA
xsiNyQREkW47qXzgJd3yk1CK7iS3IZ+FCWDpsxsCgYEA3NYFB/ZspndJIbahqDM3
71XrXCzqhMi3+jiLC0cKCaMK9HUmw1LUpzDE3yFm+ANBpt4En96BNQkv0Nsafy9t
6qcNfpRe2kfWfAuJf/zWjTvEghFdBFomTeEi87k6JmndIB6FrXXwS3+SVig30ttd
M5ii2cCH4gazxy+R73rt5UsCgYAvcwYHSaFx7kgnuuBmTTEONffYjLHu7f75Dqp7
9wMccLd7SG1dkB3FaoIqM+Ok8uOA71ZffVRRO3c6AxqU7xfd5GreHV6g9kCbf1cj
Gj/QBTXXj5tzTUrWrvNiGVYCdsledr1RoX12u3Yf2S3lWQCF1lLva7rSpdZ19QX/
OTjEnwKBgCKXhyhldtdNphSG7x4PRSa8P4sFkMaP6+qTs0JLWYqpFiGVXnELxitG
IBotP+YEAcjqUDUsoxbLsOJtZCCCKFK9SvhbG7u++jFDnkZGELNWYNj/6edm9jxX
5VIUDUAABhkbIXWayA9/2ZxhkGDwX8qBqeaRKp2Z6hLhTbAEW8bn
-----END RSA PRIVATE KEY-----

右边的“证书(PEM 格式)”填:

-----BEGIN CERTIFICATE-----
MIIDVjCCAj4CCQCneja9to+JrTANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJD
TjETMBEGA1UECAwKR3Vhbmd6aG9uZzERMA8GA1UEBwwIU2hlbnpoZW4xDTALBgNV
BAoMBExYVFgxDDAKBgNVBAsMA0xYVDEYMBYGA1UEAwwPZGVmYXVsdC5kZWZhbHV0
MCAXDTIxMTIyNjAxNTM1M1oYDzIwOTkxMjMxMDE1MzUzWjBsMQswCQYDVQQGEwJD
TjETMBEGA1UECAwKR3Vhbmd6aG9uZzERMA8GA1UEBwwIU2hlbnpoZW4xDTALBgNV
BAoMBExYVFgxDDAKBgNVBAsMA0xYVDEYMBYGA1UEAwwPZGVmYXVsdC5kZWZhbHV0
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArNNdCOFAe7b8iUxZ1FKr
8p3qeWjn8uzbP6NkvBGU3dtlacVz3ivW0lf8bFDhBPlxUEsrxge2QAruz83ABdaZ
NxiDHKA5IRLiYJo2gzlFQ/sDJ967ScipxFrZ0fza6tWX/TOVNU7VacOy1Fc4ZwDW
9yZFpXiFWInbLF7ZNLj986Gc/EsjmsQM5M5nKhtQNu0g2iYzz0d+hB0saMyFh5wf
XH4i/gmKtpa4IbV6YqGMHpvjroItMcNqHPMyWoDwBa3e8CW5hop8sb2b9FOwEJMR
LSijTi5l/K+3oQDjNJbCWfjUG8ygjYUiJ4ae1Zl+5rcYkvsg26+B0PTax8zX+L83
4QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCG5lroJwys+NNrBAh99TuCNPphZmV+
QDyJh9XOTI49GPzZvuarETeN8gwKFCvAqIfrL3rSYo+IrFBdKZkE79MRlZxNTNy8
rfOVdp20sALKTXtGEPLzyyRNwaON/sp4HOpu43DL4mPd5esS0vhKpdsMBoStIlPE
6Lvzne3Bl1YgaRj4k4jlwBWkkUMmVpYozUCRTKlFiayUw8l/2In5+ShydqSsJhP2
FUmrzQLjNtdHkof6t2W1RWD5YeTcAmzcSS8sBW5/DaHFD1htwS97Sfe1zuzEtbeg
kJqrGCBj312PV3InMR0B82uKlvn3nMNGZ0Yci35twCR0It8DOz6TGSOq
-----END CERTIFICATE-----

4 设置为默认站点

回到宝塔“网站管理”,如下图,将上面建立的这个站点设置为默认站点,提交:

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

5 校验配置结果

至此,设置全部结束,访问 https://你服务器 IP,如果浏览器提示下图这样(“高级”里看不到自己服务器上的网站域名)或者显示“403 Forbidden”,那么恭喜你,漏洞已被堵上了!如果能访问到你网站,那么也“恭喜你”,你中这漏洞了~

【重要安全】解决宝塔面板启用 ssl 后 https 窜站问题,防止源站 IP 泄露

6 总结

整个过程,懂了原理就容易了,建立一个虚假域名默认站点,对应的自签一个虚假域名证书,OVER。PS:LNMP 一键包等其他环境也可以参考着弄一下~

另一个简单默认站点配置

server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
set $empty "";
ssl_ciphers aNULL;
ssl_certificate data:$empty;
ssl_certificate_key data:$empty;
return 444;
}

发表回复

后才能评论