无题
请求头
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 | %3d代表= |
Base64
1 | VGh1IFdlYiBBcHBsaWNhdGlvbiBIYWNrZXIncyBIYW5kYm9vaw== |
十六进制编码