请求头


Accept:指示客户端可接受的响应内容类型,类型分别是 text/html、application/xhtml+xml等


Referer:用于表示发出请求的原始url(例如,用户点击页面上的一个连接)


Accept-Language:浏览器能接受的自然语言


User-Agent:是向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核等信息标识。使服务器能够识别客户使用的操作系统及版本、浏览器及版本、浏览器插件等。爬虫爬取网站资料时,直接使用wget和curl会被服务器拒绝。通常简单加个user-agent伪装一下就会过了


Accept-Encoding:是浏览器发给服务器,声明浏览器支持的编码类型


Host:指定请求服务器的域名/ip地址和端口号,http/1.0不带host,http/1.1新增hsot头,绕过防火墙,可以定义虚假hostHT,部分站点不校验host,可以传任意值,http头攻击。http/1.1中的host可以为空值但不可以不带。如果不带host头,会返回400


Connection:表示持久的客户端与服务端连接。在http/1.0里为了能支持长连接,必须在http请求头里显示指定Connection:keep-alive,在HTTP/1.1里,就默认是开启了keep-alive,要关闭keep-alive需要在HTTP请求头里显示指定Connection:close。keep-alive表示长久连接


X_Forwarded-For:它代表客户端,用来表示http请求端的真实ip,只有在通过http代理或者负载均衡服务器时才会添加该项。当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP。X_Forwarded-For后面有多个ip,第一个是最有可能真实的ip,后面可能是代理或负载均衡地址,还以伪造ip绕过waf


Content-type:用于规定消息主体的内容类型,在客户端向服务器发送请求时,指定请求体的媒体类型。服务器据此判断请求体的格式,从而正确解析数据


Authorization:权限,为一种内置HTTP身份验证向服务器提交证书


Origin:跨域请求,用在跨域Ajax求中,用于指示提出请求的域


响应头


Location:用于在重定向响应(那些状态码以3开头的响应)中说明重定向的目标


Cache-Control:用于向浏览器传送缓存指令(如:no-cache)


Access-Control-Allow-Origin:这个消息头用于指示可否通过跨域Ajax请求获取资源


WWW-Authenticate:这个消息头用在带401状态码的响应中,提供与服务器所支持的身份验证类型有关的信息


Server:这个消息头提供所使用的Web服务器软件的相关信息


X-Frame-Options:指示浏览器框架是否及如何加载当前响应


常用状态码:

1xx:提供信息

2xx:请求被成功提交

3xx:重定向到其他资源

4xx:客户端错误,请求包含某种错误

5xx:服务器执行请求时遇到错误

状态码 解释
200 请求成功,服务器返回了请求的网页
201 PUT请求的响应返回这个状态码,表示请求已成功提交
204 表示服务器接收的请求被成功处理,但是没有内容可以返回给客户端
206 表示客户端对服务器端进行了范围请求,比如对中断的下载进行恢复下载
301 永久重定向,表明当前请求的资源已经永久的被分配的新的uri
302 临时重定向
303 和302类似,但是303明确要求请求需要使用get方法获取资源
304 表明该请求不符合条件
400 请求中存在语法错误,服务器不理解请求的语法
401 请求要求身份验证,对于需要登录的网页,服务器可能返回此响应(未授权,没有权限)
403 服务器拒绝请求,服务器理解请求但是拒绝执行
404 请求的资源不存在,访问的资源没有找到,服务器上不存在该请求要访问的资源
405 表示指定的URL不支持请求中使用的方法。例如,在不支持PUT方法的地方使用该方法
407 需要代理授权,此状态代码与401
408 请求超时,服务器等候请求时发生超时
500 服务器挂了,服务器内部问题
502 网关错误,服务器作为网关或代理,从上游服务器收到无效响应
503 表示尽管Web服务器运转正常,并且能够响应请求,但服务器访问的应用程序还是无法作出响应
504 网关超时,访问服务器超时了,可能是服务器挂了,也可能是网挂了
505 HTTP版本不受支持,服务器不支持请求中所用的HTTP协议版本

常见端口号

端口号 服务 入侵方式
21 ftp、sftp、sftpd 爆破、嗅探、溢出、后门
22 SSH远程连接 爆破、OpenSSH漏洞
23 Tenlnet远程连接 爆破、嗅探、弱口令
25 SMTP邮件服务 邮件伪造
53 DNS域名解析系统 域传送、劫持、缓存投毒、欺骗
67/68 DHCP服务 劫持、欺骗
80/443 Http/Https web应用漏洞
81 IPCan 登录绕过、远程代码执行
110 PoP3 爆破、嗅探
139 Samba服务 爆破、未授权访问、远程命令执行
143 IMAP协议 爆破
161/162 SNMP协议 搜集内网信息
389 LDAP目录访问协议 注入、未授权访问、弱口令
1433 mssql数据库 爆破、注入、SA弱口令
1521 Orade数据库 爆破、注入、反弹shell
2049 MFS服务 配置不当
3306 mysql数据库 爆破、注入、udf提权
3389 远程桌面连接 爆破、shift后门
5000 Sybase/DB2数据库 爆破、注入、提权
5900 VNC 认证绕过、爆破
6379 Redis数据库 未授权访问
8000 JBoss 弱口令、反序列化
8080 Tomcat 弱口令、put文件上传
7001/7002 WebLogic Java反序列化、弱口令

Cookie:

cookie中要是没有这两个属性,属于一个中危漏洞

secure:如果设置这个属性,则仅在Https中请求提交cookie

HttpOnly:如果设置这个属性,将无法通过客户端JavaScript直接访问Cookie

1.1,不安全的Http请求方法:

PUT、DELETE、COPY、MOVE、SEARCH、PROPFIND、TRACE等,不合理的权限配置可能导致网站被攻击者非法入侵。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可等。

方法 描述
GET Get长度限制为1024,特别快,不安全,在URL里可见,URL提交参数以?分隔,多个参数用&连接,请求指定的页面信息,并返回实体主体
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 长度一般无限制,由中间件限制,较慢,安全,URL里不可见,请求的参数在数据包的请求body中
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性
PUT 向指定的资源目录上传文件
DELETE 请求服务器删除指定的资源
COPY 将指定的资源复制到Destination消息头指定的位置
MOVE 将指定的资源移动到Destination消息头指定的位置
SEARCH 在一个目录路径中搜索资源
PROPFIND 获取与指定资源有关的信息,如作者、大小、与内容类型
TRACE 在响应中返回服务器收到的原始请求,主要用于测试或诊断
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

1.2,漏洞验证

使用Burpsuite抓取网站数据包,修改请求包的方法为OPTIONS,响应包中出现PUT、DELETE、TRACE等不安全的 HTTP方式。

1.3,漏洞修复

限制PUT、DELETE、SEARCH、COPY、MOVE、TRACE等危险的方法的访问权限。

如果不需要使用上述 HTTP 方法,应关闭不必要的方法,只留下GET、POST方法

web常见编码

URL编码

1
2
3
4
%3d代表=
%25代表%
%20代表空格
%0a代表换行;

Base64

1
VGh1IFdlYiBBcHBsaWNhdGlvbiBIYWNrZXIncyBIYW5kYm9vaw==

十六进制编码