渗透测试-xxe之CTF考题实验及防御方法

xxe之CTF考题实验及防御方法

前言

一、什么是xxe

1.定义

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。简单来说,XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。例如,如果你当前使用的程序为PHP,则可以将libxml_disable_entity_loader设置为TRUE来禁用外部实体,从而起到防御的目的。

常见的XML语法结构如下所示
在这里插入图片描述

2.XML语法结构在这里插入图片

描述

1.内部声明DTD格式:
2.引用外部DTD格式:

在DTD中进行实体声明时,将使用ENTITY关键词来声明,实体是用于定义引用普通文本或特殊字符的快捷方式的变量,实体可在内部或外部进行声明,如下所示

1.内部声明实体格式:<!ENTITY 实体名称 "实体的值">
2.引用外部实体格式:<!ENTITY 实体名称 SYSTEMT "URL">

二、xxe之CTF考题及防御方法

1.xxe之CTF考题演示

xxe的知识比较繁琐,也很记得住,只希望大家能记住xxe注入payload代码大概格式就可以了,学会如何修改代码,获取信息。

我们上考题,看看题目的内容
jarvisoj上的一道题目API调用
这道题题目说明是,请设法获得目标机器/home/ctf/flag.txt中的flag值
http://web.jarvisoj.com:9882/
打开网址
在这里插入图片描述
发现是一个输入框
我们利用burp抓包试试
在这里插入图片描述
我们进行重发,发现可以发送
在这里插入图片描述
我们修改json为xml格式,输入payload代码,将下面的代码修改为我们的payload代码
在这里插入图片描述
在这里插入图片描述
CTF{XxE_15_n0T_S7range_Enough}
我们成功获得CTF考题的答案,实验结束。

2.xxe防御方法

防御XXE攻击主要有三方面:一是检查所使用的底层XML解析库,默认禁止外部实体的解析;二是若使用第三方应用代码需要及时升级补丁;三是对用户提交的XML数据进行过滤,如关键词:<!DOCTYPE和<!ENTITY或者SYSTEM和PUBLIC等。

总结

本次实验简单介绍了xxe的原理及使用方法,以及CTF考题示例和防御方法,通过构造payload代码获取用户信息。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫彩@之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值