XXE原理:
? ??當xml允許外部實體引用時,XML解析器解析了由攻擊者構造的惡意xml內容,從而可致讀取任意文件锌妻、執(zhí)行系統(tǒng)命令继阻、探測內網(wǎng)端口办龄、攻擊內網(wǎng)網(wǎng)站等攻擊行為垮耳。
xml基礎概念:
? ??XML用于標記電子文件使其具有結構性的標記語言颈渊,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型终佛,是一種允許用戶對自己的標記語言進行定義的源語言俊嗽。xml文檔主要用于傳輸數(shù)據(jù)。
????XML文檔結構包括XML聲明铃彰、DTD文檔類型定義(可選)绍豁、文檔元素。DTD是所使用的標簽的定義文檔牙捉,并且由 XML 設計者定義竹揍。DTD 定義了xml文檔中存在什么標簽,它們擁有什么屬性邪铲,以及其它元素里面有什么元素等等芬位。DTD 可以在 XML 文檔內聲明,也可以外部引用带到。
? ??DTD實體:是用于定義引用普通文本或特殊字符的快捷方式的變量昧碉,可以內部聲明或外部引用,當引用外部DTD實體時揽惹,就有可能存在xxe被饿。引用外部實體時所支持的協(xié)議如下:
XXE的危害:
????任意文件讀取,系統(tǒng)命令執(zhí)行搪搏,內網(wǎng)端口探測狭握,內網(wǎng)網(wǎng)站攻擊。
XXE的防御:
? ??使用開發(fā)語言提供的禁用外部實體的方法?PHP:libxml_disable_entity_loader(true);
? ? 過濾用戶提交的xml數(shù)據(jù)疯溺,主要過濾的關鍵字有:SYSTEM和PUBLIC
知識點:
????libxml2.9.1及以后哥牍,默認不解析外部實體毕泌,可以使用phpinfo()查看libxml的版本信息。
? ? html主要功能是展示數(shù)據(jù)嗅辣,xml的主要功能是為了傳輸數(shù)據(jù)撼泛。
最后:
????無論是WEB程序,還是PC程序澡谭,只要處理用戶可控的XML都可能存在危害極大的XXE漏洞愿题,開發(fā)人員在處理XML時需謹慎,在用戶可控的XML數(shù)據(jù)里禁止引用外部實體蛙奖。
好的參考: