写在前面
这个系列开始写写XXE相关的东西,这里是第一部分,相关资料及使用靶场如下:
XML学习
靶场链接
XXE是以XML为基础进行的一种攻击,所以你需要先学习XML。 为了更方便你检索题目且由于是国外网站,会带有一定外语及翻译。最后,如果你访问过慢,可以设置上游代理来进行bp抓包(自行搜索)。开始吧
Exploiting XXE using external entities to retrieve files(利用外部实体XXE来检索文件)
打开环境
是一个商店页面的模拟,先找找可疑的点吧,点进商品 下方有一个点,通过你选择的地区来查询存货数量,检查发现是通过前端的选择框(value值)来决定,而前端是我们可以任意修改的,注入点就出现了。 并且是服务器请求库存数量,权限很高,抓出这个查询请求 是以xml格式进行请求,那我们能做的就很多了。后端有东西要来解析这个XML,尝试注入 这两个参数非常好理解,第一个代表商品id,第二个是仓库id 经测试,第一个参数会报错: 会对productId参数返回解析结果。 这里的利用思路就是,执行命令并返回给一个变量,将这个变量放在productId位置,返回出敏感信息,带内注入即可 payload:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
来分析一下,使用DOCTYPE引入外部实体,定义变量就是这样做的,类似键值对嵌套这样来工作的,第一参数是名字,值就是中括号里的,而在中括号中可以引入多个外部实体(ENTITY),比如这个:
<!DOCTYPE note [
<!ENTITY nbsp " ">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: W3Schools.">
]>
就是定义了好几个外部实体变量,这里的payload就是执行SYSTEM函数,然后将结果返回给xxe这个变量 最后回显时,带上取地址符号和分号就可以使用这个变量了。 这种攻击方式是由于引入外部实体带来的,可以像文件包含一样理解。
Exploiting XXE to perform SSRF attacks (利用XXE执行SSRF攻击)
首先探测是否有回显 这里,有必要对题目场景进行说明
This lab has a “Check stock” feature that parses XML input and returns any unexpected values in the response. The lab server is running a (simulated) EC2 metadata endpoint at the default URL, which is http://169.254.169.254/. This endpoint can be used to retrieve data about the instance, some of which might be sensitive. To solve the lab, exploit the XXE vulnerability to perform an SSRF attack that obtains the server’s IAM secret access key from the EC2 metadata endpoint. 此实验室具有“检查库存”功能,可解析 XML 输入并在响应中返回任何意外值。 实验室服务器在默认 URL 上运行(模拟的)EC2 元数据端点,即http://169.254.169.254/. 此端点可用于检索有关实例的数据,其中一些可能是敏感的。 为了解决实验室问题,利用XXE漏洞执行SSRF 攻击,从 EC2 元数据端点获取服务器的 IAM 秘密访问密钥。
如果你熟悉vps如何调用主机资源,对这类SSRF攻击应该不会陌生。 这里的EC2指的是 “元数据”指的是关键后端资源,大致可以理解为实例化出来的vps调用后端资源的地方 由于可以获得访问密钥,对于云安全是非常大的威胁,这里不展开说,如果你想细致了解,以下是学习链接 拓展链接
向关键位置发起请求 SSRF探测成功,一直向下检索,得到敏感信息
|