【愚公系列】2024年08月 《CTF实战:从入门到提升》 003-Web安全基础知识(HTTP安全)

举报
愚公搬代码 发表于 2024/08/31 23:28:15 2024/08/31
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。🏆《博客内容...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

HTTP安全是指在使用HTTP协议进行通信时,采取的一系列措施和技术,以确保传输过程中的数据的机密性、完整性和可信性。

HTTP协议本身是一种明文的协议,数据在传输过程中容易被窃听、篡改或伪造。为了保证数据的安全性,可以采取以下措施:

措施 描述
HTTPS 在HTTP协议基础上增加了SSL/TLS加密层,通过对通信内容进行加密以保护数据的机密性。
加密 使用对称加密或非对称加密算法对敏感数据如用户登录信息或支付信息进行加密,防止数据被窃听。
认证 通过身份验证技术验证通信双方的身份,确保通信的可信性。常用的认证方式包括基本认证、摘要认证、OAuth等。
防止篡改 使用数字签名或消息认证码等技术对数据进行校验,防止数据在传输过程中被篡改。
防止重放攻击 通过使用随机数、时间戳等机制,防止攻击者重复发送已经捕获到的请求。
防止跨站脚本攻击和跨站请求伪造攻击 通过过滤输入内容、验证请求来源等方式,防止恶意脚本注入和伪造请求。
防止拒绝服务攻击 通过限制请求频率、增加服务器性能等手段,防止大量恶意请求导致服务器崩溃。

通过采取上述措施,可以增强HTTP通信的安全性,保护数据的隐私和完整性,防止各种网络攻击。

🚀一、HTTP安全

🔎1.URL编码的基本概念

在日常的HTTP请求中,存在不可见字符和特殊意义的字符,如回车、Tab、&(URL中用于分割参数)、#(HTML中的锚点)、?(开始传参的符号)等。这些特殊字符无法直接手工输入,但在某些情况下需要使用它们。

为了解决这个问题,我们可以使用URL编码。URL编码是一种将特殊字符转换成%+16进制的ASCII码的方法。

例如,空格字符在URL编码中表示为"%20",&字符表示为"%26",#字符表示为"%23"。

在需要使用特殊字符的地方,我们可以使用URL编码后的值进行替换,以确保正确传递和处理这些特殊字符。

通过URL编码,我们可以在HTTP请求中使用特殊字符,而不会造成混淆或错误解析。这在处理URL参数、HTML表单数据等场景中非常有用。

例如,对于#这个字符,对应的URL编码过程如图所示。
在这里插入图片描述

假设我们直接输入“#”,会被浏览器当作是一个锚点(有特殊意义)

在这里插入图片描述
而输入“%23”经过浏览器自动URL解码后,会被解析成普通的#字符,如图所示。
在这里插入图片描述

在CTF中,如SQL注入、反序列化、命令执行等题目中常常会有特殊或者不可见字符,所以经常会用到URL编码。

🔎2.UA头伪造漏洞的概念及利用方法

UA头,全称User-Agent。每个HTTP请求中都会携带UA头。这个头会包含我们所使用的操作系统版本、CPU、浏览器类型等。
在这里插入图片描述

对其进行说明。

  • Windows NT 10.0;Win64;x64:表示Win10 64位操作系统。
  • Chrome/91.0.4472.11:谷歌浏览器版本号。

那么UA头起到什么作用呢?

在Web开发中,一般会根据UA头来判断客户端是用什么设备或者什么浏览器访问来进行页面适配,或者说禁止某些浏览器访问。

大家平时在上网时应该都遇到过这个情况,在访问某些网页时,这些网页会提示“请从微信客户端打开链接”,这里就用到了UA头,从微信访问的UA头中有一些特征(关键字符)。通过判断这个UA头中是否含有微信客户端的特征来判断用户是否是从微信客户端访问的。

那么怎么来获取这个UA头呢。这里需要一个工具——ncat(网络工具中的瑞士军刀)。

使用命令nc -l 4567,监听本地的4567端口,然后从微信中访问http://127.0.0.1:4567。此时就能抓取到HTTP请求了。

在这里插入图片描述
在Linux下也同理。
回到上面监听到的结果上。观察UA头部分。发现和微信有关的有两个:

MicroMessenger/7.0.20.1781(0x6700143B)WindowsWechat(0x6303004c)

MicroMessenger是微信内置浏览器的UA,WindowsWechat说明是Windows微信。
那么该如何修改UA来访问呢。这里要用到一个工具–BurpSuite。

在这里插入图片描述

在这里插入图片描述

curl是一个发起HTTP请求的工具,具有以下各种参数:

  • -i:显示返回的HTTP请求。
  • -X:指定HTTP请求模式(GET/POST/xxxx)。
  • -d:POST数据。
  • -F:文件上传。
  • -H:指定HTTP头。
  • –cookie:指定HTTP请求的Cookie。

🔎3.返回头分析方法

HTTP请求分为请求和响应,那么我们能从响应中获取哪些信息呢?

curl -v 域名或者BurpSuite抓取返回包可获得下面这样的请求包字串
在这里插入图片描述
从这个返回包中,可以看到以下信息:

  1. HTTP状态码,例子中是200。根据状态码的不同,可以进行以下分类:
  • 1xx代表信息,服务器收到请求,需要请求者继续执行操作。
  • 2xx代表成功,操作被成功接收并处理。
  • 3xx代表重定向,需要进一步的操作以完成请求。
  • 4xx代表客户端错误,请求包含语法错误或无法完成请求。
  • 5xx代表服务器错误,服务器在处理请求的过程中发生了错误。
  1. 响应时间(Date):
    在CTF流量分析中,可以通过观察响应中的时间信息,了解到黑客在何时进行了操作。这有助于我们追踪攻击行为并进行进一步分析。

  2. 中间件信息(Server):
    通过返回结果中的中间件信息,我们可以了解到目标使用的是Apache中间件,版本为2.4.29,并且操作系统为Ubuntu。这些信息在渗透过程中非常有用,我们可以利用这些信息来测试对应版本的漏洞。

  3. Cookie:
    可以尝试修改Cookie的值,这可能会导致越权等漏洞的出现。通过利用Cookie漏洞,攻击者可能能够获取未授权的访问权限或执行未经授权的操作。因此,在渗透测试中,我们应该对Cookie进行仔细的检查和测试,以防止此类漏洞的利用。

🔎4.来源伪造漏洞的概念及利用方法

HTTP请求头中的Referer字段用于告诉服务器用户是从哪个页面过来的。当用户从一个页面点击链接跳转到另一个页面时,浏览器会在新的请求中添加Referer头,其中包含了之前页面的URL。这可以帮助服务器了解用户的访问来源,从而进行一些相关的处理或分析。

例如,当我们从百度搜索结果点击一个链接进入某个网站时,该网站的服务器会接收到一个包含Referer头的请求,其中Referer字段的值为百度搜索结果页面的URL。服务器可以根据这个信息进行统计分析、记录访问来源或进行一些特定的操作。
在这里插入图片描述
举个例子,在部分CTF题目中,只有一句话“are you from google”时就要加一个Referer:https://www.google.com/,说明自己是从google过来的。

🔎5.案例解析–[极客大挑战2019]

HTTP接下来让我们看“[极客大挑战2019]HTTP”这道题。

打开题目只有一个界面。F12发现了一个Secret.php。访问后有一句话lt doesn’t come ’ from https://www.Sycsecret.com '。

猜测题目需要我们从https://www.Sycsecret.com来访问。这时候就需要添加一个Referer头,这里使用BurpSuite来修改Referer头,如图所示。

在这里插入图片描述
下一步让我们使用 Syclover”browser,而HTTP中带有浏览器信息的就是UA头,所以这里修改UA头,如图所示。
在这里插入图片描述
接下来,只允许本地访问。常见的可以用于伪造IP的请求头有X-Forwarded-For、X-client。这里我们再次添加一个X-Forwarded-For头后,成功拿到Flag,如图所示。
在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。