对于HTTP响应报文,比较重要的信息主要有两部分,一部分是响应行中的状态码,另一部分是响应头。下面分别介绍。
响应头信息中比较重要的部分:
(1) Server,服务端所使用的Web服务名称,如:Server:Apache/1.3.6(Unix)。
(2) Set-Cookie:服务器向客户端设置的Cookie。
(3) Last-Modified,服务器通过这个域告诉客户端浏览器,资源的最后修改时间。
(4) Location:重定向用户到另一个页面,比如身份认证通过之后就会转向另一个页面。这个域通常配合302状态码使用。
(5) Content-Length:body部分的长度(单位字节)。
状态码都是由三位数字组成,主要分为5个大类:
1xx:100-101,指示信息,表示请求已经接收,会继续处理。这种状态码很少见到。
2xx:200-206,客户端请求被服务器成功接收并处理后返回的响应;
3xx:300-305,重定向,通常都是在身份认证成功后重定向到一个安全页面;
4xx:400-415,客户端请求错误;
5xx:500-505,服务器端错误。
状态码共有50多个,其中比较常见的有:
常见状态代码 状态描述 说明
200 OK 客户端请求成功
302 Found 重定向,跳转的地址通过location指定。
304 Not Modified 服务端资源未更新。
401 Unauthorized 请求未经授权,需要进行身份验证。
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,例如输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求
大多数的网站扫描工具其基本工作原理都是基于状态码来进行判断。下面我们结合Burpsuite来进一步了解状态码。
我们首先访问服务器中的一个正常页面test1.php,此时的状态码为200。
然后再访问一个不存在的页面test10.php,此时状态码为404:
我们再去访问一个网站中并不存在的目录admin(注意,目录名字后面要加/),状态码依然是404:
我们创建出目录admin,此时显示状态码为200。如果执行chmod 700 admin命令,将目录权限设置为700,那么再次访问目录,状态码为403。
再比如我们在Web服务器中安装上DVWA,访问登录页面,正确输入用户名和密码,拦截请求之后,发送出去,此时返回的状态码为302,并通过location指定了要跳转到的页面。
如果重复访问某个静态页面,则会收到状态码304。表示服务器端资源未更新。