2022-渗透测试-OWASP TOP10详细讲解

2023-11-18

1.sql注入

原理:
SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作。
​
分类:
1、报错注入
2、bool 型注入
3、延时注入
4、宽字节注入
​
防御:
1.使用预编译语句,绑定变量
2.使用存储过程
3.使用安全函数
4.检查数据类型
​
1.获取数据库名 
select SCHEMA_NAME from information_schema.SCHEMATA
2.获取表名
select TABLE_NAME from information_schema.TABLES
3.获取字段名
select * from information_schema.COLUMNS where TABLE_NAME="users" and TABLE_SCHEMA="security"
4.获取数据
select id,username,password from users
​

2.失效的身份认证和会话管理

原理:
在开发web应用程序时,开发人员往往只关注Web应用程序所需的功能,所以常常会建立自定义的认证和会话方案。但是要正确的实现这些方案却是很难的。结果就在退出、密码管理、超时、密码找回、帐户更新等方面存在漏洞。
​
防御:
1、区分公共区域和受限区域。
2、对最终用户帐户使用帐户锁定策略。
3、支持密码有效期。
4、能够禁用帐户。
5、不要存储用户密码。
6、要求使用强密码。
7、不要在网络上以纯文本形式发送密码。
8、保护身份验证 Cookie。
9、使用 SSL 保护会话身份验证 Cookie。
10、对身份验证 cookie 的内容进行加密。
11、限制会话寿命。
12、避免未经授权访问会话状态。

3.跨站脚本攻击 XSS

XSS是跨站脚本攻击,原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
​
分类:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS.
​
区别:
DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
​
什么是 HttpOnly?
如果您在 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到cookie 信息,这样能有效的防止 XSS 攻击。
​
预防:
1.使用XSS Filter,即跨站脚本过滤器,用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。
​
2.输入过滤
输入是否仅仅包含合法的字符;
输入字符串是否超过最大长度限制;
输入如果为数字,数字是否在指定的范围;
输入是否符合特殊的格式要求,如E-mail地址、IP地址等
3.输出编码
<(小于号) 转成 &lt;
> (大于号)转成 &gt;
& (和号)转成 &amp;
" (双引号)转成 &quot;
' (单引号)转成 &#39;
4.黑名单和白名单
5.内容安全策略(csp):CSP用于限制浏览器查看您的页面,以便它只能使用从受信任来源下载的资源。

4.直接引用不安全的对象

定义:
不安全的直接对象引用(IDOR)允许攻击者绕过网站的身份验证机制,并通过修改指向对象链接中的参数值来直接访问目标对象资源,这类资源可以是属于其他用户的数据库条目以及服务器系统中的隐私文件等等。
​
出现的原因:
Web应用往往在生成Web页面时会用它的真实名字,且并不会对所有的目标对象访问时来检查用户权限,所以这就造成了不安全的对象直接引用的漏洞。
服务器上的具体文件名、路径或数据库关键字等内部资源被暴露在URL或网页中,攻击者可以尝试直接访问其他资源。
​
防御措施:
1.使用基于用户或会话的间接对象访问,这样可防止攻击者直接攻击未授权资源
2.访问检查:对任何来自不受信源所使用的所有对象进行访问控制检查
3.避免在url或网页中直接引用内部文件名或数据库关键字
4.验证用户输入和url请求,拒绝包含./ …/的请求

5.安全配置错误

定义:
安全配置错误可以发生在一个应用程序堆栈的任何层面,通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。
​
影响:
攻击者能够通过未修复的漏洞、访问默认账户、不再使用的页面、未受保护的文件和目录等来取得对系统的未授权的访问或了解。
​
防御措施:
1、 配置所有的安全机制
2、 最小原则,关掉或限制不使用的服务
3、 更改默认账户信息
4、 使用日志和警报
5、 回显信息不显示任何与实际错误相关的信息
6、 检查和修复安全配置项

6.敏感信息泄露

漏洞描述:
由于管理员或者技术人员等各种原因导致敏感信息泄露。许多web应用程序和app都无法正确保护敏感数据,攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
​
检测方法:
1、手工挖掘,查看web容器或网页源码代码,可能存在敏感信息。比如访问url下的目录,直接列出了目录下的文件列表,错误的报错信息包含了网站的信息。
2、工具挖掘,像爬虫之类的工具可以扫描到敏感文件路径,从而找到敏感数据。
​
防范措施:
1、 对系统处理、存储或传输的数据进行分类,根据分类进行访问控制。
2、 对用户敏感信息的传输和存储进行加密
3、 强化安全意识

7.缺少功能级的访问控制

原理:
大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。
​
测试方法:
1、 保证合法授权用户可以访问成功
2、 限制非法未授权用户的访问
​
防御措施:
1、 设计严格的权限控制系统,对于每个请求和URL都要进行校验和权限确认,防止非法请求被执行
2、 对于每个功能的访问,都要有明确的角色授权,采用过滤器的方式校验每个请求的合法性
3、 实现Web访问的IP白名单列表,禁止不可信的IP访问Web系统

8.跨站请求伪造 CSRF

CSRF概念:
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
​
攻击原理:
CSRF攻击攻击原理及过程如下:
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。 
​
分类:
GET型和POST型。
​
防御手段:
1、验证 HTTP Referer 字段。
    根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。
2、在请求地址中添加 token 并验证
    在HTTP请求中以参数的形式加入一个随机产生的token(随机字符串),并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
3、二次验证
    在转账等关键操作之前提供当前用户的密码或者验证码。二次验证可以有效防御CSRF 攻击。

9.使用含有已知漏洞的组件

原理:
大多数的开发团队并不会把及时更新组件和库当成他们的工作重心,更不关心组件和库的版本,然而应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,可能导致严重的数据丢失或服务器接管。
​
防御措施:
1.标识正在使用的所有组件和版本,包括所有依赖项。
2.及时关注这些组件的安全信息并保证他们是最新的。
3.建立使用组件的安全策略,禁止使用未经安全评估的组件。
4.在适当情况下,对组件进行安全封装,精简不必要的功能,封装易受攻击部分。

10.未验证的重定向和转发

重定向:
重定向是服务端根据逻辑,发送一个状态码(通常为3xx),告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。(重定向是在客户端完成的)
转发:
转发是在服务器内部将请求转发给另一个资源,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程是在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址。(转发是在服务器端完成的)
​
两者的区别:
1、重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址。
2、重定向有两次请求,不共享数据,转发是有一次请求且共享数据。
3、重定向后地址栏会发生变化,转发不会。
4、重定向的地址可以是任意地址,转发的地址只能是当前应用类的某一个地址。
​
预防措施:
1、重定向外部网站需要验证是否在白名单。
2、转发内部网站要验证是否有权限,有权限才转发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022-渗透测试-OWASP TOP10详细讲解 的相关文章

  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 探索Web开发的未来——使用KendoReact服务器组件

    Kendo UI 是带有jQuery Angular React和Vue库的JavaScript UI组件的最终集合 无论选择哪种JavaScript框架 都可以快速构建高性能响应式Web应用程序 通过可自定义的UI组件 Kendo UI可
  • 点击存储到固定时间清除存储

    这段代码 无意间想到的 随便写了下来 运行 根据点击之后传递一个参数 将他存入本地存储 方便测试为10秒 10秒后触发下一个事件 清除本地存储 结束
  • Vue3 和Vue2的区别,以及钩子函数的使用

    Vue js 3 和 Vue js 2 是两个主要版本的流行前端框架 它们之间有很多区别 包括性能优化 新特性和改进的API等 以下是一些Vue 3与Vue 2之间的主要区别 以及一些示例代码来说明这些差异 1 性能优化 响应式系统 Vue
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • Kubernetes (十二) 存储——Volumes配置管理

    一 卷的概念 官方地址 卷 Kubernetes https v1 24 docs kubernetes io zh cn docs concepts storage volumes 二 卷的类型及使用 emptyDir卷 1 创建编辑文件
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 服务器VPS是什么意思?一文了解其含义与重要性

    在今天的数字时代 服务器扮演着至关重要的角色 它们是网站 应用程序和在线业务的基石 但是 你是否听说过VPS 本文将深入探讨什么是服务器VPS 以及为什么它在今天的互联网世界中如此重要 什么是服务器VPS 服务器的基本概念 在我们深入探讨V
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 【方法】如何把Excel“只读方式”变成可直接编辑?

    Excel在 只读方式 下 编辑后是无法直接保存原文件的 那如何可以直接编辑原文件呢 下面来一起看看看吧 如果Excel设置的是无密码的 只读方式 那在打开Excel后 会出现对话框 提示 是否以只读方式打开 如果想直接编辑文件 选择 否
  • 获取年与年之间的所有年份

    function getYearsBetween startYear endYear var years 存放结果的数组 for var year startYear year lt endYear year years push year
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser

随机推荐

  • Qt信号与槽(非常详细)

    信号与槽介绍 Qt的核心机制的信号和槽 它是是用于对象之间的通信 学Qt必须掌握信号与槽机制原理 如果你了解MFC 你就会知道Qt中的信号与槽和mfc中的消息响应机制类似 信号槽也是 Qt 框架引以为豪的机制之一 其实信号槽类似于设计模式中
  • Windows下VSCode开发及运行Web程序环境配置

    前言 本文主要介绍在Windows操作系统下如何配置Visual Studio Code VSCode 开发和运行调试网页 一 安装VSCode 1 下载Visual Studio Code 以下简称VSCode 安装文件 下载地址为 ht
  • python read_excel converters_使用python中的大熊猫的read_excel函数将日期作为字符串

    Python 2 7 10 Tried pandas 0 17 1 function read excel Tried pyexcel 0 1 7 pyexcel xlsx 0 0 7 function get records When u
  • 性能测试入门——完整的测试流程

    性能测试一般的压测流程 需求收集 测试准备 测试执行 结果分析与调优 测试报告与总结 1 1 需求收集 性能测试需求一般在项目需求阶段就可以收集 测试人员进入项目应尽快开展此项活动 1 性能需求的来源 需求文档 问卷调查 历史数据统计分析等
  • Vue的用途

    我使用Vue和React已经很长一段时间了 两个框架上实践代码量都在10万行以上 不得不说都是都很不错的 帮助开发者减少很多工作量 某种框架是现代化Vue和React在两者之间的选择并不像选择苹果或香蕉一样简单 两者在工程实践上的差异让我们
  • Eclipse下启动tomcat报错:/bin/tool.jar which is referenced by the classpath, does not exist.

    1 错误 在Eclipse下启动tomcat的时候 报错为 Eclipse下启动tomcat报错 The archive D Program Files Java jdk1 7 0 10 lib tools jar which is ref
  • python后端学习(八)网络通信

    TCP IP 为了把全世界的所有不同类型的计算机都连接起来 就必须规定一套全球通用的协议 为了实现互联网这个目标 互联网协议族 Internet Protocol Suite 就是通用协议标准 因为互联网协议包含了上百种协议标准 但是最重要
  • (转)那些年不容错过的硅谷IT公司

    来源 https zhuanlan zhihu com p 20677434 那些年不容错过的硅谷IT公司 Mingche SuMingche Su 1 年前2016 年 3月 27 日星期日下午 12 点 34 分 1 Houzz 是一个
  • 解决MySQL installation error : Initializing Database安装MySQL提示initialize database报错

    解决MySQL installation error Initializing Database安装MySQL提示initialize database报错 当我们在安装MySQL数据库时 在 Initializing Database 就
  • C语言之——快速排序qsort库函数的讲解

    qsort函数C语言编译器函数库自带的排序函数 也叫快速排序函数 之前我写过一篇关于冒泡排序的代码讲解 大家感兴趣的话可以先看一看我对于冒泡排序的讲解 相比较于冒泡排序 快速排序可以用更加快捷的速度去排列升降序 它的时间复杂度只有O N l
  • 使用Vue+elementUI实现CRUD

    文章目录 前言 一 简介 二 使用Vue Cli搭建Vue项目 1 vue cli 介绍 2 axios js 介绍 3 Element Ul 介绍 4 moment js 介绍 5 搭建项目 6 添加main js配置 7 修改App v
  • Dockerfile07 -- Dockerfile构建python

    文章目录 一 Dockerfile搭建python 1 创建python目录 2 编写dockerfile文件 3 修改网站内容 一 Dockerfile搭建python 1 创建python目录 2 编写Dockerfile python
  • Wifi隔离 (AP隔离)的原理及实现

    1 wifi隔离是什么 无线隔离又称客户端隔离 client isolation 也称AP隔离 指的是阻止连接路由器的设备之间互相访问 多见于无线通信方面 常见于路由器设置中 AP隔离非常类似有线网络的VLAN 虚拟局域网 将所有的无线客户
  • 大数据—— Flink 的优化

    目录 一 Flink内存优化 1 1 Flink 内存配置 二 配置进程参数 2 1 场景 2 2 操作步骤 三 解决数据倾斜 3 1 场景描述 3 2 解决方式 3 2 1 数据源的消费不均匀 调整并发度 3 2 2 数据分布不均匀 四
  • C++11智能指针(unique_ptr、shared_ptr、weak_ptr)boost::scoped_ptr

    C 11智能指针 unique ptr shared ptr weak ptr 码农小非 的专栏 CSDN博客 c shared ptr weak ptr 原创 智能指针拾遗 原创 智能指针拾遗 qicosmos 江南 博客园 shared
  • java - 异常和断言

    什么是异常 异常就是指在程序运行的过程中发生一些不正常的时间 除0溢出 数组下标越界 所要读取的文件不存在 java的异常是Throwable派生类的一个实例 Throwable类包含在java lang中 Error类 LinkageEr
  • 论文学习笔记(7):Teacher Guided Neural Architecture Search for Face Recognition

    目录 摘要 一 介绍 二 相关工作 三 研究方法 3 1 知识蒸馏 3 2 教师网络指导下的神经网络架构搜索 3 2 1 搜索宽度 3 2 2 搜索深度 3 2 3 搜索目标 四 实验 4 1 数据集 来自AAAI2021 文章链接 htt
  • Python 类与对象、模块、异常

    类内置方法 模块 是将一组函数放在一起共享公共的主题 将其存储在一个 py文件中 使用import命令导入 Python3中部分函数 异常捕捉 try fh open testfile W fh write This is a testfi
  • Kali Linux中英文切换

    Kali linux默认为英语 可以执行以下命令切换为中文 echo LANG zh CN UTF 8 gt etc default locale 切换好 执行 reboot 重启即可 同理 切换为英文 echo LANG en US UT
  • 2022-渗透测试-OWASP TOP10详细讲解

    1 sql注入 原理 SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断 前端传入的参数是攻击者可以控制 并且参数带入数据库的查询 攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作 分类 1 报错注入