登录后台

页面导航

本文编写于 425 天前,最后修改于 425 天前,其中某些信息可能已经过时。

前些天我对网页进行了从http到https的升级,但是我一直很好奇https到底加密了些什么,有没有什么办法让我能够检验这种加密。

我通过查询,了解到判断https的几种方法。

  1. 查看URL

    • HTTP: 网址以http://开头。
    • HTTPS: 网址以https://开头。
  2. 查看浏览器的地址栏

    • HTTP: 浏览器地址栏中通常不会有锁形图标。
    • HTTPS: 浏览器地址栏中会显示一个锁形图标,通常在网址左侧。点击这个锁形图标,可以查看证书信息。
  3. 查看安全证书

    • HTTPS: 右键点击浏览器中的锁形图标,选择“查看证书”或类似选项,可以查看证书的详细信息,包括颁发机构、有效期和加密算法等。
    • HTTP: 没有证书信息。
  4. 使用浏览器开发者工具

    • 打开浏览器的开发者工具(通常按F12),切换到“网络”标签页,加载网页后,可以查看请求的协议(Protocol)。HTTP请求会标记为http,HTTPS请求会标记为https
  5. 使用命令行工具

    • cURL: 使用curl -I http://example.comcurl -I https://example.com可以查看协议和响应头。
    • OpenSSL: 使用openssl s_client -connect example.com:443可以查看HTTPS的证书和加密信息。
  6. 检查数据传输

    • HTTP: 数据是以明文形式传输,容易被中间人攻击(如窃听)。
    • HTTPS: 数据是经过加密的,传输过程更安全,能防止窃听和篡改。
  7. 检查页面源代码

    • 在页面源代码中,查看是否有<link><script><img>等标签中的链接是否都是https。如果有混合使用httphttps,浏览器可能会显示安全警告。

但以上只能让我判断是否为https,而不能了解到更具体的信息。
我于是筛选了几种可能深入的方法。
一)是通过命令行工具。二)通过网络爬虫抓包的区别

命令行工具

使用命令行curl时出现了两种报错

C:\Users\86183>curl -I http://wolawo.top
curl: (52) Empty reply from server

改为https时

C:\Users\86183>curl -I https://wolawo.top
curl: (35) schannel: failed to receive handshake, SSL/TLS connection failed

均未成功连接
经过检测是重定向出现问题,wolawo.top不可访问,而www.wolawo.top可以访问(这是一个待解决的问题,以后应该会处理)

C:\Users\86183>curl -I http://www.wolawo.top
HTTP/1.1 301 Moved Permanently
Server: kangle/3.5
Date: Thu, 05 Sep 2024 09:22:22 GMT
Location: https://www.wolawo.top/
Content-Length: 0

服务器返回了一个301重定向响应,将请求从 http://www.wolawo.top 重定向到 https://www.wolawo.top/。这表明 www.wolawo.top 服务器设置了重定向规则,将所有HTTP请求重定向到HTTPS版本的站点。

C:\Users\86183>curl -I https://www.wolawo.top
HTTP/1.1 200 OK
Server: kangle/3.5
Date: Thu, 05 Sep 2024 09:24:17 GMT
Content-Type: text/html; charset=UTF-8
X-Pingback: https://www.wolawo.top/index.php/action/xmlrpc
X-Cache: MISS from kangle web server
Transfer-Encoding: chunked

HTTP/1.1 200 OK: 是标准的HTTP响应状态码,表示请求成功,服务器返回了请求的资源。

通过以上方法我们对https的了解更加深刻,但对于我们的问题没有任何帮助。

抓包工具

抓包工具

使用WireShark工具抓取「HTTP协议」的数据包
使用WireShark要获取网站的IP地址,可以通过命令行的ping获取。
但是在实际操作中,遇到了一个问题,由于电脑使用了VPN代理,所以获得的IP无法使用?
反正无法找到我网站网页的包。
通过检测,断开VPN后无法连接网络,ping请求超时。
解决办法:通过火绒安全的断网检测。自动修复。恢复了相关设置(感谢室友提出的方法 (ノ°ο°)ノ )

http下抓包

1.关闭原有ssl证书
在我的虚拟主机控制页面中删除ssl证书与密匙

2.抓包,设置捕获选项
运行Wireshark,我们抓取本机的网络包,进入捕获选项。
ip.addr == 103.135.35.131 and http.request.method==POST(设置抓取范围为我的网站对应的IP地址,操作为post)
由于表单的提交大部分用POST请求(具体是GET还是POST看url就可以),所以这里只要显示HTTP协议中POST请求的包。我们设置应用显示过滤器的过滤语句为 http.request.method==POST,将此过滤字符串应用于显示。

3.打开目标网站进行登录

登录界面.png

登录成功后停止抓包

4.结果分析
我们可以看到明文显示的密码与用户名(打了马赛克 OωO )

抓包结果.png

https下抓包

前面的流程相同,只是不能用http.request.method==POST找。
4.结果分析

Encrypted Application Data […]:
f6edaa8e58ef495a37a6e8b63795d4b21fa901220ddb4db28cf0627fee8b7a17603a9ae594443d487ca760cd6598bc852dddfabd1467c5f88171240917dc454bcfcbf8924de77c3b5fe931c135860a8d5687ca20026a1e0819eeee272110b74e7d9a69df698d7

加密后不能直接找到post内容,找到的应用程序数据也是加密的。
而且在抓包软件上显示的也不是http协议,而是显示TLS.


思考:
1.https可以不被篡改是否意味着http可以被中途篡改(该怎么实现?)
2.以上操作全程只用了自己的电脑,以上技术能不能监听到所有通往我的网站的数据(可以尝试抓取其他小伙伴的账号和密码,因为你们在同一个wifi下。通过获取目标网站的IP地址,就能截取数据包实现该功能。所以,在外尽量不要使用开放的wifi。“中间人攻击”)