首页 > 其他分享 >web安全详解(渗透测试基础)

web安全详解(渗透测试基础)

时间:2023-05-29 22:56:14浏览次数:46  
标签:web 请求 Web 渗透 用户 详解 Cookie 测试 客户端

一、Web基础知识

1.http协议

超文本传输协议是互联网上应用最广泛的一种网络协议。所有www文件都必须遵守的一个标准,是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范,简单点说就是一种固定的通讯规则。

2.网络三种架构及特点

网络应用程序架构包括三种:
客户机/服务器结构(C/S)
浏览器/服务器结构(B/S)
P2P结构

C/S架构

  1. 需要安装特定的客户端程序
  2. 针对不同平台开发不同版本
  3. 升级应用需重新安装
  4. 能够直接使用客户端硬件资源

B/S架构

  1. 客户端无需安装,有Web浏览器即可
  2. 跨平台能力
  3. 无缝升级,客户端免维护

P2P架构
点到点系统,不需要服务器中转,客户端与客户端彼此直接通信

3. Web应用的特点

  1. 应用是图形化和易于导航的,能够在页面显示色彩丰富的图形和文本。
  2. 应用与平台无关,可以使用任何平台通过internet访问。
  3. Web应用是分布式的,不同的信息可以放在不同的站点上。
  4. Web应用是动态的,web站点的信息包含站点本身的信息,信息的提供者也可以对网站的信息进行更新。

4.URL组成

Protocol:指定使用的传输协议
hostname:主机名
port:端口号
path:路径
parameters:参数

query:可选,用于给动态网页传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

fragment:信息片段,字符串,用于指定网络资源中的片断。

6.Http协议的性质

  1. HTTP是简单的
  2. HTTP是可扩展的
  3. HTTP是无状态,有会话的
  4. HTTP是可靠的

7.请求响应报文的格式

HTTP请求报文分为三部分

  1. 请求行 请求方法、URL、协议版本等(消息报头)
  2. 请求头 由一个头域名、冒号和值域组成
  3. 请求体

响应

  1. 响应行 协议和状态码 状态码分类
  2. 响应头
  3. 响应体

8.请求方法

GET POST OPTIONS HEAD PUT DELETE TRACE CONNECT

9.http缓存

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。
当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。
这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。

10.缓存新鲜度如何判断

Web服务器通过2种方式来判断浏览器缓存是否是最新的
1、 Last-Modified和If-Modified-Since
2、 ETags和If-None-Match

11.Http重定向原理以及状态码

1XX 指示信息
2XX 请求发送成功
3XX 重定向
4XX 客户端发送的请求有语法错误
5XX 服务器错误

12.HTTPS协议 数字证书

13.HTTPS协议与HTTP协议的区别?

  1. HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  2. HTTP采用80端口连接,而HTTPS则是443端口。
  3. HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费,也有些web容器提供,如TOMCAT。HTTP协议不需要。

14. Web客户端的作用

  1. 用来发送HTTP请求
  2. 接收服务器响应
  3. 把服务器返回的HTML代码渲染成界面Web客户端来主要是浏览器。

15.Web服务端作用

  1. 监听客户请求
  2. 处理客户端的简单请求(一般静态页面)
  3. 客户端与数据库之间的屏障
  4. 处理复杂系统的业务和数据库的访问

16.集群环境的作用

17.什么是Cookie,Cookie的作用。

18.Cookie 的类型

  1. 会话Cookie:保存在内存中,由浏览器维护,浏览器关闭后消失。
  2. 持久性Cookie:保存在硬盘里,有过期时间,用户手动清理或到了过期时间,持久性Cookie会被删除。

Expires属性:Cookie中的maxAge用来表示该属性,单位为秒。

19.session的作用和原理

Session的原理

  1. 用户第一次请求服务器时,服务器端会生成一个sessionId
  2. 服务器端将生成的sessionId返回给客户端,通过set-cookie
  3. 客户端收到sessionId会将它保存在Cookie中,当客户端再次访问服务端时会带上这个sessionId
  4. 当服务端再次接收到来自客户端的请求时,会先去检查是否存在sessionId,不存在就新建一个sessionId重复1,2的流程,如果存在就去遍历服务端的session文件,找到与这个sessionId相对应的文件,文件中的键值便是sessionId,值为当前用户的一些信息
  5. 此后的请求都会交换这个 sessionId ,进行有状态的会话

Session的两种实现方式(也就是传递方式)

  1. 通过Cookie实现
  2. 通过URL重写来实现

Session 与Cookie的区别

  1. Cookie的数据保存在客户端浏览器,Session保存在服务器
  2. 服务端保存状态机制需要在客户端做标记,所以Session可能借助Cookie机制
  3. Cookie通常用于客户端保存用户的登录状态
  4. Session是可以存取任何类型的数据的,但是Cookie只能存入字符串
  5. Cookie存储数据大小有限制,Session没有限制

20. Token的原理

  1. 用户通过用户名和密码发送请求。
  2. 程序验证。
  3. 程序返回一个签名的token给客户端。
  4. 客户端储存token,并且每次用于每次发送请求。
  5. 服务端验证token并返回数据。

21.数据的编码方式

url编码是一种浏览器用来打包表单输入的格式。

Base64就是一种用64个ASCII字符来表示任意二进制数据的方法。

MD5 为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。目前不可逆解。

22.Web测试的类型

  1. 界面测试:导航测试、图形测试、内容测试、整体界面测试、界面控件测试
  2. 功能测试:
  3. 性能测试
  4. 兼容性测试
  5. 安全性测试等

23.H5优点

  1. 跨平台优势,H5页面在各个平台都适用,且可以在网页上直接进行调试和修改,开发和维护的成本较低,开发周期较短。
  2. 强化了Web网页的表现性能。除了可描绘二维图形外,还准备了用于播放视频和音频的标签。
  3. 追加了本地数据库等Web应用的功能。
  4. H5营销的数据统计方便

24. APP测试/Web测试/H5测试的区别

相同之处

不同之处

  1. 测试平台(容器)不同
  2. 兼容性测试不同
  3. 系统架构不一样
  4. 发布流程不同
  5. APP还有一些专项测试

25.移动端常用的三种开发模式

二、探索式测试

  1. 传递测试法:看数据
  2. 测一送一: 同时执行两种同样的操作。
  3. 遍历测试法: 测试弹窗,测试所有弹窗。
  4. 破坏测试法:比如网络或者内存。(前四种主要是全局的)

三、敏捷测试方法

3.1 瀑布模型和敏捷模型比较

顺序(瀑布模型):简单,分阶段,阶段间存在因果关系,不支持用户参与,要求预先确定需求。
使用范围:需求易于完善定义且不易变更的软件系统。

敏捷(迭代):不要求需求预先完备定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化。
使用范围:需求复杂、难以确定、动态变化的软件系统

3.2 Scrum框架包括3个角色、3个工件、5个事件、5个价值

3个角色:产品负责人 ScrumMaster 开发团队

3个工件
产品Backlog
SprintBacklog
产品增量

5个事件
Sprint(Sprint本身是一个事件,包括了如下4个事件)
Sprint计划会议
每日站会
Sprint评审会议
Sprint回顾会议

5个价值
承诺 – 愿意对目标做出承诺
专注– 把你的心思和能力都用到你承诺的工作上去
开放– Scrum 把项目中的一切开放给每个人看
尊重– 每个人都有他独特的背景和经验
勇气– 有勇气做出承诺,履行承诺,接受别人的尊重

3.3 用户故事包含三个要素

  1. 角色(who) :谁要使用这个
  2. 活动(what) :要完成什么活动
  3. 价值(value) :为什么要这么做,这么做能带来什么价值

3.4 用户故事的特性

  1. 独立的
  2. 可讨论的
  3. 有价值的
  4. 可估算的
  5. 小的
  6. 可测试的

3.5用户故事的优先级

1.Must 2.Should 3.Could 4.Would Not

3.6 看板的作用

  1. 明确的阶段及准入准则。
  2. 每个阶段的任务数量,控制在制品<=4。
  3. 交付周期中的各个时间长度。
  4. 待交付价值已交付价值。
  5. 信息的可视化及变化通知。

3.7 什么是devops

:文化改变+自动化工具=不断变化的市场。也是开发模式:敏捷+自动化工具

3.8 测试左移 和 测试右移

测试左移

  1. 评审
  2. 技术对齐
  3. 自测赋能
  4. 多角色协作

测试右移

  1. 灰度
  2. 监控
  3. 问题归因

四、web安全

4.1 渗透测试主要做什么?

4.2 渗透测试的流程

  1. 明确目标
  2. 信息收集
  3. 漏洞探测
  4. 漏洞验证
  5. 编写报告
  6. 信息整理与分析

4.3 信息收集的内容

  1. 域名信息
  2. 敏感目录
  3. 端口扫描
  4. 旁站C段
  5. 整站分析

4.4 同源策略概念及意义

概念:两个页面地址中的协议域名(或IP)子域名端口号一致,则表示同源

意义:限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性

4.5 浏览器沙箱

沙箱(Sandbox):泛指“资源隔离类模块”的代名词

设计沙箱的目的:

  1. 让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源
  2. 如果一定要跨越沙箱边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性

4.6 恶意网址拦截机制

浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面

4.7 XSS攻击的原理

攻击者可以在之间输入JavaScript代码,实现一些“特殊效果”
在真实的攻击中,攻击者不仅仅弹出一个框,通常使用

而在x.txt中就存放着攻击者的恶意JavaScript代码,这段代码可能是
用来盗取用户的Cookie,也可能是监控键盘记录等恶意行为

4.8 xss三种类型

反射型:将恶意代码附着在参数中实例,

储存型:当用户提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器

DOM:通过JavaScript修改页面的DOM节点形成的XSS

4.9 XSS漏洞防范

  1. 过滤 html
  2. PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤
  3. 在设置Cookie时,加上HttpOnly参数

4.10 什么是sql注入?

SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令

4.11 sql注入的类型?

  1. 字符型注入
  2. 数字型注入
  3. 盲注
  4. 联合注入

4.12 盲注的类型?

  1. 布尔盲注
  2. 时间盲注

4.13 什么是文件包含漏洞?

开发人员为了增加代码的灵活性,通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。PHP、JSP、ASP等语言中都可能会有文件包含漏洞,但PHP中居多。

4.14 利用文件包含漏洞满足下面两个条件?

  1. Include()等函数通过动态变量的方式引入需要包含的文件;
  2. 用户能够控制该动态变量

4.15 文件包含漏洞预防

  1. 严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含的文件是否可被外部控制;
  2. 路径限制:限制被包含的文件只能在某一文件夹内, 一定要禁止目录跳转字符,如“…/”;
  3. 包含文件验证:验证被包含的文件是否是白名单中的一员;
  4. 尽量不要使用动态包含,可以在需要包含的页面固定写好,如: include(“head.php”);.

4.16 文件上传检测的内容?

  1. 客户端检测:客户端使用JS检测,在文件未上传时,就对文件进行验证
  2. 服务器端检测:检测文件扩展名是否合法,检测文件中是否嵌入恶意代码

4.17 防范文件上传漏洞常见方法?

  1. 文件上传的目录设置为不可执行
  2. 判断文件类型
  3. 使用随机数改写文件名和文件路径
  4. 单独设置文件服务器的域名

4.18 什么是点击劫持?

4.19 CSRF原理?

是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

4.20 CSRF的防御?

  1. 验证 HTTP Referer 字段
  2. 二次确认输入验证码
  3. Token认证,使用Token防御CSRF
  4. Cookie Hashing

4.21 HTML5安全问题?

  1. CORS攻击
  2. Web Storage攻击
  3. Web Worker攻击
  4. 新标签攻击

4.22 session的攻击方式?

  1. 会话固定攻击

利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。

  1. Session保持攻击

Session是有生命周期的,攻击者持有一个有效的Session,若Session一直未能失效,则攻击就通过此有效的Session一直使用用户的账户,成为一个永久的“后门”。

4.23 单点登录

简称SSO。在多个应用系统中,只需要登录一次,就可以访问其他所有的应用系统。

4.24 基于角色的访问控制和基于数据的访问控制

基于角色的访问控制:访问控制实际上是建立用户与权限之间的对应关系
由于水平权限管理是系统缺乏一个数据级的访问控制所造成的

4.25 OAuth 2.0 原理

OAuth引入了一个授权环节来解决上述问题。第三方应用请求访问受保护资源时,资源服务器在获准资源用户授权后,会向第三方应用颁发一个访问令牌(AccessToken)。该访问令牌包含资源用户的授权访问范围、授权有效期等关键属性。第三方应用在后续资源访问过程中需要一直持有该令牌,直到用户主动结束该次授权或者令牌自动过期。

4.26 四种授权方式

  1. 授权码
  2. 隐藏式
  3. 密码式
  4. 客户端凭证
    n一直未能失效,则攻击就通过此有效的Session一直使用用户的账户,成为一个永久的“后门”。

4.23 单点登录

简称SSO。在多个应用系统中,只需要登录一次,就可以访问其他所有的应用系统。

4.24 基于角色的访问控制和基于数据的访问控制

基于角色的访问控制:访问控制实际上是建立用户与权限之间的对应关系
由于水平权限管理是系统缺乏一个数据级的访问控制所造成的

4.25 OAuth 2.0 原理

OAuth引入了一个授权环节来解决上述问题。第三方应用请求访问受保护资源时,资源服务器在获准资源用户授权后,会向第三方应用颁发一个访问令牌(AccessToken)。该访问令牌包含资源用户的授权访问范围、授权有效期等关键属性。第三方应用在后续资源访问过程中需要一直持有该令牌,直到用户主动结束该次授权或者令牌自动过期。

4.26 四种授权方式

  1. 授权码
  2. 隐藏式
  3. 密码式
  4. 客户端凭证

 

 

标签:web,请求,Web,渗透,用户,详解,Cookie,测试,客户端
From: https://www.cnblogs.com/mushika/p/17441924.html

相关文章

  • Kubernetes GoRoutineMap工具包代码详解
    1、概述GoRoutineMap定义了一种类型,可以运行具有名称的goroutine并跟踪它们的状态。它防止创建具有相同名称的多个goroutine,并且在上一个具有该名称的goroutine完成后的一段退避时间内可能阻止重新创建goroutine。使用GoRoutineMap场景:使用协程的方式运行函数逻辑,如果函......
  • 渗透---WordPress网站
    WordPress简介WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用......
  • 渗透--WordPress网站
    WordPress简介WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用......
  • Javaweb中在SQL语句中使用未知数进行多表查询
    这个问题主要是匹配好引号和单引号即可。如果是varchar型,那么变量要带单引号('),如果是int型就不用带。同时要注意用+号进行String的拼接。示例:publicList<Student>huizong_bujige(Stringkemu1){List<Student>list=newArrayList<>();Connectionconn......
  • 在linux上搭建web服务(静态网站)
    目录在linux上搭建web服务(静态网站)一、简介1.1.什么是web服务器1.2.web服务器的工作原理1.3.web服务软件有哪些1.4.http/https协议1.5.URL/URI1.6.apache1.7.nginx二、搭建apache服务,部署静态网站1.1.安装apache服务程序1.2.配置服务器文件参数1.2.1.配置文件/etc/httpd/conf/ht......
  • k8s探针详解
    一、探针类型介绍:(1)、K8s中存在三种类型的探针:livenessprobe、readinessprobe和startup探针。每类探针都支持三种探测方法liveness探针:影响的是单个容器,如果检查失败,将杀死容器,根据pod的restartPolicy来操作。readiness探针:影响的是整个pod,即如果pod中有多个容器,只要有一......
  • web基础漏洞-信息泄露
    1、介绍信息泄露漏洞是基于web,可以直接请求到敏感信息。2、一般页面从一般页面中,提取注释、html元素或js变量3、robots获取可能的敏感路径4、各种cms和中间件的管理页面、后台页面、标志页面phpinfotomcatapache5、目录遍历漏洞6、配置错误导致可以访问超出范围的文......
  • VulnHub_DC-1渗透流程
    DC-1DC-1是一个专门建造的易受攻击的实验室,目的是在渗透测试领域获得经验。它旨在为初学者提供挑战,但它的难易程度取决于您的技能和知识,以及您的学习能力。要成功完成此挑战,您将需要Linux技能、熟悉Linux命令行以及使用基本渗透测试工具的经验,例如可以在KaliLinux或P......
  • web基础漏洞-系统命令注入
    1、介绍应用程序有时需要调用一些执行系统命令的函数,如在php中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击。2、windows支持的管道符|直......
  • web基础漏洞-xxe
    XXE漏洞利用–任意文件读取_哔哩哔哩_bilibiliDTD快速入门_哔哩哔哩_bilibiliXXE学习笔记–FreeBuf网络安全行业门户1、介绍xxe漏洞全称XMLExternalEntityInjection即外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文......