计算机网络与信息安全课件第11章Web 安全Word文档格式.docx

上传人:b****6 文档编号:19211663 上传时间:2023-01-04 格式:DOCX 页数:42 大小:80.59KB
下载 相关 举报
计算机网络与信息安全课件第11章Web 安全Word文档格式.docx_第1页
第1页 / 共42页
计算机网络与信息安全课件第11章Web 安全Word文档格式.docx_第2页
第2页 / 共42页
计算机网络与信息安全课件第11章Web 安全Word文档格式.docx_第3页
第3页 / 共42页
计算机网络与信息安全课件第11章Web 安全Word文档格式.docx_第4页
第4页 / 共42页
计算机网络与信息安全课件第11章Web 安全Word文档格式.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

计算机网络与信息安全课件第11章Web 安全Word文档格式.docx

《计算机网络与信息安全课件第11章Web 安全Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机网络与信息安全课件第11章Web 安全Word文档格式.docx(42页珍藏版)》请在冰豆网上搜索。

计算机网络与信息安全课件第11章Web 安全Word文档格式.docx

HTTP消息分为HTTP请求和HTTP响应两大部分:

HTTP-message=Request|Response

下面以HTTP/1.1为主,并对比了HTTP/1.0,简要介绍HTTP协议。

11.2.1HTTP请求(Request)

HTTP请求消息的语法格式如下:

Request=Request-Line(请求行)

*((general-header(常规头域)

|request-header(请求头域)

|entity-header)CRLF)(实体头域)

CRLF

[message-body](可选的消息体)

一个HTTP请求消息以一个请求行开始,后接一系列不同的头域和一个可选的消息体。

11.2.1.1请求行(Request-Line)

一个HTTP请求行的语法格式为:

Request-Line=MethodSPRequest-URISPHTTP-VersionCRLF

请求行通常包括三个元素:

Method(请求方法)、Request-URI(请求的URI)以及HTTP-Version(客户端的协议版本)。

请求方法(Method)

Method="

OPTIONS"

|"

GET"

HEAD"

POST"

PUT"

DELETE"

TRACE"

CONNECT"

|extension-method

extension-method=token

请求方法用于通知Web服务器,对于Request-URI指定的资源,希望得到什么样的服务。

HTTP/1.0中规定了三种正式请求方法:

GET、HEAD和POST,它们在几乎每个Web服务器中都被实现了。

RFC1945的附录中定义的四个附加的请求方法(PUT、DELETE、LINK、UNLINK)只在少数Web服务器中实现。

HTTP/1.1中筛除了LINK和UNLINK请求,又引入了OPTIONS、TRACE和CONNECT三个新的请求方法。

尽管HTTP/1.1中定义了八种请求方法,但协议并不要求Web软件支持所有的方法。

在RFC2616中指出,只有GET和HEAD方法才是MUST级的需求。

实现了这两个方法的Web服务器或客户端都可以算作是与HTTP/1.1兼容的。

对于没有实现的方法,Web服务器应该用响应“501(NotImplemented)”进行说明。

HTTP中特别指出,Web服务器对GET请求和HEAD请求的响应结果应该完全一样,除了HEAD的响应中一定不要(MUSTNOT)包含任何消息实体。

另外,请求方法是大小写敏感的。

请求的URI(Request-URI)

Request-URI="

*"

|absoluteURI|abs_path|authority

URI即统一资源标识符,它代表着独立于其当前位置或者已知名称的资源。

URI分为绝对URI和相对URI。

绝对URI字符串是以一个访问方案(scheme)开始,后跟一个标识着可以用该访问方案获取的资源的字符串。

相对URI前面是没有访问方案的。

访问方案包括file、news、telnet、gopher等,但最广泛使用的就是http。

“*”表示该请求不是应用于某个特定的资源,而是应用于Web服务器本身。

authority格式只用于CONNECT方法。

Request-URI不应为空;

否则必须当作“/”(服务器的根目录)来处理。

RFC2616的5.1.2节中指出,尽管Web客户端只在其通过proxy访问Web服务器时才生成绝对URI,但是所有的HTTP/1.1的Web服务器都必须(MUST)能接受绝对URI。

协议版本(HTTP-Version)

HTTP-Version="

HTTP"

"

/"

1*DIGIT"

."

1*DIGIT

客户端的协议版本请求分为两大部分:

协议声明部分和版本声明部分。

对于HTTP请求来说,协议说明部分都是“HTTP”。

版本声明部分包括主版本号和副版本号。

协议版本声明部分是为了表明发送方和接收方的通信处理能力。

通信双方必须可以解释版本号小于或等于自己版本号的所有消息。

服务器的响应消息应该使用客户端能够理解的协议版本。

消息的解释涉及到语法(消息的格式)和语义(该版本的协议功能和特性)两个方面,它与主、副版本号紧密相关。

副版本号的变化意味着HTTP消息语义的扩充,并不影响消息的格式表示。

主版本号的变化表明消息的格式发生了改变,这时可能会对互操作性产生影响。

11.2.1.2头域(HeaderField)

头域是HTTP协议中的一个重要组成部分,它是请求方法的重要补充,丰富了对各种请求的处理方法。

头域可以提供与资源相关的元数据,如长度、语言等,来描述请求或响应。

头域是一种ASCII字符串,可以表示为:

message-header=field-name"

:

"

[field-value]

field-name=token

field-value=*(field-content|LWS)

field-content=<

theOCTETsmakingupthefield-value

andconsistingofeither*TEXTorcombinations

oftoken,separators,andquoted-string>

HTTP消息中可以包含任意数量的头域,每个头域以CRLF(回车换行)结束。

如果接收方不能识别消息中的头域,它只需简单地忽略该头域。

常规头域(General-header)

常规头域可以同时出现在请求和响应消息的头域中。

它只应用于传输的消息,并不作用于消息中的实体。

general-header=Cache-Control

|Connection

|Date

|Pragma

|Trailer

|Transfer-Encoding

|Upgrade

|Via

|Warning

HTTP/1.0中只定义了两个常规头域:

Date和Pragma。

HTTP/1.1中增加了另外七个常规头域。

Date头域指出消息的生成时间,它可以采用三种语法的日期字符串,即RFC1123(原来的RFC822)、RFC1036(原来的RFC850)和ANSIC的asctime()格式。

Pragma用于发送伪指令,而HTTP/1.0中只定义了一条伪指令:

Pragma:

no-cache。

HTTP/1.1中已经定义了更通用的头域Cache-Control,它可以用于在请求和响应中发送高速缓存控制请求指令,更精确地控制高速缓存,但为了保持向后兼容仍允许使用Pragma。

Trailer和Transfer-Encoding是为实现分块(chunked)传输而引入的。

Via头域用于了解HTTP消息所走的路径,并可用来避免请求路径形成环路。

Upgrade用于协议升级,而Warning用于提供更详尽的错误信息。

请求头域(Request-header)

request-header=Accept

|Accept-Charset

|Accept-Encoding

|Accept-Language

|Authorization

|Expect

|From

|Host

|If-Match

|If-Modified-Since

|If-None-Match

|If-Range

|If-Unmodified-Since

|Max-Forwards

|Proxy-Authorization

|Range

|Referer

|TE

|User-Agent

请求头域是客户端发送的有关请求和客户端的附加信息。

HTTP/1.0中定义了五个请求头域(Authorization、From、If-Modified-Since、Referer、User-Agent),而HTTP/1.1中又增加了其它十四个新的请求头域,并对原有头域的一些语义进行了改变,如If-Modified-Since不再只能和GET方法一起使用,而是可以用于所有的方法了。

这些请求头域可以分为四类:

●响应首选项:

用来表示有关响应的首选项

●随请求发送的消息:

用来和请求消息一起发送的额外信息的头域

●条件请求:

用来对请求方法进行有条件的限制

●对服务器的限制:

让服务器以特定方式服务

实体头域(Entity-header)

entity-header=Allow

|Content-Encoding

|Content-Language

|Content-Length

|Content-Location

|Content-MD5

|Content-Range

|Content-Type

|Expires

|Last-Modified

|extension-header

extension-header=message-header

实体头域用来表示与实体有关的信息。

它可以存在于请求或响应消息中,但不是这些消息的一种属性,而是被请求或发送的资源的一种属性。

无法识别的常规头域和请求头域都会被当成实体头域来看待,而无法识别的实体头域可以被接收方忽略。

HTTP/1.0中定义了六个实体头域(Allow、Content-Encoding、Content-Length、Content-Type、Expires、Last-Modified),HTTP/1.1中又增加了四个新的头域。

11.2.1.3消息体(MessageBody)

message-body=entity-body

|<

entity-bodyencodedasperTransfer-Encoding>

在请求消息中,消息体也称为请求主体。

它可以是实体主体本身,也可以是编码后的实体主体。

它是HTTP消息中最重要的部分。

在请求消息中,它通常是POST的参数内容;

在响应消息中,它通常是客户端请求的网页或图片。

11.2.2HTTP响应(Response)

HTTP响应消息的语法格式如下:

Response=Status-Line(状态行)

|response-header(响应头域)

我们已在前节介绍了常规头域、实体头域和可选的消息体,这里着重介绍状态行和响应头域。

11.2.2.1状态行(Status-Lines)

Status-Line=HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF

HTTP消息通常以状态行开始。

状态行包括三个元素:

服务器的协议版本、3位数的状态码和一个自然语言的原因短语。

状态码的头一位数字代表了响应代码的类别。

HTTP中包括5个响应代码类别:

信息类(1xx)、成功类(2xx)、重定向类(3xx)、客户端错误类(4xx)和服务器错误类(5xx)。

虽然并不是所有的状态码都能被HTTP应用程序理解,但是响应代码的类别是必须可理解的。

这样即使HTTP软件接收到不能识别的状态码,也可以根据其所属类别做出合理的反应。

为便于实现人员的调试工作,状态行中还提供了用自然语言描述的原因短语。

有的客户端软件会显示这些原因短语,使用户了解当前通信的状况。

尽管状态码是标准化的,但是原因短语并没有标准化。

不同的自然语言描述不会对状态码的解释产生影响。

不同语言的国家可以使用不同的自然语言表示原因短语。

信息类响应(1xx)

100Continue

101SwitchingProtocols

在RFC1945的HTTP/1.0中虽然没有定义任何信息类状态码,但对信息类响应本身却作了说明,对1xx响应进行了限制,如响应中不能包含主体。

在此基础上,HTTP/1.1中新定义了“100”和“101”两个信息类状态码。

成功类响应(2xx)

200OK

201Created

202Accepted

203Non-AuthoritativeInformation

204NoContent

205ResetContent

206PartialContent

成功类响应表示服务器成功地接收、理解和接受了客户端的请求。

它并不代表响应结果一定可以满足客户端的要求,只能说明服务器理解了请求,并能根据请求方法产生适当的反馈。

HTTP/1.0中定义了四个2xx响应码(200、201、202、204),HTTP/1.1又新增了其它三个。

重定向类响应(3xx)

300MultipleChoices

301MovedPermanently

302Found

303SeeOther

304NotModified

305UseProxy

306(Unused)

307TemporaryRedirect

重定向类响应用来通知客户端为完成请求而需采取其它的行动。

重定向可以多次进行,为防止陷入无限循环,服务器应采取某种策略限定重定向的次数。

HTTP/1.0中定义了四个重定向类状态码(300、301、302、304),HTTP/1.1中对“300”和“302”进行了重新规范,并新增加了四个新的重定向类状态码。

客户端错误类响应(4xx)

客户端错误类响应指出由客户端产生的错误。

通常这些错误的状态码和原因短语会被浏览器显示给用户,提示他们来进行改正。

HTTP/1.0中定义了四个客户端错误类状态码(400、401、403、404),HTTP/1.1中为了给客户端提供更全面的反馈,又新增了十四个新的状态码。

这些客户端错误类响应可以分为五类:

●HTTP/1.0的错误状态码:

即原来HTTP/1.0中定义的状态码

400BadRequest

401Unauthorized

403Forbidden

404NotFound

●细分状态码:

为处理一些特殊的情况,对HTTP/1.0的四个状态码进行了细分,创建了新的状态码

405MethodNotAllowed

407ProxyAuthenticationRequired

408RequestTimeout

410Gone

协商状态码:

用于进行内容协商的状态码。

客户端可能会指定一些语言或字符集,服务器通过协商码与之沟通,说明自己的服务能力。

406NotAcceptable

413RequestEntityTooLarge

415UnsupportedMediaType

●长度相关状态码:

用来表明服务器对于长度的一种要求。

长度包括消息的长度和Request-URI的长度

411LengthRequired

414Request-URITooLong

●新功能状态码:

HTTP/1.1中新增加的功能对应的状态码。

402PaymentRequired

409Conflict

412PreconditionFailed

416RequestedRangeNotSatisfiable

417ExpectationFailed

服务器错误类响应(5xx)

500InternalServerError

501NotImplemented

502BadGateway

503ServiceUnavailable

504GatewayTimeout

505HTTPVersionNotSupported

服务器错误类响应反馈与服务器有关的错误信息。

当服务器当前无法完成请求时,也会反馈服务器错误类状态码。

HTTP/1.0中定义了前四个状态码,HTTP/1.1对1.0中非正式的Retry-After头域进行了规范,将其用“503ServiceUnavailable”来表示,并引入了“504”和“505”两个状态码。

11.2.2.2响应头域(Response-header)

response-header=Accept-Ranges

|Age

|ETag

|Location

|Proxy-Authenticate

|Retry-After

|Server

|Vary

|WWW-Authenticate

响应头域通常用来发送有关响应的状态行中未包含的附加信息。

它提供的是关于Web服务器本身的信息,而不是关于实体的信息。

HTTP/1.1中对HTTP/1.0中的原有响应头域(Location、Server、WWW-Authenticate)重新进行说明,并添加了六个新的响应头域。

这里Location和Content-Location是完全不同的。

11.2.3小结

要研究Web服务器的通信行为,首先必须了解Web通信的协议。

作为Web服务器的通信基础,HTTP协议规定了Web服务器和客户端之间通信时使用的语法和语义。

本节简要介绍了介绍了HTTP/1.1的请求和响应消息。

由于HTTP/1.0仍在广泛使用,所以也注意对比了两者的一些差别。

尽管协议中已经有了明确的规范,但不同的Web服务器软件在实现HTTP协议方面会有一些不同的做法,从而导致不同的Web服务器实现将表现出不同的行为特征,甚至出现兼容性错误。

而这将为Web服务器的识别提供线索。

11.3Web服务器的映射技术

映射是一种侦察技术,用于获得一张目标网络配置信息的映射图,精确地了解目标网络的网络结构、主机分布、运行的操作系统和服务版本类型等信息。

本节将关注于Web服务器的侦察方法,研究新的映射技术。

11.3.1Web服务器的banner引起的信息泄漏

一个精心策划的Web攻击通常分为三个步骤:

侦察、进攻和占据。

侦察是了解目标的情况,如运行的操作系统、开放的端口等;

进攻是利用侦察的情报,对目标实施有针对性的攻击;

占据是在攻击成功后,清除攻击的痕迹,安装后门程序,以便长期利用。

在这三个步骤中,侦察是整个攻击成功的关键,它的情报可以使入侵者预先制定精确的攻击方案,预备好适用于目标平台环境的攻击工具和后门软件,从而保证他们在最短的时间内完成攻击,并迅速隐藏自己。

侦察使用的映射技术可以分为三种:

主机映射、操作系统映射和服务映射。

主机映射目的是了解网络上有哪些主机和开放的端口,主要通过ping扫描和开放端口扫描来实现,常用的工具有Strobe、Pinger等。

操作系统映射是侦察目标主机的操作系统类型和版本,主要是通过发送一些设置了奇怪的TCP标志或选项的报文,来试探目标操作系统的反应。

由于各类操作系统的TCP/IP栈的实现不同,因而对于同样的报文,不同的操作系统会有不同的特征性反应,因此这种方法也称为栈指纹识别,其代表性的工具是Nmap。

服务映射是判断目标上开放端口运行服务的类型和版本。

由于安全漏洞都是和具体的软件版本相关的,所以是否能获取目标服务的准确信息成为攻击能否成功的关键。

Web服务映射常用的方法是采集服务标识(banner)。

Web服务器通常会在响应信息中主动通告其服务器类型和版本信息。

例如,接收到下面的信息:

GET/HTTP/1.0

对方通常会反馈这类信息:

HTTP/1.1200OK

Date:

Sun,12Oct200314:

03:

39GMT

Server:

Apache/1.3.12(Unix)(RedHat/Linux)PHP/3.0.15mod_perl/1.21

Last-Modified:

Thu,11Sep200309:

37:

28GMT

ETag:

1c3a0-52-3f604258"

Accept-Ranges:

bytes

Content-Length

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1