From 0aac038e61fb9edac8c552b678d0ffe2a803579e Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 14 Aug 2025 06:34:39 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-631-internet-pri --- ...ting-631-internet-printing-protocol-ipp.md | 106 +++++++++++++++--- 1 file changed, 93 insertions(+), 13 deletions(-) diff --git a/src/network-services-pentesting/pentesting-631-internet-printing-protocol-ipp.md b/src/network-services-pentesting/pentesting-631-internet-printing-protocol-ipp.md index 594e70ba6..a55768d0b 100644 --- a/src/network-services-pentesting/pentesting-631-internet-printing-protocol-ipp.md +++ b/src/network-services-pentesting/pentesting-631-internet-printing-protocol-ipp.md @@ -1,23 +1,103 @@ +# Internet Printing Protocol + {{#include ../banners/hacktricks-training.md}} -# Internet Printing Protocol \(IPP\) +**Internet Printing Protocol (IPP)**, kama ilivyoainishwa katika **RFC 2910** na **RFC 2911**, ni kiwango cha de-facto kwa uchapishaji wa mtandao. Inakaa juu ya **HTTP/1.1** (iwe ni maandiko wazi au TLS) na inatoa API tajiri kwa ajili ya kuunda kazi za uchapishaji, kuuliza uwezo wa printer na kusimamia foleni. Upanuzi wa kisasa kama **IPP Everywhere** hata unaruhusu uchapishaji bila madereva kutoka kwa mazingira ya simu na wingu, wakati muundo sawa wa pakiti umerejelewa kwa printers za 3-D. -**Internet Printing Protocol (IPP)**, kama ilivyoainishwa katika **RFC2910** na **RFC2911**, inatumika kama msingi wa uchapishaji kupitia intaneti. Uwezo wake wa kupanuliwa unaonyeshwa na maendeleo kama **IPP Everywhere**, ambayo inaimarisha viwango vya uchapishaji wa simu na wingu, na utambulisho wa nyongeza za **3D printing**. +Kwa bahati mbaya, kufichua bandari **631/tcp (na 631/udp kwa ajili ya kugundua printer)** mara nyingi husababisha matatizo makubwa ya usalama – kwa printers za ofisi za jadi na kwenye mwenyeji yeyote wa Linux/Unix unaendesha **CUPS**. -Kwa kutumia protokali ya **HTTP**, IPP inafaidika na mbinu za usalama zilizowekwa ikiwa ni pamoja na **basic/digest authentication** na **SSL/TLS encryption**. Vitendo kama kuwasilisha kazi ya uchapishaji au kuuliza hali ya printer vinatekelezwa kupitia **HTTP POST requests** zinazolengwa kwenye seva ya IPP, ambayo inafanya kazi kwenye **port 631/tcp**. - -Utekelezaji maarufu wa IPP ni **CUPS**, mfumo wa uchapishaji wa chanzo wazi unaojulikana katika usambazaji mbalimbali wa Linux na OS X. Licha ya matumizi yake, IPP, kama LPD, inaweza kutumika vibaya kuhamasisha maudhui mabaya kupitia **PostScript** au **PJL files**, ikionyesha hatari ya usalama inayoweza kutokea. +--- +## Quick PoC – crafting raw IPP with Python ```python -# Example of sending an IPP request using Python -import requests +import struct, requests -url = "http://printer.example.com:631/ipp/print" -headers = {"Content-Type": "application/ipp"} -data = b"..." # IPP request data goes here +# Minimal IPP Get-Printer-Attributes request (operation-id 0x000B) +ipp = struct.pack( +">IHHIHH", # version 2.0, operation-id, request-id +0x0200, # 2.0 +0x000B, # Get-Printer-Attributes +0x00000001, # request-id +0x01, 0x47, # operation-attributes-tag, charset attr (skipped) +) + b"\x03" # end-of-attributes -response = requests.post(url, headers=headers, data=data, verify=True) -print(response.status_code) +r = requests.post("http://printer:631/ipp/print", headers={"Content-Type":"application/ipp"}, data=ipp) +print(r.status_code, r.content[:40]) ``` -Ikiwa unataka kujifunza zaidi kuhusu [**hacking printers soma ukurasa huu**](http://hacking-printers.net/wiki/index.php/Main_Page). +--- +## Uhesabu & Upelelezi +### 1. Nmap NSE +```bash +# run all CUPS/IPP scripts +nmap -sV -p631 --script=cups* +# or only basic info +nmap -p631 --script=cups-info,cups-queue-info +``` +The `cups-info` script inatoa mfano, hali na takwimu za foleni wakati `cups-queue-info` inataja kazi zinazongoja. + +### 2. IPP utilities kutoka CUPS +* `ippfind` – ugunduzi wa multicast/UDP (inafanya kazi dhidi ya cups-browsed): +```bash +ippfind --timeout 3 --txt -v "@local and port=631" # orodhesha printers +``` +* `ipptool` – maombi ya kawaida yaliyofafanuliwa katika faili ya *.test*: +```bash +ipptool -tv ipp:///ipp/print get-printer-attributes.test +``` +Faili iliyojumuishwa *get-printer-attributes.test* inachunguza toleo la firmware, fomati za hati zinazoungwa mkono, n.k. + +### 3. Shodan / Censys dorks +```bash +shodan search 'product:"CUPS (IPP)" port:631' +``` +Zaidi ya **70,000** wenyeji walikuwa wakionyesha hadharani CUPS mnamo Aprili 2025. + +--- +## Uthibitisho wa Hivi Karibuni (2023-2025) + +| Mwaka | CVE ID(s) | Kipengele kilichoathirika | Athari | +|------|-----------|--------------------|--------| +| 2025 | CVE-2023-50739 | Lexmark firmware (IPP parser) | Heap-overflow → RCE kupitia Wi-Fi/LAN | +| 2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Mnyororo wa RCE usio na uthibitisho kamili kwenye desktop/server yoyote ya Linux iliyo na CUPS browsing imewezeshwa | +| 2024 | CVE-2024-35235 | cupsd 2.4.8- | Njia ya symlink → **chmod 666** isiyo na mipaka → kupandisha hadhi | +| 2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow katika sifa ya `sides` → utekelezaji wa msimbo wa mbali | + +### Mnyororo wa RCE wa cups-browsed (Septemba 2024) +1. `cups-browsed` inasikiliza kwenye **UDP/631** kwa matangazo ya printer. +2. Mshambuliaji anatumia pakiti moja ya kudanganya ikielekeza kwenye URL ya IPP mbaya (CVE-2024-47176). +3. `libcupsfilters` inapata kiotomatiki **PPD** ya mbali bila uthibitisho (CVE-2024-47076 & 47175). +4. PPD iliyoundwa inatumia kichujio cha **foomatic-rip** kutekeleza amri za shell zisizo na mipaka kila wakati kitu kinapochapishwa (CVE-2024-47177). + +Msimbo wa uthibitisho wa dhana upo hadharani kwenye blogu ya mtafiti na unahitaji **hakuna uthibitisho**; ufikiaji wa mtandao kwa UDP/631 unatosha. + +#### Njia za muda za kupunguza +``` +sudo systemctl stop cups-browsed +sudo systemctl disable cups-browsed +sudo ufw deny 631/udp # or equivalent firewall rule +``` +Patches zilitolewa na usambazaji mkubwa mnamo Oktoba 2024 – hakikisha **cups-filters ≥ 2.0.0**. + +### cupsd symlink `Listen` misconfiguration (CVE-2024-35235) +Kuweka kiungo cha alama katika *cupsd.conf*’s `Listen` directive kunasababisha **cupds (root)** kufanya `chmod 666` kwenye njia iliyochaguliwa na mshambuliaji, ikisababisha faili za mfumo zinazoweza kuandikwa na, kwenye Ubuntu, utekelezaji wa msimbo kupitia PPD mbaya na `FoomaticRIPCommandLine`. + +--- +## Mbinu za Kihalifu + +* **Kazi ya uchapishaji isiyo na uthibitisho** – printers nyingi zinakubali `POST /ipp/print` bila uthibitisho. Payload mbaya ya **PostScript** inaweza kuita amri za shell (`system("/bin/nc ...")`) kwenye vifaa vya hali ya juu. +* **Kuhijack Kazi** – `Cancel-Job` ikifuatwa na `Send-Document` inaruhusu mshambuliaji kubadilisha hati ya mtu mwingine kabla ya kuchapishwa kimwili. +* **SNMP → IPP combo** – jamii ya chaguo-msingi `public` mara nyingi inavuja jina la foleni ya ndani inayohitajika katika URL ya IPP. + +--- +## Mbinu Bora za Kijamii +1. Sasisha CUPS na firmware ya printer mara moja; jiandikishe kwa feeds za PSIRT za muuzaji. +2. Zima `cups-browsed` na UDP/631 isipokuwa uchapishaji wa zeroconf unahitajika. +3. Punguza TCP/631 kwa subnets/VPN zinazotegemewa na enforce **TLS (ipps://)**. +4. Hitaji **Kerberos/Negotiate** au uthibitisho wa cheti badala ya uchapishaji wa bila majina. +5. Fuata kumbukumbu: `/var/log/cups/error_log` na `LogLevel debug2` itaonyesha upakuaji wa PPD zisizo thabiti au mwito wa chujio wa kutatanisha. +6. Katika mitandao ya usalama wa juu, hamasisha uchapishaji kwenye seva ya uchapishaji iliyoharibiwa, iliyotengwa ambayo inapeleka kazi kwa vifaa kupitia USB pekee. + +## Marejeleo +- Akamai – “Uthibitisho wa RCE wa Linux wa Kihafidhina katika CUPS — Kile Tunachojua na Jinsi ya Kujiandaa”, Aprili 2025. +- Debian Security Tracker – maelezo ya CVE-2024-35235. {{#include ../banners/hacktricks-training.md}}