小工具      在线工具  汉语词典  css  js  c++  java

十大常见漏洞汇总(原理、危害、防御)

大数据,网络安全 额外说明

收录于:40天前

密码强度低

原因

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

伤害

通过弱口令,攻击者可以进入后台修改信息、进入财务系统盗取资金、进入OA系统获取公司内部信息、进入监控系统进行实时监控等。

防御

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

(1)不要使用空密码或系统默认密码,这些都是典型的弱密码;

(2)密码长度不得小于8个字符;

(3) 密码不能是连续字符(例如:AAAAAAAA)或重复字符的组合(例如:tzf.tzf.)。

(4) 密码应为大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符四种字符的组合。

每种类型至少包含一个字符。如果某种类型的字符只包含一个,那么该字符不应该是第一个或最后一个字符。

(5)密码中不应含有特殊内容;

例如该人、父母、子女和配偶的姓名和出生日期、周年纪念日、登录名、电子邮件地址和其他与该人相关的信息,以及词典中的单词。

(6) 密码不应是用数字或符号代替某些字母的单词。

(7) 密码应易于记忆并能快速输入,防止他人在背后看到您的输入。

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

SQL注入

原因

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

自然

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

SQL注入的两个关键点:

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

2、Web应用程序将用户输入的内容带入数据库执行;

伤害

从网站窃取敏感信息

绕过网站后台认证

后台登录语句:

SELECT*FROMadminWHERE用户名='用户'和密码='通过'

通用密码:‘或‘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等。

文件包含

原因

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

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

伤害

敏感信息泄露

获取webshel​​l

任意命令执行

相关功能

文件包含相关函数

常见的旁路技术

• URL 编码

• 特殊字符

• %00 截断

• 长目录截断

• 伪协议

伪协议

防御

• 设置白名单

• 过滤掉危险字符

• 关闭危险配置

• 限制文件包含的路径,例如只能包含某个目录下的文件。

• 严格判断包含中的参数是否外部可控,尽量不要采用动态包含。

上传文件

原则

在文件上传功能中,如果服务器对上传的文件没有严格验证和过滤,导致攻击者上传恶意脚本文件,就有可能获得执行服务器端命令的能力,称为文件上传漏洞。

上传文件

原因

• 服务器配置错误

• 开源编码器漏洞

• 可以绕过对本地上传的宽松限制

• 被松散的服务器端过滤绕过

伤害

• 上传恶意文件

• 获取shell

• 控制服务器

旁路

旁路

防御

• 白名单判断文件后缀是否合法

• 文件上传目录设置为不可执行

• 确定文件类型

• 使用随机数重写文件名和文件路径

• 单独设置文件服务器的域名

• 使用安全设备进行防御

XSS(跨站脚本攻击)

原则

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

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

伤害

• 窃取cookie

• 网络钓鱼

• 芝麻矿业

• 刷流量

• 劫持后端

• 篡改页面

• 内联网扫描

• 创造蠕虫等。

防御

• 正确验证用户输入

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

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

• 根据数据在 HTML 上下文中的位置(HTML 标签、HTML 属性、JavaScript 脚本、CSS、URL),对所有不受信任的数据进行适当的输出编码;

• 设置HttpOnly 属性

• 防止攻击者利用XSS漏洞进行cookie劫持攻击

CSRF(跨站请求伪造)

原则

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

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

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

请求是伪造的:请求不是按照用户的意图发出的

伤害

• 篡改目标站点上的用户数据

• 窃取用户私人数据

• 作为其他攻击的辅助攻击

• 传播 CSRF 蠕虫

防御

1、检查HTTP Referer是否同域

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

3.使用验证码

4. 使用一次性代币

SSRF(服务器端请求伪造)

原则

SSRF(服务器端请求伪造):服务器端请求伪造。该漏洞通常是由于攻击者构造一个请求并将其传递给服务器,服务器直接执行返回的请求而不进行特殊处理。

SSRF

伤害

• 扫描内网(主机、端口)

• 将精心设计的有效负载发送到任何内部主机上的任何端口

• 攻击内联网Web应用程序

• 读取任何文件

• 拒绝服务攻击

防御

• 统一错误信息,防止用户根据错误信息判断远程服务器的端口状态。

• 将请求的端口限制为常见的http端口,例如:80、443、8080等。

• 禁用不必要的协议,仅允许http和https

• 根据请求需求,可以将特定域名添加到白名单中,并拒绝白名单之外的请求。

• 用于验证请求来源的代码隐藏

XXE(XML外部实体注入)

原则

XXE漏洞的全称是XMLExternalEntityInjection,即XML外部实体注入

当应用程序解析 XML 输入而不禁止加载外部实体时,就会出现 XXE 漏洞。这允许用户控制外部加载的文件,从而导致XXE漏洞。

伤害

• 任意文件读取

• 内网端口检测

• 拒绝服务攻击

• 钓鱼

防御

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

1.PHP:

libxml_disable_entity_loader(真);

2.Java:

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

3.Python:

从 lxml 导入 etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

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

过滤关键词:

<!DOCTYPE,<!实体系统,公共

远程代码执行

RCE(Remot Command/Code Execute),远程命令/代码执行

远程命令执行:用户可以控制系统命令执行功能的参数,也称为命令注入

远程代码执行:用户输入的参数可以作为代码执行,也称为代码注入

命令执行可以看作是一种特殊类型的代码执行,代码执行相对更加灵活。

远程代码执行漏洞

原则

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

危害——以PHP为例

• 执行PHP 代码

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

• 让网站写一个shell

使用执行PHP代码的功能向服务器写入Shell脚本

• 控制服务器

使用Shell脚本上传马来西亚甚至控制服务器

• 直接获取shell

• 获取当前文件的绝对路径

打印__文件__

• 读取服务器文件

File_get_contents('C:\Windows\System32\drivers\etc\hosts')

• 在服务器上写入文件

file_put_contents(文件名、内容)

漏洞查找方法

• 代码审计

最重要的方法就是使用代码审计工具来轻松审计此类漏洞

• 已知的CMS 漏洞

许多已知的 CMS 每年都存在许多此类漏洞。

• 页面参数搜索

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

防御方法(PHP)

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

• 如果使用危险功能,请务必严格过滤输入内容

• preg_replace 放弃 /e 修饰符

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

远程命令执行漏洞

原则

应用程序有时会调用一些系统命令函数。例如,在PHP中,可以使用system、exec、shell_exec等函数来执行系统命令。当攻击者能够控制这些函数中的参数时,就可以将恶意命令拼接成正常命令。这会导致命令执行攻击。

命令执行漏洞是高危漏洞之一,也可以视为一种特殊的代码执行类型。

出现命令注入漏洞的原因有两个。

1.用户可以控制输入内容

2、用户输入的内容作为命令执行。

防御模式

尽量不要使用命令来执行函数

客户端提交的变量在进入执行命令函数方法之前必须经过过滤和敏感字符转义。

在使用动态函数之前,请确保所使用的函数是指定函数之一

对于PHP语言来说,最好不要使用无法完全控制的危险函数。

反序列化漏洞

原则

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

反序列化

伤害

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

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

防御模式

• 应尽可能避免用户输入反序列化参数

• 如果确实需要反序列化不受信任的数据源,则需要确保数据没有被篡改,例如使用数字签名来检查数据的完整性

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

• 检查反序列化后的变量内容,确保内容未被污染

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

易精网络安全专注于培养网络安全人才!

. . .

相关推荐

额外说明

net.sf.json.JSONObject maven 依赖项

最后一行需要保留,有两个jdk版本的实现:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar <dependency> <groupId>net.sf.json-lib</g

额外说明

转:SQL LIKE语句多条件贪婪匹配算法

原文转载自:http://blog.csdn.net/yangyuankp/article/details/8039990   在CMS开发中,经常会有类似这样的需求: 提问——回答模式,最经典的例子就是百度提问。 提问者提出问题,由其他人回答,其他人可

额外说明

A.图学习DeepWalk、word2vec、node2vec【参考资料2】-知识补充与node2vec代码注解

图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk、node2vec);图神经网络算法(GCN、GAT、GraphSage),部分进阶 GNN 模型(UniMP标签传播、ERNIESage)模型算法等,完成项目实战 专栏链接:图学习图神经

额外说明

C语言练习:通讯录的实现

文章目录 1.test.c 2.Contacts.c 3.Contacts.h 1.test.c 作用:函数的测试 #define _CRT_SECURE_NO_WARNINGS 1 #include"Contacts.h" void menu()

额外说明

Linux命令200例:awk文本处理工具的系统与实战讲述(常用)

-作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 -数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 -本文已收录于专栏:Linux命令大全。 -本专栏我们会通过具体的系统的命令讲解加上

额外说明

vue项目中引入echarts图表

一、 在vue项目开发中使用echarts,推荐使用vue-echarts官方地址 二、vue项目集成vue-echarts 1、使用vue-cli创建一个项目 2、安装依赖包 yarn add vue-echarts 3、在组件中使用 <templa

额外说明

Python编程基础11:字典

文章目录 一、字典概念 二、字典操作 (一)创建字典 1、先创建空字典,再添加元素(键值对) 2、直接创建包含若干键值对的字典 (二)字典操作 1、读取字典元素 - 按键取值 2、添加字段元素 - 按键赋值 3、更新字典元素 (1)直接按键赋值(键必须是

额外说明

MemCacheDManager

http://allegiance.chi-town.com/MemCacheDManager.aspx

额外说明

DataGrid输出到Excel并进行格式化处理

在我们把DataGrid上的数据导入到Excel的时候,如果遇到比较长的数字字符串,比如身份证号码,就会在Excel里当成数字看待,并转换成科学计数法的格式,造成数据的丢失,下面这个方法就解决了这个问题,并示例如何进行其它的格式化。 查看例子 OutPu

ads via 小工具