渗透测试之WEB协议剖析

前言

我们所做的渗透测试主流还是倾向于WEB方向的,由此可见对于常用的WEB协议的了解也是非常重要的,这一小节主要简述一些常用的WEB协议内容。

IP协议

IP(Internet Protocol)协议的英文名直译就是因特网协议,IP协议是TCP/IP协议簇的核心协议,也是TCP/IP协议的载体,所有的TCP、UDP、、ICMP数据都以IP协议数据报格式传输。

IP协议提供的是不可靠的、无连接的数据传送服务。

在日常生活当中每一台要上网的电脑都会有ISP(网络服务提供商)给予一个上网的IP地址,通过该IP地址连接到网络进行上网冲浪。

IP包头:

渗透测试之WEB协议剖析 第1张

TCP协议

TCP/IP(Transmission Control Protocol/InternetProtocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是由ARPANET网的研究机构发展起来的。

TCP协议的首部格式

渗透测试之WEB协议剖析 第2张


TCP协议的特点

(1)TCP 是面向连接的传输层协议

(2)TCP 提供可靠交付的服务

(3)TCP 提供全双工通信

(4)面向字节流


TCP三次握手

渗透测试之WEB协议剖析 第3张

步骤:

(1)客户机A向服务器B发送链接请求,并且设置SYN=1,seq=x 

(2)服务器B收到来自客户机A的链接请求之后,向客户机发送响应,同时设置SYN=1,seq=y,ACK=1,ack=x+1

(3)当客户机收到来自服务器的响应之后,会给服务器返回一个响应表示已经收到该响应(ACK=1,seq=x+1,ack=y+1)。

由于TCP协议的内容较多,如果写起来的话可能需要2-3篇博客内容,而次博客主要侧重信安,所以有兴趣的可以自我了解,看TCP的三次握手、四次分手、TCP的通信、TCP的自动重传等等内容。


ARP协议

ARP (AddressResolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。 这一部分内容如果要解释清楚的话可能较为费劲,但是对于学习了《计算机网络》的人来说就比较容易懂这一过程了(IP数据包经过一系列的封包操作——封装为物理MAC帧——解MAC物理帧——解IP数据包)

可以使用DOS命令来查看本地ARP缓冲表中的信息内容:

渗透测试之WEB协议剖析 第4张

DNS协议

DNS(Domain Name System)即域名系统,它主要用于实现IP地址与域名地址之间的相互转换。我们经常会在浏览器URL(统一资源定位)地址栏中输入的是一段英文字母组成的域名,而不是一段IP地址,因为IP地址的多变,又是纯数字所以容易记混,所以常常使用域名来进行查询,而DNS的主要左右就是将此时的域名转换为IP地址进行查询,这个查询过程较为复杂,如果细化来说至少要有10个步骤以上(包括域名解析、DNS服务器端的迭代查询等等操作)。

NetBIOS协议

NetBIOS(网络基本输入/输出系统)最初由 IBM,Sytek 作为API开发,使用户软件能使用局域网的资源。自从诞生,Netbois成为许多其他网络应用程序的基础。严格意义上,Netbios 是接入网络服务的接口标准。 

HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:WorldWide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP请求响应模型:

渗透测试之WEB协议剖析 第5张

HTTP消息请求格式

渗透测试之WEB协议剖析 第6张


渗透测试之WEB协议剖析 第7张

HTTP响应消息结构

渗透测试之WEB协议剖析 第8张

HTTP的响应状态码:

1XX:信息提示,表示请求已被成功接收,继续处理。其范围是100~101

2XX:成功,服务器成功地处理了请求,其范围是200~206

3XX:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已经被移动,并告诉客户新的资源地址位置。

4XX:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围是400~415

5XX:有是有客户端发送一条有效请求,但WEB服务器自身却出错了,可能是WEB服务请运行出错了,或者网站都挂了。范围:500~505

常见的状态码描述:

200:客户端请求成功,是最常见的状态。

302:重定向。

404:请求资源不存在,是最常见的状态。

400:客户端请求有语法错误,不能被服务器所理解。

403:服务器收到请求,但是拒绝提供服务。

500:服务器内部错误,是最常见的状态之一。

503:服务器当前不能处理客户端请求,一段时间后可能恢复正常。


几个重要的HTTP头部构成部分

(1)Host——请求报头部内容,主要用于指定被请求资源的Internet主机和端口号,例如:Host:www.baidu.com:88888

(2)User-Agent——请求报头域允许客户端将他的操作系统、浏览器和其他属性告诉服务器。登录一些网站时,很多时候都可以见到显示我们的浏览器、系统信息。

(3)Referer——代表当前访问的URL的上一个URL,也就是说,用户是从什么地方来到本页面的,来自哪里。

(4)Cookie——Cookie是一段文本,常用来表示请求者身份等。

(5)X-Forward-For———代表请求端的IP,可以有多个,中间使用“,”隔开。


添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。