概述

从上一版的第 6 位开始,90% 的应用程序都经过了某种形式的错误配置测试。随着更多转向高度可配置的软件,看到这一类别上升也就不足为奇了。值得注意的CWE包括CWE-16 ConfigurationCWE-611 Improper Restriction of XML External Entity Reference

CWE-16 Configuration

此条目是一个类别,但尽管 CWE 指导不应映射类别,但无论如何都有各种来源映射到它。在这种情况下,没有可以利用的明确的 CWE 弱点。“不适当的配置”可能更好地描述为弱点,因此此条目可能会在更高版本中转换为弱点。然而,需要进一步研究,因为“配置弱点”可能是许多其他 CWE 的主要因素,即,它可能更适合用链接关系来描述。

描述

如果应用程序是:

  • 在应用程序堆栈的任何部分缺少适当的安全强化或对云服务的权限配置不正确。

  • 启用或安装了不必要的功能(例如,不必要的端口、服务、页面、帐户或权限)。

  • 默认帐户及其密码仍处于启用状态且未更改。

  • 错误处理向用户显示堆栈跟踪或其他信息过多的错误消息。

  • 对于升级的系统,最新的安全功能被禁用或未安全配置。

  • 应用程序服务器、应用程序框架(例如,Struts、Spring、ASP.NET)、库、数据库等中的安全设置未设置为安全值。

  • 服务器不发送安全标头或指令,或者它们未设置为安全值。

  • 软件已过时或易受攻击(请参阅 A06:2021-易受攻击和过时的组件)。

如果没有协调一致的、可重复的应用程序安全配置过程,系统将面临更高的风险。

XML的学习

XML由3个部分组成,DTD(文档类型定义),是XML的布局语言;XSL(可扩展的样式语言),XML的样式表语言;和可扩展链接语言 XLL。

XML:可扩展标记语言,是一种用来标记电子文件使其具有结构性的标记语言。用来传输和存储数据,这类语言很像超文本标记语言的标记语言。设计出来就是为了传输数据,而不是显示数据  ,他需要自行定义标签。

可扩展标记语言(XML)和超文本标记语言(HTML)为不同的目的而设计

它被设计用来传输和存储数据,其焦点是数据的内容。

HTML 超文本标记语言被设计用来显示数据,其焦点是数据的外观

XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素

<?xml version="1.0" encoding="UTF-8"?>

<!-- XML声明 -->

<!DOCTYPE  文件名 [

<!ENTITY实体名 "实体内容">

]>

<!-- 文档类型定义(DTD) -->

<元素名称 category="属性">

文本或其他元素

</元素名称>

<!-- 文档元素 -->

比如:

XML的实体

在XML钟的实体分为五种:字符实体,命名实体,参数实体,外部实体和内部实体。

普通的实体分为外部和内部两种,外部实体定义需要加上SYSTEM关键字,内容就是URL所指向的外部文件实际的内容。如果不加则代表内部实体,所指代的内容为字符串。

1.字符实体

说的是用十进制格式或者十六进制格式来指定任意的unicode字符,而对于XML解析器而言,字符实体与直接输入指定字符的效果完全相同。

2.命名实体

也叫做内部实体,在DTD(在文档中<!DOCTYPE>语句的一部分)中声明,在文档中作引用。

3.外部实体

外部实体表示外部文件的内容,用SYSTEM关键字表示。

<!ENTITY test SYSTEM "test.xml">

有些XML文档包含system标识符定义的“实体”,这些文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’。

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE Anything [

<!ENTITY entityex SYSTEM "file:///etc/passwd">

]>

<abc>&entityex;</abc>

注:URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

URL是URI的一个子集。

外部实体'entityex'被赋予的值为:file://etc/passwd  在解析XML文档的过程中实体'entityex'的值回被替换为URI(file://etc/passwd)

关键字SYSTEM会告诉XML解析器,entityex实体的值将从其后的URI中读取,并把读取的内容替换entityex出现的地方。

假如 SYSTEM 后面的内容可以被用户控制,那么用户就可以随意替换为其他内容,从而读取服务器本地文件(file:///etc/passwd)或者远程文件,甚至是内网攻击,也就是XXE漏洞了。

 

OWASP-Top5-(Security Misconfiguration 安全配置错误)的更多相关文章

  1. jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限

    jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...

  2. 【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件

    关键词:阿里双11技术十二讲直播丨雪人计划丨亚马逊AWS S3配置错误丨2018威胁预测丨MacOS漏洞丨智能风控平台MTEE3丨黑客窃取<权利的游戏>剧本|Android 8.1   本 ...

  3. linux异常处理:selinux配置错误导致无法重启

    点击返回自学Linux集锦 linux异常处理:selinux配置错误导致无法重启 一次linux无法重启异常记录: 当时第一反应就是梳理最近的配置变更,特别是能预知相关的就是selinux配置变更. ...

  4. spring boot rest 接口集成 spring security(2) - JWT配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误——SHH框架

    SHH框架工程,Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误 1.查看配置文件web.xml中是否配置.or ...

  6. Linux在fstab中因配置错误导致服务器主机无法重启的问题应该如何解决

    fstab中配置错误导致系统无法启动的恢复方案 1制造错误的案例发生,在/etc/fstab中配置如下内容 结尾的倒数第一个为1表示进行磁盘检查,为0表示不进行磁盘检查,倒数第二个为0表示不备份,为1 ...

  7. log4Net不能成功生成日志问题(关于配置错误)

    log4Net不能成功生成日志问题(关于配置错误) 调试发现问题原因在于  Log4Net IsInfoEnabled 一直为 false,返回的对象中所有 IsXXX 一直为false,这个问题的原 ...

  8. C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节

    一项目直接在VS里面,调试就可以正常运行.但部署到IIS下就提示,配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 ...

  9. iis7.5错误 配置错误

    iis7.5详细错误   HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 ...

随机推荐

  1. 10.1 HTTP

    1.跨网络的主机间通讯 套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间通信和数据交换 在建立通信连接的每一端,进程间的传输要有两个标志:IP地址和端口号, ...

  2. Firewalls命令行配置

    1.指定端口开放查询.开放.关闭端口 # 查询端口是否开放 firewall-cmd --query-port=8080/tcp # 开放80端口 firewall-cmd --permanent - ...

  3. WIN10下的VMware与Docker冲突的解决方案

    VMARE版本升级到15.5以上 WIN10升级到2004版本以上 Hyper-V为开启状态

  4. 洛谷2151[SDOI2009]HH去散步(dp+矩阵乘法优化)

    一道良好的矩阵乘法优化\(dp\)的题. 首先,一个比较\(naive\)的想法. 我们定义\(dp[i][j]\)表示已经走了\(i\)步,当前在点\(j\)的方案数. 由于题目中限制了不能立即走之 ...

  5. xshell连接vmware系统完整版

    设置静态ip需要修改文件一共有两个要修改的文件vi /etc/resolv.confvi /etc/sysconfig/network-scripts/ifcfg-eno16777736 第一个文件 ...

  6. TypeScript中将函数中的局部变量“导出”的方法

    首先是在模块a.js中声明一个可导出(export)的数据结构,例如: export class ModelInfo{ id: string; name:string; } 其次是在模块b中声明可导出 ...

  7. 【转-Andrew_qian】stm32中断嵌套全攻略

    断断续续学习STM32一学期了,时间过的好快,现在对STM32F103系列单片机的中断嵌套及外部中断做一个总结,全当学习笔记.废话不多说,ARM公司的Cortex-m3 内核,支持256个中断,其中包 ...

  8. 在hive中使用COALESCE进行空值处理

    COALESCE (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值.如果所有的表达式都是空值,最终将返 ...

  9. java的加载与执行原理剖析

    到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE ...

  10. TStor-OneCOS ,主打专一海量对象场景

    ​谁能与你厮守终身 生活在21世纪,最常见的事莫过于更新换代了,找一款能长久适用的产品,是很多人都希望拥有的,特别是针对于云服务产品,而对象·混合云存储新增 TStor-OneCOS 就是这样一款可以 ...