iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 27
0
Security

網路安全概述系列 第 27

談印表機(續): 線上服務的問題 (或是: 不要太相信使用者)

原本應該要談「PDF 線上服務」的問題,不過昨天有點忙,所以忘記了,跑去寫 CSRF.... 這篇我們回過頭來,繼續講這個問題。

線上服務的問題

Exploiting Network Printers 的作者們其實在文末中有提到,「線上服務」也有可能會跑出一些問題來。

Google Cloud Print

Google Cloud Print (GCP) 是 Google 之前推出的一個服務,顧名思義,通過 Google 的服務來管理印表機。在使用 GCP 的狀況下,可以直接讓某台印表機幫你列印東西,不需要再做其他如驅動等等的設定。

GCP 其實也可以讓原生不支持 GCP 的印表機也用上他們的服務,不過做法不太一樣。各自會有各自的問題,以下會介紹。

在印表機原生支持 GCP 的狀況下

若印表機原生支持 GCP,印表機就可以直接通過 HTTP 和 GCP API 做「配對」,即設定這台印表機,使其可以在 GCP 上被使用。在配對的過程中,印表機會想辦法(印?)出一串網址,然後使用者再去 Google 的服務中,輸入這串網址,然後就可以把印表機加入他的 GCP 裡面。

由於 GCP 本身也能執行 PostScript,這樣會有一些有趣的事情可以做...
先講列印的流程。流程如下:

  1. 用手機或電腦,把檔案丟到 GCP
  2. GCP 收這個檔案,然後 GCP 是可以直接讀 PostScript 的,可以把 PostScript 轉成檔案。
  3. GCP 會把檔案會丟到印表機去,如果這個檔案還是 PostScript 的話,那印表機也要再讀一次

因為這邊有兩次會執行 PostScript,所以有兩個攻擊途徑。

原作者說,只要 Content-Type 設成 application/postscript,GCP 就會讀那個檔案,然後就可以使用之前提到的攻擊模式來打 GCP 了。但原作者很好心,他們不想要把 GCP 弄壞,所以選擇不試試看可以做蛇社情,而是回報這個 bug。
另外,也有可能直接打 GCP 後面的那台印表機,但是要想辦法讓 GCP 不會對那個檔案做轉檔,才有辦法讓最後面那台印表機去執行 PostScript。

在印表機原生不支持 GCP 的狀況下

如果印表機原生不支持 GCP,那就需要找一台電腦來做「人柱力」。基本上,就是要拿一台電腦,接印表機,然後開 Chrome,用某種方式(WebUSB?)和那台印表機接上,所以那台印表機就能當 GCP 印表機用了。

這台 PC 可以設定多台印表機,也可以設定網路印表機,所以是有可能通過一臺 PC 把區網上所有印表機給變成 GCP 印表機的。

不過,那台 PC 上會有一個叫做 Chrome Print Service 在跑,而且他也可以跑 PostScript!所以除了原生支持 GCP 的狀況下,還多一個攻擊途徑,而且這台 PC 上的檔案也有可能會被讀取。(原作者有試成功)

線上轉(讀)檔的問題

線上轉/讀檔服務,其實也會面臨和 GCP 一樣的問題。有些網站其實也可以把 PostScript 轉成某種檔案(或反過來)的,所以也會出事⋯⋯

PostScript -> PDF

由於 PostScript 轉 PDF 的過程中,會需要讀 PostScript,所以若文件內帶一些惡意程式碼的話,也會一起執行進去。原作者其實試了差不多十個網站,然後大部分的網站上,執行 PostScript 都會造成一些資訊的外洩。而且,還有可能把網站上的檔案改掉(或讀取),所以這也有可能成為一個攻佔伺服器的途徑。

另一個方向是 PDF 轉 PostScript,由於 PDF 是一個跨平台但又很複雜的格式,而且還可以定義動態內容。由於 PDF 很多人用,又很複雜,所以 PDF 也常常有人在研究。這種路徑的話,比較有可能是打 PDF 本身的問題,例如說 PDF 的動態內容拿來執行 HTTP 請求 或是執行 Javascript

3D 列印

沒錯,3D 列印也是一個可能的受害者。除了故意給一個壞掉的模型檔以外,3D 列印的物體,最後通常都是轉成 G-code,然後在印表機上執行。

由於現在有「線上 3D 印」這種東西,所以使用者可以上傳一份檔案,然後等對方把印好的東西寄給你。但是,G-code 有幾個有趣的指令,例如上傳設定檔、上傳網頁、或是修改某些參數(例如過熱溫度上限?),所以也是一個有趣的攻擊途徑。

參考這邊

想像一下,你的競業對手,假裝是你的客人。他上傳一份東西叫你印,導致你其他東西也壞掉 :-)


上一篇
談 CSRF 以及「從前端下 Query」:phpMyAdmin & CVE-2017-1000499
下一篇
談「交通號誌系統」:整體系統的安全
系列文
網路安全概述31

尚未有邦友留言

立即登入留言