一、HTTP协议 HTTP是一个基于请求与响应模式的、无状态的应用层协议。
常基于TCP的连接方式 ,即http是将数据打包成TCP数据包来进行传送的,绝大多数Web应用,都是构建在HTTP协议之上,即目前使用浏览器访问web网站都是以http协议为标准的。
1、HTTP协议工作原理
客户机与服务器建立连接后,浏览器可以向web服务器发送请求并显示收到的网页,当用户在浏览器地址栏中输入一个URL或点击一个超连接时,浏览器就向服务器发出了HTTP请求,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME(Multipurpose Internet Mail Extensions)信息包括请求修饰符、客户机信息和可能的内容。该请求被送往由URL指定的WEB服务器,WEB服务器接收到请求后,进行相应反映,其格式为:一个状态行包括信息的协议版本号、一个成功或错误的代码,后边服务器信息、实体信息和可能的内容。即以HTTP规定的格式送回所要求的文件或其他相关信息,再由用户计算机上的浏览器负责解释和显示。
2、HTTP协议的方法
GET :请求获取Request-URI所标识的资源
POST :在Request-URI所标识的资源后附 加新的数据
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
PUT: 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE:请求服务器删除Request-URI所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能或查询与资源相关的选项等
3、HTTP状态码
类别 | 原因短语 | |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务端错误状态码) | 服务器处理请求出错 |
200 OK
204 No Content
一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用.
206 Partial Content
该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求.响应报文中包含由Content-Range指定范围的实体内容.
301 Moved Permanently
永久性重定向.请求资源的URI已变更.
302 Found
临时性重定向.
303 SEE OTHER
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
304 Not Modified
该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但为满足条件的情况.
307 Temporary Redirect
临时重定向,类似302
400 Bad Request
该状态码表示请求报文中存在语法错误
401 Unauthorized
需要认证/认证失败
403 Forbidden
未被授权
404 Not Found
500 Internal Server Error
503 Service Unavailable
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求.
二、HTTP的缺点 1、明文传输
通信使用明文可能会被窃听
1.1、TCP/IP 是可能被窃听的网络 互联网上流动的数据可能被恶意窥视, 被抓包(Packet Capture)或嗅探器(Sniffer)工具收集到数据包并解析,eg: Wireshark, 可以获取HTTP协议的请求和响应的内容,并对其进行解析
1.2、加密处理防止被窃听 通信的加密
HTTP协议中没有加密机制,可以通过和SSL或TLS的组合使用,加密HTTP的通信内容.
HTTPS -> HTTP + SSL ->HTTP Secure / HTTP over SSL
内容的加密
对报文主体进行机密处理,前提是要求客户端和服务端同时具备加密和解密机制.
2、不安全认证
不验证通信方的身份,因此有可能遭遇伪装
- 任何人都可发起请求
- 查明对手的证书
SSL不仅提供加密处理,而且使用了证书以确定通信方的身份.
无法证明报文的完整性,所以有可能已遭篡改
接收到的内容可能有误
中间人攻击(Man-in-the-Middle attack,MITM): 请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击.
如何防止篡改
常用的是 MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法.
提供下载服务的网站,比如Apache相关的软件下载,会提供以PGP(Pretty Good Privacy,完美隐私)创建的签名及MD5算法生成的散列值.
三、HTTP首部注入攻击 HTTP首部注入攻击(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任何响应首部或主体的一种攻击.属于被动攻击模式。
向首部主体内添加内容的攻击称为HTTP响应截断攻击(HTTPResponse Splitting Attack)
如下所示,Web应用有时会把从外部接收到的数值,赋给响应首部字段Location和Set-Cookie
Location: http://www.example.com/a.cgi?q=12345
Set-Cookie: UID=12345
HTTP首部注入攻击有可能造成以下影响:
- 设置任何Cookie信息
- 重定向至任何URL
- 显示任意的主体(HTTP响应截断攻击, HTTP Response Splitting Attack)
下面我们以选定某个类别后即可跳转至各类别对应页面的功能为例,讲解HTTP首部注入攻击。该功能为每个类别都设定了一个类别ID值,一旦选定某类别,就会将该ID值反映在响应内的Location首部字段内,形如
Location: http://example.com/?cat=101
令浏览器发生重定向跳转
文章图片
攻击者以下面的内容替代之前的类别ID后发送请求
101%0D%0ASet-Cookie:+SID=123456789
其中,
%0D%0A
代表HTTP报文中的换行符,紧接着的是可强制将攻击者网站的会话ID设置成SID=123456789
的Set-Cookie首部字段。发送该请求之后,假设结果返回以下响应
Location:http://example.com/?cat=101(%0D%0A:换行符)
Set-Cookie:SID=123456789
此刻,首部字段Set-Cookie已生效,因此攻击者可指定修改任意的Cookie信息。通过和会话固定攻击(攻击者可使用指定的会话ID)攻击组合,攻击者可伪装成用户
攻击者输入的%0D%0A,原本应该属于首部字段Location的查询值部分,但经过解析后,%0D%0A变成了换行符,结果插入了新的首部字段
这样一来,攻击者可在响应中插入任意的首部字段
2、重定向至任何URL
该功能就是向URL指定参数后,使本来的URL发生重定向跳转
http://example.com/?redirect=http://www.tricorder.jp
攻击者把重定向指定的参数改写成已设好陷阱的Web网站对应的连接,如下所示
http://example.com/?redirect=http://hackr.jp
用户看到URL后原以为访问example.com,不料实际上被诱导至hackr.jp这个指定的重定向目标
可信度高的Web网站如果开放重定向功能,则很有可能被攻击者选中并用来作为钓鱼攻击的跳板
3、HTTP响应截断攻击
【Web安全|HTTP协议相关漏洞】HTTP响应截断攻击是用在HTTP首部注入的一种攻击。攻击顺序相同,但是要将两个%0D%0A%0D%0A并排插入字符串后发送。利用这两个连续的换行就可作出HTTP首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。这样的攻击叫做HTTP响应截断攻击
%0D%0A%0D%0A之后,想要显示的网页内容
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 学习笔记|网易云音乐推荐系统特训_笔记
- 安全|网络安全:制作 windows 和 linux 客户端恶意软件进行渗透
- 2022虎符|2022虎符网络安全CTF部分wp(1)
- 用Python创建代理Web服务器S1
- 用Python创建代理Web服务器S2
- 网络|被ddos攻击了怎么办,阿里云又太贵了
- WEB安全|Apache Solr 远程命令执行漏洞(CVE-2017-12629)
- WEB安全|ElasticSearch 目录穿越漏洞(CVE-2015-5531)
- 网络安全|网络安全kali渗透学习 web渗透入门 使用WireShark对常用协议抓包