web应用协议——HTTP
HTTP( 超文本传输协议)
- 一种通信协议, 1990 年提出, 当前版本为HTTP/1.1
- 使用超文本标记语言(HTML) 将资源从服务器传送到客户端
超文本传输协议特点
- 请求、响应模式
- 简单快速: 客户向服务器请求服务时, 只需传输请求方法和路径
- 灵活: HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type 加以标记
- 无连接: 一个请求一个连接, 完成后断开
- 无状态: 协议对于事务处理没有记忆能力, 在服务器不需要先前信息时应答较快
HTTP协议结构
- HTTP的一个会话, 由Request 和response 组成
- HTTP 请求(Requests) 包含三个部分
请求行: 方法, URL, 协议/ 版本(Method-URl-Protocol/Version)
消息报头(Request headers)
请求正文( Entity body)
- HTTP 响应(Responses) 也包含三个部分
状态行: 协议状态代码描叙(ProtocoI-Status code-Description)
消息报头(Response headers)
响应正文( Entity body) 服务器返回的资源的内容
1 HTTP请求方法 POST /servIet/defauIt.JSP HTTP/1.1
HTTP请求方法规定了客户与服务器联系的类型不同
HTTP1.1 支持7 种请求方法:GET, POST, HEAD, OPTiONS, PUT, DELETE, 和TRACE
- 两种最常用的方法: GET 和POST
GET: 把所有请求的数据都放在URL 当中, 从URL 中可以直接看到, 但最大传输的信息量是2 KB
POST: 把请求的数据放在请求的数据体中, 在URI中不可见, 长度不受限, 常用于提交表单
URI(相对路径)
- /servIet/defauIt.JSP 表示一个URI,URI 指明了一个INTERNET 资源。一个URI通常是相对于服务器的根目录被解释的, 使用符号( / ) 开头。
URL(绝对路径)
- HTTP URL ( URL 是一种特殊类型的URI, 包含了用于查找某个资源的足够的信息)的格式如下:
- http://host[":"port][abs_path]
1.1 HTTP请求头域
请求头域(request header) 包含了一些有用的客户机环境的信息和请求的实体(entity body) 信息。比如, 它可以包含浏览器使用的语言和实体的长度等等。每个请求包头都被CRLF( 回车换行) 序列所分离。
一般包含的都是客户机的信息,服务器根据收到的客户机信息返回相应内容。
1.2 HTTP请求实体
请求实体, 在一个典型的HTTP请求中, 这个实体可以变得更长。
Get 方法去请求实体, 在url 中可见, 最大长度2KB
post 方法请求实体, 长度不限, URL 中不可见, 需要借助协议分折软件(burpsuite)
2 HTTP响应
HTTP 响应状态行
- 状态行: HTTP-Version Status-Code Reason-Phrase
- HTTP 一Version 表示服务器HTTP 协议的版本;
- Status 一Code 表示服务器发回的响应状态代码
- Reason 一Phrase 表示状态代码的文本描述。
- 状态代码有三位数字组成, 第一个数字定义了响应的类别, 且有五种可能取值:
1 × × : 指示信息表示请求已接收, 继续处理
2 × × : 成功一表示请求已被,成功接收、理解、接受
3 x x : 重定向一要完成请求必须进行更进一步的操作
4 × × : 客户端错误一请求有语法错误或请求无法实现
5 × × : 服务器端错误一服务器未能实现合法的请求
http 响应消息报头
- 响应消息报头允许服务器传递不能放在状态行的附加信息, 这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age 、Location 、Proxy-Authenticate 、PubIic 、Retry-After 、Server 、Vary 、Warning 、WWW-
Authenticate
3 Burp Suite抓包实验
目标靶机:win2003 server、IIS
客户端:火狐浏览器,通过安装火狐插件可快速切换代理,方便burp抓包
插件设置如下:
burp中 options可以看到设置代理的IP和端口。下图所示:
proxy(代理):主要功能——代理、抓包、干扰、拦截、放行
intercept is on 为拦截状态 其对应的intercept is off 为非拦截状态,设置完代理后打开拦截状态,浏览器发起的请求会被burpsuite所拦截。
可以在消息分析选项卡查看这次请求的所有内容
- Raw 这个视图主要显示web请求的raw格式,包含请求地址, http协议版本, 主机头, 浏览器信息,accept可接受的内容类型,字符集,编码方式,cookies等, 可以手动修改这些内容,然后在点击forward进行渗透测试
- params 这个视图主要是显示客户端请求的参数信息,get或者post的参数,cookies参数,也可以修改
- headers是头部信息和Raw其实差不多,展示更直观
- Hex 这个试图显示Raw的二进制内容
Burp Proxy的拦截功能
主要由Intercept(拦截)选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是:
- Forward的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。
- Drop的功能是你想丢失当前拦截的消息,不再forward到服务器端。
- Interception is on表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;Interception is off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。
- Action的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。
burp suite使用教程参考:https://blog.csdn.net/weixin_38079422/article/details/80729158
4 抓包结果
我们可以看到HTTP请求为get方法,host,客户端,cookie等信息。HTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型
HTTP响应状态码200,服务器版本信息、响应的HTTP内容类型、内容长度
来源:https://www.cnblogs.com/52kj/p/12397301.html