hacktricks/network-services-pentesting/pentesting-printers/cross-site-printing.md

85 lines
12 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
2022-04-28 16:01:33 +00:00
</details>
2023-07-07 23:42:27 +00:00
複数のIPに対して、ユーザーにHTTP POSTリクエストを送信させることができます。このリクエストは、オープンな生のプリントポートに到達しようとします。見つかった場合、プリンタの設定に応じて、**HTTPヘッダはプレーンテキストとして印刷されるか、破棄されます**。ただし、**POSTデータ**には、**PostScript**や**PJL**コマンドなどの任意の印刷ジョブが含まれる可能性があります。
2023-07-07 23:42:27 +00:00
### 強化されたクロスサイトプリンティング
2023-07-07 23:42:27 +00:00
内部プリンタに対してHTTP POSTリクエストを実行するために、XMLHttpRequestXHRJavaScriptオブジェクトを使用することができます。これまでに議論されたクロスサイトプリンティングのアプローチの制限は、同一オリジンポリシーのため、データをデバイスに送信することしかできないことです。同一オリジンポリシーの制限を回避するために、**サーバー**が偽のが**有効なHTTPレスポンス**を返し、CORSリクエスト`Access-Control-Allow-Origin=*`を含む)を許可するようにすることができます。攻撃の概要は以下のとおりです:
2023-07-07 23:42:27 +00:00
![CORSスプーフィングを使用した高度なクロスサイトプリンティング](http://hacking-printers.net/wiki/images/thumb/c/ce/Cross-site-printing.png/900px-Cross-site-printing.png)
2023-07-07 23:42:27 +00:00
このような強化されたXSPのバリアントでは、CORSスプーフィングと組み合わせて、Web攻撃者はプリンタデバイスからキャプチャされた印刷ジョブなどの任意の情報を抽出することができます。以下にJavaScriptのコンセプト実証のスニペットを示します
```javascript
job = "\x1B%-12345X\r\n"
2023-07-07 23:42:27 +00:00
+ "%!\r\n"
+ "(HTTP/1.0 200 OK\\n) print\r\n"
+ "(Server: PostScript HTTPD\\n) print\r\n"
+ "(Access-Control-Allow-Origin: *\\n) print\r\n"
+ "(Connection: close\\n) print\r\n"
+ "(Content-Length: ) print\r\n"
+ "product dup length dup string cvs print\r\n"
+ "(\\n\\n) print\r\n"
+ "print\r\n"
+ "(\\n) print flush\r\n"
+ "\x1B%-12345X\r\n";
var x = new XMLHttpRequest();
x.open("POST", "http://printer:9100");
x.send(job);
x.onreadystatechange = function() {
2023-07-07 23:42:27 +00:00
if (x.readyState == 4)
alert(x.responseText);
};
```
2023-07-07 23:42:27 +00:00
### クロスサイトプリンティングの制限事項
2023-07-07 23:42:27 +00:00
注意ページ記述言語であるPCLはCORSスプーフィングには適用されません。なぜなら、PCLは1つの単一の数値のみをエコーすることができるからです。同様に、PJLも使用できません。残念ながら、PJLはすべてのエコーされた文字列の前に`@PJL ECHO`を追加するため、有効なHTTPヘッダをシミュレートすることができません。ただし、これは**拡張されたXSP攻撃**が**PostScript**ジョブに**限定されるわけではありません**。PostScriptはスプーフィングされたHTTPヘッダで応答するために使用できますし、[UEL](./#uel)はプリンタ言語を切り替えるためにさらに呼び出すことができます。これにより、Web攻撃者はPJLコマンドの結果も取得できます。2つの実装上の落とし穴が存在し、言及する価値があります。まず、PostScriptで応答するデータの正しい`Content-Length`を決定する必要があります。攻撃者が応答の全体サイズを予測できず、チャンクエンコーディングも選択肢にない場合、非常に高い値を設定してパディングを使用する必要があります。2つ目は、`Connection: close`ヘッダフィールドを追加することが重要です。そうしないと、HTTP/1.1接続はウェブクライアントまたはプリンタデバイスがタイムアウトをトリガーするまでアクティブなままになり、プリンタは一時的にアクセスできなくなります。
2023-07-07 23:42:27 +00:00
もしプリンタデバイスが**プレーンテキスト印刷**をサポートしている場合、XHRの**HTTPリクエスト**ヘッダがハードコピーとして印刷されます。これには、悪意のあるJavaScriptを呼び出したURLを含む`Origin`ヘッダフィールドも含まれます。したがって、攻撃者が沈黙するのは難しいです。これは避けられないことです。なぜなら、私たちはプリンタを制御することはできず、HTTPボディが処理され、HTTPヘッダがプリンタデバイスによってプレーンテキストとして解釈されるまで待たなければならないからです。イズを減らすことが優先事項である場合、攻撃者はプロプライエタリなPJLコマンドを使用して印刷機能を最初に無効にすることができます。これは、[PJL jobmedia](http://hacking-printers.net/wiki/index.php/Document\_processing#PJL\_jobmedia)で提案されているように、IPP、LPD、FTP、またはプリンタの埋め込みウェブサーバなどの他の潜在的なXSPチャネルを使用することができます。すべてのプロトコルは、スプーフィングされたCORSヘッダを使用して印刷ジョブを展開するためにクロスプロトコルスクリプティングのバリエーションを使用してテストされましたが、スプーフィングされたCORSヘッダを使用してフィードバックを提供しないという欠点があります。
2023-07-07 23:42:27 +00:00
クロスサイトプリンティングチャネルの比較は以下の通りです:
2023-07-07 23:42:27 +00:00
| チャネル | ポート | フィードバックなし | 予期しない印刷物 | 標準化 | ブロックされる |
| ------- | ---- | ----------- | --------------------- | ------------ | -------------- |
| Raw | 9100 | - | ✔ | ✔ | - |
| Web | 80 | ✔ | - | - | - |
| IPP | 631 | ✔ | - | ✔ | - |
| LPD | 515 | ✔ | - | ✔ | FF, Ch, Op |
| FTP | 21 | ✔ | - | ✔ | FF, Ch, Op, IE |
2023-07-07 23:42:27 +00:00
XSPの主な問題の1つは、プリンタの正しいアドレスまたはホスト名を**見つける**ことです。私たちのアプローチは、ほとんどの最新のブラウザに実装されているWebRTCを悪用することです。WebRTCには、ローカルネットワークインターフェースのIPアドレスを列挙する機能があります。ローカルIPアドレスがわかったら、XHRオブジェクトを使用してポート**9100/tcp**に対して残りの253のアドレスすべてに接続を開き、PostScriptとCORSスプーフィングを使用してプリンタの製品名を取得します。これは私たちのテストでは数秒しかかかりません。プリンタが被害者のホストと同じサブネットにある場合、そのアドレスはJavaScriptだけで検出できます。WebRTCはSafariで開発中であり、最新バージョンのFirefox、Chrome、Microsoft Edgeでサポートされています。Internet ExplorerはWebRTCをサポートしていませんが、VBScriptとJavaも使用してローカルIPアドレスを漏洩させることができます。ローカルインターフェースのアドレスを取得できない場合、インテリジェントなブルートフォースアプローチを適用します。XHRオブジェクトを使用して被害者のルータのポート80に接続しようとします。そのために、さまざまなインターネットアクセス可能なリソースから取得した115のデフォルトのルータアドレスのリストが作成されました。ルータにアクセスできる場合、前述のようにサブネットをスキャンしてプリンタを検出します。
2022-05-01 12:49:36 +00:00
## Proof-of-concept
2023-07-07 23:42:27 +00:00
実証実装は、高度なクロスサイトプリンティング攻撃が企業や機関にとって実用的な脅威であることを示すものであり、[hacking-printers.net/xsp/](http://hacking-printers.net/xsp/)で入手できます。
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですかまたは、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。当社の独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキ