第十三章(一)—WEB渗透(HTTP协议基础)

WEB渗透(一)

WEB攻击面

  • network
  • os
  • web server
  • app server
  • web application
  • database
  • browser

HTTP协议基础

HTTP的特点:

明文
没有任何内建的机密性安全机制。
嗅探或代理截断可查看全部明文信息。
https只能提高传输层安全。只是在传输过程中起到加密作用。对于服务器端和应用程度端代码漏洞是没用的。https也是可以被中间人劫持窃取监听的。
无状态
每一次客户端和服务器端的通信都是独立的过程(排除下层TCP,仅针对HTTP来讲)。
web应用需要跟踪客户端会话(多步通信)。
不使用cookie的应用,客户端每次请求都要重新身份验证(不现实)。
session用于在用户身份验证后跟踪用户行为轨迹,提高了用户体验,但是增加了攻击向量。

客服端每一个通讯过程都是由多个独立的http通讯过程组合在一起组成的,服务器要跟踪这些原本是独立的过程的状态和会话信息从而判断客户端是谁。

服务器端是如何对客户端进行跟踪?
现在基本所有的web应用都是使用cookie来对客户端状态进行跟踪。比如说一个客户端他要访问服务器端的资源,他需要先提交自己的账号密码进行身份认证,身份认证一旦通过了,服务器端就会给客户端下发一个cookie信息,后续客户端向服务器发起的所有访问请求,每一次访问请求的HTTP头里面都会携带这个cookie信息,服务器端之所以能够跟踪客户端的状态,就是通过这个cookie来实现的。每一个通讯的cookie会发生变化的(只有写的不好的web应用程序才会从头到尾给用户一个固定的cookie,这是一个非常不好的安全事件)。
比如张三访问服务器,服务器就把张三有权看到的内容给张三,李四访问服务器,服务器就把李四有权看到的内容给李四,若是把张三有权看到的内容返回给李四,如果这样cookie一旦混乱的话,你就会进入别人的会话状态,操作别人的信息。
若不使用cookie,还要对用户进行身份认证,用户跟踪,怎么实现呢?就是客户端每次访问服务器端的一个资源,服务器都要对其进行一次身份认证,及用户每访问一个连接都要输入一次账号密码,这样才能去跟踪用户的行为,这是一种不现实的行为。

cookie、sessionid、session
严格意义上来讲,cookie和sessionid基本上可以认为是同样的东西,实际上,cookie里面可以存放sessionid,也可以存放别的东西。但session和sessionid是不一样的,session是存放在服务器端的,客户端拿到的是sessionid。
通过sessionid/cookie,提高了用户体验,用户只需要第一次访问web应用的时候进行身份认证,后面只要在授权范围内的访问请求都不需要再次进行身份认证。与此同时,cookie/sessionid就成为了一个安全隐患,成为了另外一个攻击向量。比如,假如张三跟李四都同时登陆这个web应用,此时服务器去区分谁是张三谁是李四是通过他分给用户的sessionid,如果用户进行篡改sessionid,将李四的sessionid改成了张三的sessionid发给服务器端,此时再服务器看来该用户就是张三,接下来服务器就会把张三账号里私有机密的信息都返回给李四,让李四去操作。所以保护session这一块也是需要注意的。
所以在设计应用程序时,要强调让session定时失效,不能是永久性的session,另外也要防止被人窃取之后盗用。

Cycle

一请求、一相应,即我请求你,你返回给我相应的结果,就构成了一个HTTP通信过程的最基本的单元,称为cycle,这是一个完整通信的最小的单元。
在发送请求响应的时候,我客户端发出请求的时候都会携带一些HTTP协议的标准头,服务器给我相应时,相应的结果里也会有一些HTTP的头部分。
HTTP的请求和相应都是由头、body两个部分组成的。
一个头里面会包含很多具体的类型,一个HTTP请求都会包含多个HTTP的头的部分。
跟安全相关的HTTP的header:

1.Set-Cookie
服务器发给客户端的sessionid。
可以通过抓包或一些方式窃取,就可以拿到那个人的身份。
2.Content-Length
响应body部分的字节长度
如果对基于HTTP对web服务器做暴力破解、模糊测试等攻击时,content-length能比较直观的体现出结果。
3.Location
重定向用户到另一个页面,可识别身份认证后允许访问的页面。

这三个都是服务器向客户端发送的响应头。
4.Cookie
客户端发回给服务器证明用户状态的信息(头:值 成对出现)。
存在被窃取风险。
5.Referrer
发起新请求之前用户位于哪个页面,服务器基于此头的安全限制很容易被修改绕过。

这两个都是客户端访问服务器端请求头。

状态码

服务器响应的状态码标识响应的结果类型。分5大类50多个具体的响应码。
100s:服务器响应的信息,通常标识服务器还有后续处理,很少出现。
200s:请求被服务器成功接受并处理后返回的响应结果
300s:重定向,通常在身份认证成功后重定向到一个安全页面(301/302)
400s:标识客户端请求错误,服务器不接受请求
401:需要身份验证
403:拒绝访问
404:目标未发现
500s:服务器内部错误
503:服务不可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值