title: HTTP协议基础
date: 2016-06-30 21:35
tags: Kali渗透测试 Web渗透测试
0x00 Web技术发展
从静态Web到动态Web,从C/S模式到B/S模式,从PC到到移动端,互联网技术日新月异,翻天覆地,每个领域都在不断的细化。
动态web是可交互的,它会根据不同的用户输入返回不同的结果。
0x01 Web宏观攻击
一个动态Web的宏观攻击可以分为以下几种:
- Network
- OS
-
Web Server
Web服务器端 -
APP Server
移动服务器端 -
Web Application
Web应用程序 -
Database
数据库,比如sql注入 -
Browser
浏览器,比如同源策略,沙箱技术
当今的web攻击类型有几百种,但大部分是针对Web应用程序和数据库的攻击。
0x02 HTTP协议基础
明文
HTTP协议是明文协议,无内建的机密性安全机制,简单的嗅探或代理截断便可查看全部明文信息。
而HTTPS也只是对传输的过程进行了加密而已,不代表整个数据流的传递过程都是安全的,只是提高了传输层的安全而已,对于任意节点都是可以发起攻击。(比如中间人攻击,对网络传输的任意节点劫持,然后更改网络数据后再投放到网络中去。)
无状态
每一次客户端和服务器端的通信都是独立的过程,http协议是不可跟踪用户行为信息的,但是web应用却是需要跟踪客户端会话(既是多步通信),此时便需要cookie和session的概念了。
服务器通过cookie来验证用户,然后使用sesison用于在用户身份验证后跟踪用户行为轨迹。若是不使用cookie那么客户端的每次请求都要进行身份验证,显然这是不现实的。
基本上session id和cookie是等同的,客户端可以拿到的是session id。
HTTP header
一次http请求会包含多个header信息,这里只了解与安全相关的header信息。
- Set-Cookie:服务端发送给客户端的Session ID(存在被窃取的风险)
- Content-Length:响应body部分的字节长度,应用场景:用于验证表单暴力破解web账号登陆密码是否成功。
- Location:重定向用户到另一个页面,可识别身份认证后允许访问的页面。
前三个都是响应头,下面是常用的请求头
- Cookie:客服端发回给服务器证明用户状态的信息(使用键值对的形式存放 cookie1:data;cookie2:data...)
- Referrer:发起新请求之前用户位于哪个页面,服务器基于此头的安全限制很容易被修改绕过。
状态码
服务器端响应的状态码表示响应的结果类型,5大类50多个具体响应码。
它们分别是100系列,200系列,300系列,400系列,500系列。
100s:服务器响应的信息,通常表示服务器还有后续处理,基本不会单独出现。
200s:请求被服务器成功接受并处理后返回的响应结果。
300s:重定向,通常再身份认证成功后重定向到一个安全页面(301:表示永久重定向,302临时重定向)
400s:表示服务器不接受客客户端,客服端请求错误:
401:表示需要身份认证。
403:表示拒绝访问,不具备访问权限。
404:目标未发现。
500s:服务器内部错误(503:表示服务不可用)
当然状态码远远不至于这些,可以通过https://www.w3.org/,这个网站来查看状态码。