《Web安全深度剖析》学习笔记(一)

Web安全简介

进行渗透测试有一个条件是必须的,就是攻击者的计算机与服务器必须能够正常通信,那么服务器与客户端是如何进行通信的呢?
依靠的是端口
(web默认运行在服务器的80端口之上)

深入HTTP请求流程

HTTP协议解析

互联网从传统的C/S架构(客户端/服务器架构)转变为更加方便快捷的B/S架构(即浏览器/服务器架构)

HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间相互通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器

URL(统一资源定位符)标准格式:
协议://服务器IP [:端口]/路径/[?查询]

  • 如何不借助浏览器而发起HTTP请求?
    比如Linux系统中的curl命令。(Windows没有自带curl.exe,需要自行下载),可以利用-I选项查看访问的URL返回的HTTP响应头
    在这里插入图片描述
    HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务端发出请求,然后Web服务器返回响应(Response),连接就关闭了,在服务器端不保留连接的有关信息。

HTTP遵循请求(request)/应答(Response)模型

  1. HTTP请求与响应
    HTTP请求包括三部分:请求行、请求头、请求正文
    在这里插入图片描述

HTTP请求行第一行即为请求行,请求行由三部分组成,该行的第一部分说明了是POST请求;该行的第二行是一个/login.php ,用来说明该请求是该域名根目录下的login.php ,该行的最后一部分说明使用的是HTTP1.1版本。

第二行至空白为请求头,其中HOST代表请求的主机地址,User-Agent代表浏览器的标识。请求头由客户端自行设定

(2)HTTP响应
与HTTP请求对应,也是由三部分组成,分别是响应行,响应头和响应正文

HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”
第二行至末尾的空白行为响应头,由服务器向客户端发送
消息报头之后是响应正文,是服务器向客户端发送的HTML数据

  1. HTTP请求方法
    (1)GET
    用于获取请求页面的指定信息
    (2)HEAD
    HEAD除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。(常用来测试超文本链接的有效性、可访问性和最近的改变
    (3)POST
    POST与GET类似,但是最大的区别是,GET方法没有请求内容,而POST是有请求内容的。
    POST请求最多用于向服务器发送大量的数据,GET虽然也能发送数据,但是有大小长度的限制,并且GET请求会将发送的数据显示在浏览器端,而POST不会,所以安全性相对更高一些。
    (4)PUT
    用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。若指定资源不存在,将会创建这个资源,且数据为请求正文属于危险方法!!!!会为服务器建立文件
    举例:

    	PUT /input.txt
    	HOST: www.xxser.com
    	Content-Length:6
    	
    	123456
    

    这段PUT请求将会在主机根目录下创建input.txt,内容为123456(通常服务器都会关闭PUT方法)
    (5)DELETE
    用于请求源服务器删除请求的指定资源,服务器一般都会关闭此方法,因为客户端可以进行删除文件操作,属于危险方法之一。

  2. HTTP状态码
    状态码由三位数字组成,第一位数字定义了响应的类别,且只有以下五种:

  • 1xx:信息提示,表示请求已被成功接收,继续处理。范围为100-101
  • 2xx::成功,服务器成功地处理了请求。范围为200-206
  • 3xx:重定向,用于告诉浏览器客户端,它们的访问资源已被移动,并告诉客户端新的资源地址位置。范围为300-305
  • 4xx:客户端错误提示码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。范围为400-415
  • 5xx:有时候客户端发送了一条 有效请求,但是Web服务器自身却出错了,可能是Web服务器运行出错了,或者网站都挂了。5xx就是用来描述服务器内部错误的,其范围为500-505.

常见状态码:
200:客户端请求成功,是最常见的状态
302:重定向
400:客户端请求有语法错误,不能被 服务器所理解
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务
500:服务器内部错误
//404

  1. HTTP消息(又称为HTTP头)
    由四部分组成:请求头,响应头,普通头和实体头
    (1)请求头只出现在HTTP请求当中
    1⃣️Host
    Host主要用于指定被请求资源的Internet主机和端口,如:
    HOST:www.xxser.com:801
    2⃣️User-Agent
    允许客户端将它的操作系统、浏览器和其他属性告诉服务器,登陆一些网站时,很多时候都可以见到显示我们的浏览器、系统信息,这些都是此头的作用
    User-Agent:My privacy
    3⃣️Referer
    包含一个URL,表示当前访问URL的上一个URL。(即用户从什么地方来到本页面)
    4⃣️Cookie
    它是一段文本,常用来表示请求者身份等。(后面会详细讲述)
    5⃣️Range
    Range可以请求实体的部分内容,多线程下载一定会用到此请求
    6⃣️x-forward-for
    即XXF头,它代表请求端的IP,可以有多个,中间以逗号隔开。
    7⃣️Accept
    用于指定客户端接收哪些类型的信息,如
    Accept: text/html 表示客户端希望接收HTML文本

(2)响应头
1⃣️Server
服务器所使用的Web服务器名称(建议在服务器端修改此头的信息)
2⃣️Set-Cookie
向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发送的Cookie信息。
3⃣️Last-Modified
资源的最后修改时间
4⃣️Location
服务器通过这个头告诉浏览器去访问哪个页面(通常配合302状态码使用)
(3)普通头
如:Date
(4)实体头
1⃣️Content-Type
2⃣️Content-Encoding
3⃣️Content-Length
指明实体正文的长度(以字节方式存储的十进制数字)

实验:
使用Telnet模拟一次HTTP请求
brew install telnet
telnet www.baidu.com 80
在这里插入图片描述
之后利用快捷键Ctrl+]来打开Telnet的回显,之后按一次回车,开始输入文本内容
在这里插入图片描述

之后连续按两次回车(两次回车表示提交请求,速度要快,否则会连接失败)在这里插入图片描述
HTTP协议与HTTPS协议的区别

  • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • HTTP与HTTPS协议使用的是完全不同的连接方式,HTTP用80端口连接,HTTPS用443端口连接
  • HTTPS协议需要到CA申请证书(往往需要收费),而HTTP不需要
  • HTTP连接相对简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,所以HTTPS更加安全。
HTTP应用:黑帽SEO之搜索引擎劫持

SEO,即为 搜索引擎优化。简单的说,就是让网站的排名更高。黑帽SEO就是通过作弊的手段欺骗搜索引擎,获取非正常的排名,让网站更靠前,流量更大。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值