《OWASP TOP10漏洞》

news2024/11/18 2:43:28

0x01 弱口令

产生原因

与个人习惯和安全意识相关,为了避免忘记密码,使用一个非常容易记住 的密码,或者是直接采用系统的默认密码等。

危害

通过弱口令,攻击者可以进入后台修改资料,进入金融系统盗取钱财,进入OA系统可以获取企业内部资料,进入监控系统可以进行实时监控等等。

防御

设置密码通常遵循以下原则:

(1)不使用空口令或系统缺省的口令,为典型的弱口令;

(2)口令长度不小于8 个字符;

(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。

(4)口令应该为以下四类字符的组合:大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只 包含一个,那么该字符不应为首字符或尾字符。

(5)口令中不应包含特殊内容;

如本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关 的信息,以及字典中的单词。

(6)口令不应该为用数字或符号代替某些字母的单词。

(7)口令应该易记且可以快速输入,防止他人从你身后看到你的输入。

(8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。

0x02 SQL注入

产生原因

当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或 修改数据库中的数据。

本质

把用户输入的数据当做代码来执行,违背了 “数据与代码分离”的原则。

SQL注入的两个关键点:

1、用户能控制输入的内容;

2、Web应用把用户输入的内容带入到数据库中执行。

危害

  • 盗取网站的敏感信息
  • 绕过网站后台认证
后台登陆语句: 
SELECT * FROM admin WHERE Username='user' and Password='pass' 
万能密码:‘ or ‘1’=‘1’ #
  • 借助SQL注入漏洞提权获取系统权限
  • 读取文件信息

防御

1、采用sql语句预编译和绑定变量   #{name}

其原因就是:采用了PrepareStatement,就会将SQL语句:“select id,name from user where id=?”预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该SQL语句的语法结构了。因为语法分析已经完成了,而语法分析主要是分析SQL命令,比如:select、from、where、and、or、order by等等。

所以即使你后面输入了这些SQL命令,也不会被当成SQL命令来执行了,因为这些SQL命令的执行,必须先通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为SQL命令来执行的,只会被当成字符串字面值参数。

2、使用正则表达式过滤传入的参数

3、过滤字符串,如insert、select、update、and、or等

0x03 文件包含

产生原因

文件包含:开发人员将可重复使用的内容写到单个文件中,使用时直接调用此文件

文件包含漏洞:开发人员希望代码更加灵活,有时会将包含的文件设置为变量,用来动态调用,由于这种灵活性,可能导致攻击者调用恶意文件,造成文件包含漏洞.

危害

  • 敏感信息泄露
  • 获取webshell
  • 任意命令执行

相关函数

常见绕过技巧

• URL编码

• 特殊字符

• %00截断

• 长目录截断

• 伪协议

防御

  • 设置白名单
  • 过滤危险字符
  • 关闭危险配置
  • 限制文件包含的路径,比如只能包含某个目录内的
  • 严格判断包含中的的参数是否外部可控,尽量不要使用动态包含

0x04 文件上传

原理

在文件上传的功能处,若服务端未对上传的文件进行严格验证和过滤,导致攻击者上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,称为文件上传漏洞

成因

• 服务器的错误配置

• 开源编码器漏洞

• 本地上传上限制不严格被绕过

• 服务器端过滤不严格被绕过

危害

  • 上传恶意文件
  • getshell
  • 控制服务器

绕过方式

防御

  • 白名单判断文件后缀是否合法
  • 文件上传的目录设置为不可执行
  • 判断文件类型
  • 使用随机数改写文件名和文件路径
  • 单独设置文件服务器的域名
  • 使用安全设备防御

0x05 XSS(跨站脚本攻击)

原理

XSS(Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS。

XSS原理:攻击者在网页中嵌入客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本的攻击。

危害

  • 盗取Cookie
  • 网络钓鱼
  • 植马挖矿
  • 刷流量
  • 劫持后台
  • 篡改页面
  • 内网扫描
  • 制造蠕虫等

防御

  • 对用户的输入进行合理验证

对特殊字符(如 <、>、 ’ 、 ”等)以及<script>、javascript 等字符进行过滤

  • 根据数据位置设置恰当的输出编码

根据数据将要置于 HTML 上下文中的不同位置(HTML 标签、HTML 属性、JavaScript 脚本、CSS、URL),对所有不可信数据进行恰当的输出编码;

  • 设置HttpOnly属性

避免攻击者利用XSS漏洞进行Cookie劫持攻击

0x06 CSRF(跨站请求伪造 )

原理

CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造

原理:攻击者利用目标用户的身份,执行某些非法的操作

跨站点的请求:请求的来源可以是非本站

请求是伪造的:请求的发出不是用户的本意

危害

  • 篡改目标站点上的用户数据
  • 盗取用户隐私数据
  • 作为其他攻击的辅助攻击手法
  • 传播 CSRF 蠕虫

防御

1、检查HTTP Referer是否是同域

2、限制Session Cookie的生命周期,减少被攻击的概率

3、使用验证码

4、使用一次性token

0x07 SSRF(服务器端请求伪造)

原理

SSRF(Server-Side Request Forgery):服务器端请求伪造,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的。

危害

  • 扫描内网(主机、端口)
  • 向内部任意主机的任意端口发送精心构造的payload
  • 攻击内网的Web应用
  • 读取任意文件
  • 拒绝服务攻击

防御

  • 统一错误信息,避免用户根据错误信息来判断远程服务器的端口状态
  • 限制请求的端口为http的常用端口,比如:80、443、8080等
  • 禁用不需要的协议,仅允许http和https
  • 根据请求需求,可以将特定域名加入白名单,拒绝白名单之外的请求
  • 后台代码对请求来源进行验证

0x08 XXE(XML外部实体注入)

原理

XXE漏洞全称为 XML External Entity Injection,即XML外部实体注入。

XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载, 导致用户可以控制外部的加载文件,造成XXE漏洞。

危害

  • 任意文件读取
  • 内网端口探测
  • 拒绝服务攻击
  • 钓鱼

防御

一、使用开发语言提供的禁用外部实体的方法

1.PHP:

libxml_disable_entity_loader(true);

2.JAVA:

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false);

3.Python:

from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

二、过滤用户提交的XML数据

过滤关键词:

<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC

0x09 RCE

  • RCE(Remot Command/Code Execute),远程命令/代码执行
  • 远程命令执行:用户可以控制系统命令执行函数的参数,也称命令注入
  • 远程代码执行:用户输入的参数可以作为代码执行,也称代码注入
  • 命令执行可以看作是一种特殊的代码执行,代码执行相对会更加灵活

0x09-1 远程代码执行漏洞

原理

代码执行(注入)漏洞:在web方面是指应用程序过滤不严,用户可以通过请求将代码注入到应用中由服务器执行,导致一系列不可控的后果。

危害--PHP为例

  • 执行PHP代码

获取服务器内容或相关信息;

  • 让网站写shell

利用执行PHP代码功能,往服务器中写入Shell脚本

  • 控制服务器

利用Shell脚本,上传大马,甚至控制服务器

  • 直接获取shell
  • 获取当前文件的绝对路径
print __FILE__

  • 读取服务器文件
file_get_contents('C:\Windows\System32\drivers\etc\hosts')

  • 在服务器写文件
file_put_contents(文件名,内容)

漏洞查找方法

  • 代码审计

最主要的方式,借助代码审计工具,非常方便的审计出此类漏洞

  • 已知的CMS漏洞

已知的CMS,有很多每年都会爆出来很多此类的漏洞

  • 页面传参查找

针对页面有传参的地方,重点关注传入恶意代码尝试,概率相对较

防御方式(PHP)

• 尽量不要使用eval、assert等危险函数

• 如果使用危险函数的话,一定要对输入内容进行严格的过滤

• preg_replace 放弃使用/e修饰符

• 在php配置文件中禁用危险函数:disable_functions

0x09-2 远程命令执行漏洞

原理

  • 应用程序中有时会调用一些系统命令函数,比如php中使用system、exec、shell_exec等 函数可以执行系统命令,当攻击者可以控制这些函数中的参数时,就可以将恶意命令拼接 到正常命令中,从而造成命令执行攻击。
  • 命令执行漏洞,属于高危漏洞之一,也可以算是一种特殊的代码执行

命令注入漏洞产生原因有两点

1、用户可以控制输入的内容

2、用户输入的内容被当作命令执行

防御方式

  • 尽量不要使用命令执行函数
  • 客户端提交的变量在进入执行命令函数方法之前,一定要做好过 滤,对敏感字符进行转义
  • 在使用动态函数之前,确保使用的函数是指定的函数之一
  • 对PHP语言来说,不能完全控制的危险函数最好不要使用

0x10 反序列化漏洞

原理

原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列安全问题

危害

• 不安全的反序列化,主要造成的危害是远程代码执行

• 如果无法远程代码执行,也可能导致权限提升、任意文件读取、拒绝服务攻击等

防御方式

• 应该尽量避免用户输入反序列化的参数

• 如果确实需要对不受信任的数据源进行反序列化,需要确保数据未被篡改,比如使用数字签名来检查数据的完整性

• 严格控制反序列化相关函数的参数,坚持用户所输入的信息都是不可靠的原则

• 对于反序列化后的变量内容进行检查,以确定内容没有被污染

• 做好代码审计相关工作,提高开发人员的安全意识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1515113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法与数据结构】队列的实现详解

文章目录 &#x1f4dd;队列的概念及结构&#x1f320; 队列的顺序实现&#x1f309;初始化&#x1f320;入队&#x1f309;出队&#x1f320;获取队列首元素&#x1f309;获取队列尾部元素&#x1f320;获取队列中有效元素个数&#x1f309; 队列是否为空&#x1f320;查看队列…

二分查找的理解及应用场景。

一、是什么 在计算机科学中&#xff0c;二分查找算法&#xff0c;也称折半搜索算法&#xff0c;是一种在有序数组中查找某一特定元素的搜索算法 想要应用二分查找法&#xff0c;则这一堆数应有如下特性&#xff1a; 存储在数组中有序排序 搜索过程从数组的中间元素开始&…

【典】dp背包问题(树求方案)

回顾在acw上做过的题 有依赖的背包问题 这一题是与树相关的dp问题&#xff0c;根据父节点与子节点的相连关系&#xff0c;我们用dfs来处理根节点与子树的迭代更新&#xff0c;把每一颗最小单位子树看成一个物品&#xff0c;然后就有点像多重背包&#xff08;因为有体积限制&…

云计算 3月12号 (PEX)

什么是PXE&#xff1f; PXE&#xff0c;全名Pre-boot Execution Environment&#xff0c;预启动执行环境&#xff1b; 通过网络接口启动计算机&#xff0c;不依赖本地存储设备&#xff08;如硬盘&#xff09;或本地已安装的操作系统&#xff1b; 由Intel和Systemsoft公司于199…

【vue在主页中点击主页面如何弹出一个指定某个页面的窗口】

【vue在主页中点击主页面跳转到某个页面的操作完整过程】 1.首先在主页面中加入一个卡槽用于展示弹出的窗口 代码如下&#xff1a; <el-dialog :visible.sync"dialogVisible1" :close-on-click-modal"false" :title"title" class"dial…

关于tcp协议

目录 前言&#xff1a; 一、TCP协议的基本概念&#xff1a; 二、TCP协议的主要特点&#xff1a; 2.1面向连接&#xff1a; 2.2可靠传输&#xff1a; 2.3基于字节流&#xff1a; 三、TCP连接的建立与终止&#xff1a; 3.1连接建立&#xff1a; 3.1.1SYN&#xff1a; 3…

资产管理系统建设方案参考

1系统概述 软件开发全套文档下载、源码下载&#xff1a;软件项目开发全套文档下载_软件开发文档下载-CSDN博客 1.1需求描述 1. 实现公司内部固定资产管理全生命周期管理&#xff0c;包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全…

RC522刷卡电路设计及程序

一、RC522刷卡电路组成 基于RC522的刷卡电路如上图所示。该电路组成主要分为三部分&#xff1a; Receiving Circuit&#xff1a;接收电路&#xff0c;接收卡发送的数据。 Filtering Impedence-Transtorm circuit:滤波和阻抗变换电路&#xff0c;抑制高次谐波并优化到读卡器天线…

Python使用lxml解析XML格式化数据

Python使用lxml解析XML格式化数据 1. 效果图2. 源代码参考 方法一&#xff1a;无脑读取文件&#xff0c;遇到有关键词的行再去解析获取值 方法二&#xff1a;利用lxml等库&#xff0c;解析格式化数据&#xff0c;批量获取标签及其值 这篇博客介绍第2种办法&#xff0c;以菜鸟教…

【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用

大家好&#xff0c;我是同学小张&#xff0c;日常分享AI知识和实战案例欢迎 点赞 关注 &#x1f44f;&#xff0c;持续学习&#xff0c;持续干货输出。v: jasper_8017 一起交流&#x1f4ac;&#xff0c;一起进步&#x1f4aa;。微信公众号也可搜【同学小张】 &#x1f64f; 本…

Linux环境(Ubuntu)上搭建MQTT服务器(EMQX )

目录 概述 1 认识EMQX 1.1 EMQX 简介 1.2 EMQX 版本类型 2 Ubuntu搭建EMQX 平台 2.1 下载和安装 2.1.1 下载 2.1.2 安装 2.2 查看运行端口 3 运行Dashboard 管理控制台 3.1 查看Ubuntu上的防火墙 3.2 运行Dashboard 管理控制台 概述 本文主要介绍EMQX 的一些内容&a…

Vulnhub - DevGuru

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog DevGuru 靶机下载地址&#xff1a;DevGuru: 1 ~ VulnHub 目录 0x01 信息收集 0x02 Web漏洞利用 - W…

GPT-4.5 Turbo意外曝光,最快明天发布?OpenAI终于要放大招了!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

什么是信创?什么是信创测评?

信创&#xff0c;全称为信息技术应用创新&#xff0c;我的理解&#xff0c;其核心是知识产权与供应链的自主可控与可持续发展。 我国在经历了无数风雨后&#xff0c;已经浴火重生&#xff0c;国家实力日益强大&#xff0c;人民生活水平也不断提高。然而&#xff0c;我们必须清…

彩虹知识付费模板MangoA全开源包含秒杀/抽奖/社群/推送等功能

二次开发增加以下功能每日秒杀每日签到官方社群多级分销在线抽奖项目投稿 每日秒杀 每日签到 官方社群 多级分销 在线抽奖 项目投稿 下载地址&#xff1a;https://pan.xunlei.com/s/VNstMfOecGliiqew7UIorsOnA1?pwdhywi#

2024年云仓酒庄:店中店增项新模式,开启葡萄酒文化新篇章

2024云仓酒庄&#xff1a;店中店增项新模式&#xff0c;开启葡萄酒文化新篇章 在葡萄酒行业蓬勃发展的今天&#xff0c;云仓酒庄以其独特的经营模式和创新思维&#xff0c;在市场中脱颖而出。2024年&#xff0c;云仓酒庄继续深化其战略布局&#xff0c;不仅在多地开设酒庄实体…

微信小程序开发系列(三十二)·如何通过小程序的API实现页面的上拉加载(onReachBottom事件)和下拉刷新(onPullDownRefresh事件)

目录 1. 上拉加载 2. 下拉刷新 1. 上拉加载 上拉加载是小程序中常见的一种加载方式&#xff0c;当用户滑动页面到底部时&#xff0c;会自动加载更多的内容&#xff0c;以便用户继续浏览小程序中实现上拉加载的方式&#xff1a; ① 在app.json或者page.json中配置距离页面…

比特币创造历史新纪录

综合来源&#xff1a;coindesk and cointelegraph 编译&#xff1a;秦晋 3月11日&#xff0c;比特币在亚洲交易时段首次突破71,000美元&#xff0c;这个是比特币创造的价格新纪录。自1月11日比特币现货ETF在美国获批以来&#xff0c;比特币一直在稳步上涨。以太币突破4000美元。…

JAVA基础—集合详细解析

1.JAVA中的4种集合类型 Set&#xff1a;无序、不可重复的集合List&#xff1a;有序、重复的集合Queue&#xff1a; 队列Map&#xff1a;映射关系 首先&#xff0c;JAVA的集合类主要有两个接口派生而出&#xff1a;Collection和Map。Collection和Map就是JAVA集合的根接口。所以后…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解

学习视频&#xff1a;Faster-RCNN理论合集 概念辨析 在目标检测中&#xff0c;proposals和anchors都是用于生成候选区域的概念&#xff0c;但它们在实现上有些许不同。 Anchors&#xff08;锚框&#xff09;&#xff1a; 锚框是在图像中预定义的一组框&#xff0c;它们通常以…