UnixͨÓôòӡϵͳcups-browsedÔ¶³Ì´úÂëÖ´Ðзì϶·ÖÎö

°ä²¼¹¦·ò 2024-12-13

Ò»¡¢¡¢¡¢·ì϶ÃèÊö


2024Äê9Ô£¬£¬°²È«×êÑÐÔ±Simone MargaritelliÅû¶ÁËUnixͨÓôòӡϵͳCUPS(Common UNIX Printing System)´æÔÚһϵÁа²È«·ì϶£¬£¬ÀûÓöà¸ö·ì϶×éºÏ¿ÉÔÚÊÜÓ°ÏìµÄϵͳÉÏÖ´ÐÐÔ¶³ÌºÅÁî¡£¡£¡£OG¶«·½ÌüADLab×êÑÐÈËÔ±¶Ô¸Ã·ì϶µÄµÀÀí½øÐÐÉî¿Ì·ÖÎö£¬£¬Í¬Ê±Ìá³öÐÞ¸´½¨Ò黺ºÍ½â´ëÊ©¡£¡£¡£


±í1.png


¶þ¡¢¡¢¡¢ÓйؽéÉÜ


CUPSÊÇÒ»¸ö¿ªÔ´µÄ´òӡϵͳ£¬£¬ÓÃÓÚLinuxºÍÆäËûÀàUNIX²Ù×÷ϵͳ¡£¡£¡£CUPS Ìṩ Web½çÃæºÍBerkeleyºÅÁîÐнçÃæµÈ¶àÖÖ·½Ê½À´ÖÎÀí´òÓ¡»úºÍ´òÓ¡¹¤×÷¡£¡£¡£ÀýÈç½Ó¼ûhttp://localhost:631¿ÉÖÎÀí´òÓ¡»ú¡£¡£¡£


ͼ1.png


CUPSÖØÒªÊ¹ÓÃInternet Printing Protocol(IPP)À´ÊµÏÖ±¾µØºÍÍøÂç´òÓ¡»úµÄ´òÓ¡Ö°ÄÜ¡£¡£¡£IPPÊÇÒ»¸öÔÚ»¥ÁªÍøÉÏ´òÓ¡µÄ³ß¶ÈÍøÂçºÍ̸£¬£¬Ëü´ðÀíÓû§Äܹ»Í¨¹ý»¥ÁªÍø×÷Ô¶¾àÀë´òÓ¡¼°ÖÎÀí´òÓ¡¹¤×÷µÈ¡£¡£¡£IPPѡȡµÄ³¬Îı¾´«ÊäºÍ̸HTTPµÄPOST²½ÖèÔÚ¿Í»§¶ËºÍ´òÓ¡·þÎñÆ÷Ö®¼ä½øÐлỰ¡£¡£¡£


ͼ2.png


cups-browsedÊÇÒ»¸ö¿ªÔ´µÄ´òÓ¡·þÎñ×é¼þ£¬£¬ËüÊÇCommon UNIX Printing System(CUPS)µÄÒ»²¿ÃÅ¡£¡£¡£cups-browsedÕÆ¹ÜÔÚ±¾µØÍøÂçÉÏ×Ô¶¯·¢ÏÖºÍÔö³¤´òÓ¡»ú£¬£¬Ê¹ÓÃmDNS£¨¶à²¥DNS£©»òDNS-SD£¨DNS·þÎñ·¢ÏÖ£©ºÍ̸À´Õì²âÍøÂçÉϵĴòÓ¡É豸¡£¡£¡£ËüʹµÃÓû§¿ÉÄÜÎÞÐèÊÖ¶¯ÅäÖü´¿ÉʹÓÃÍøÂç´òÓ¡»ú¡£¡£¡£


Èý¡¢¡¢¡¢µÀÀí·ÖÎö


¸Ã·ì϶ԴÓÚcups-browsed·þÎñ£¬£¬¸Ã·þÎñ°ó¶¨ÔÚUDP INADDR_ANY:631¶Ë¿ÚÉÏ£¬£¬½ÓÊÜÈκÎip·¢Ë͹ýÀ´Êý¾Ý¡£¡£¡£Í¬Ê±¸Ã·þÎñÊÊÅä´óÎÞÊýUNIXϵͳ£¬£¬ÇÒ´óÎÞÊýÉ豸ĬÈÏ¿ªÆô¸Ã·þÎñ¡£¡£¡£


¸Ã·þÎñµÄÖ°ÄÜÊÇ·¢ÏÖ»¥ÁªÍøÉϵĴòÓ¡»ú£¬£¬¶øºó½«´òÓ¡»úÔö³¤µ½ÏµÍ³·þÎñÉÏ£¬£¬ÓйØÖ°ÄܵÄʵÏÖ´úÂëÔÚcups-browsed.cÎļþÖС£¡£¡£´úÂëÖд´½¨Ò»¸öÃûΪBrowseSocketµÄÌ×½Ó×Ö£¬£¬¶øºó°ó¶¨ÔÚ631¶Ë¿Ú¡£¡£¡£


ͼ3.png


µ±²é³­µ½ÏµÍ³Ö§³ÖBrowseRemoteProtocolsʱ£¬£¬´´½¨Ò»¸ö UNIX Ì×½Ó×ÖͨµÀ£¬£¬²¢ÉèÖüල¸ÃͨµÀÉϵÄÊäÈëÊÂÎñ¡£¡£¡£Ò»µ©º±¼û¾Ý¿É¶Á£¬£¬½«Å²ÓÃprocess_browse_dataº¯ÊýÀ´´¦ÖÃÕâЩÊý¾Ý¡£¡£¡£


ͼ4.png


BrowseRemoteProtocols²ÎÊý¿Éͨ¹ý/etc/cups/cups-browsed.confÎļþ½øÐÐÅäÖ㬣¬´Ë´¦Í¨³£Ä¬ÈÏ¿ªÆô¡£¡£¡£


ͼ5.png


process_browse_dataÊǹؼüµÄÊý¾Ý´¦Öú¯Êý£¬£¬¸Ãº¯ÊýŲÓÃrecvfrom´ÓBrowseSocketÌ×½Ó×Ö¶ÁÈ¡Êý¾Ý°üpacket¡£¡£¡£Êý¾Ý°üÌåʽ×ñ´ÓHEX_NUMBER HEX_NUMBER TEXT_DATA£¬£¬Ê¹ÓøÃÌåʽµÄÊý¾ÝµÄÔ­ÒòʱÊÇ·¨Ê½ÔÚ´¦ÖÃpacketʱʹÓÃÁËÏÂÃæµÄº¯Êý¶ÔÊý¾Ý½øÐд¦Öᣡ£¡£


sscanf (packet, "%x%x%1023s",&type, &state, uri)


½Ó¹Üµ½Êý¾Ý°üºó»áŲÓÃallowedº¯Êý¶Ôip½øÐкÏÀíÐԲ鳭£¬£¬¸Ã²é³­¹æ¶¨¿Éͨ¹ý/etc/cups/cups-browsed.confÎļþ½øÐÐÅäÖᣡ£¡£


ͼ6.png


allowed²é³­Í¨¹ýºó»á½«Êý¾Ý°ü´«Èëfound_cups_printerº¯Êý½øÇ°½øÒ»²½´¦Öᣡ£¡£


found_cups_printerº¯ÊýÖÐŲÓÃhttpSeparateURIº¯Êý½âÎö´«ÈëµÄuri²ÎÊý²¢½«Æä²ð·ÖΪºÍ̸¡¢¡¢¡¢Óû§Ãû¡¢¡¢¡¢Ö÷»úÃû¡¢¡¢¡¢¶Ë¿Ú¡¢¡¢¡¢×ÊÔ´õè¾¶µÈ²¿ÃÅ¡£¡£¡£¶øºóƾ¾Ý½âÎöµÃµ½µÄ¸÷²¿ÃÅÐÅÏ¢£¬£¬¶ÔuriÊÇ·ñµÈÓÚ¡±/printers/¡±ºÍ¡±/calsses/¡±×Ö·û´®½øÐв鳭¡£¡£¡£²é³­Í¨¹ýºóŲÓÃexamine_discovered_printer_recordº¯ÊýÀ´´¦Ö÷¢ÏֵĴòÓ¡»ú¼Í¼¡£¡£¡£


ͼ7.png


´¦ÖÃÍêÊý¾ÝºóŲÓÃcfGetPrinterAttributesº¯Êý½øÐлØÁ¬£¬£¬ÆäÖÐÏÈʹÓÃhttpConnectº¯ÊýÏȳÉÁ¢httpÏνÓ£¬£¬¶øºóŲÓÃippNewRequest³ÉÁ¢IPPÏνÓ£¬£¬×îºóÏòIPP Server·¢ËÍ»ñÈ¡´òÓ¡»úÊôÐÔµÄÒªÇ󡣡£¡£


ͼ8.png


·¢ËÍÍêÒªÇóºócups-browsed·¨Ê½»áŲÓÃppdCreatePPDFromIPP2º¯Êý´´½¨PPDÎļþ¶øºó½«½Ó¹ÜµÄ´òÓ¡»úÊôÐÔ˳´Î±£Áôµ½ÎļþÀïÃæ¡£¡£¡£


ͼ9.png


ÖÁ´Ë£¬£¬ÒѾ­Äܹ»³É¹¦ÉèÖÃPPDµÄÊôÐÔ£¬£¬½ÓÏÂÀ´¾ÍÊÇÉè·¨×ÓÖ´ÐÐдÈëµÄÊý¾Ý¡£¡£¡£Õâ±ØÒªÊ¹ÓÃCUPSµÄÒ»¸ö¹ýÂËÆ÷Ö¸ÁîcupsFilter2£¬£¬¸ÃÖ¸ÁîÓÃÓÚ´¦ÖôòÓ¡×÷ÒµÖеÄɸѡºÍת»»²Ù×÷¡£¡£¡£

ÀýÈçÏÂÃæµÄÖ¸ÁîÒªÇócups½«ÇкϴòÓ¡»úÊôÐÔµÄpostscriptÌåʽµÄÊý¾Ý´«µÝ¸øprogram¹ýÂËÆ÷½øÐд¦Ö㬣¬ÓÅÏȼ¶Îª0¡£¡£¡£


*cupsFilter2:"application/pdf application/vnd.cups-postscript 0 program


CUPS»®¶¨Ö»ÄÜʹÓÃ/usr/lib/cups/filterõè¾¶ÏÂÃæµÄ¿ÉÖ´ÐÐÎļþ£¬£¬×îÖÕÒÔfoomatic-rip¹ýÂËÆ÷×÷ΪÀûÓõÄÖ¸±ê¡£¡£¡£¸Ã¹ýÂËÆ÷½ÓÊÜPPDÎļþÖеÄFoomaticRIPCommandLineÖ¸Á£¬Í¨¹ýËüÄܹ»Ö´ÐÐËÁÒâºÅÁî¡£¡£¡£


ËÄ¡¢¡¢¡¢·ì϶ÐÞ¸´

½ØÖÁĿǰ£¬£¬Ubuntu£¬£¬Debian£¬£¬FedoraµÈ¶à¸öϵͳÖÐÉæ¼°·ì϶µÄ¶à¸ö°æ±¾ÒѸù»ùÐÞ¸´¡£¡£¡£


ͼ10.png


ÔÚUbuntu×îаæµÄÐÞ¸´¹æ»®ÖÐÆëȫɾ³ý¶Ô¾É°æ CUPS ºÍ̸ºÍ LDAP µÄÖ§³Ö¡£¡£¡£


ͼ11.png


Îå¡¢¡¢¡¢»º½â´ëÊ©


·ì϶ÐÞ¸´°æ±¾ÒѾ­ÉÏ´«£¬£¬UbuntuϵͳÖÐÔËÐÐÏÂÃæÁ½ÌõºÅÁî¼´¿É½øÐÐÉý¼¶¡£¡£¡£


sudo apt update

sudo apt upgrade


ÈôÊÇÉÏÃæµÄÉý¼¶²»³É¹¦£¬£¬Ê¹ÓÃÏÂÃæÁ½ÖÖ·¨×Ó»º½â¸Ã·ì϶£º


£¨1£©Ö±½Ó½ûÓÃcups-browsed·þÎñ

sudo systemctl stop cups-browsed

sudo systemctl disable cups-browsed


£¨2£©ÈôÊǸÃÖ°ÄܱØÒªÊ¹Ó㬣¬½¨Ò齫/etc/cups/cups-browsed.confÖÐBrowseRemoteProtocolsÖ¸ÁîÖµ´ÓĬÈϵġ°dnssd cups¡±¸ü¸ÄΪ¡°none¡±¡£¡£¡£


²Î¿¼Á´½Ó£º


[1]https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/

[2]https://gist.github.com/stong/c8847ef27910ae344a7b5408d9840ee1

[3]https://censys.com/common-unix-printing-service-vulnerabilities/

[4]https://blog.ostorlab.co/cups-vulnerabilities.html

[5]https://github.com/OpenPrinting/cups-browsed/security/advisories/GHSA-rj88-6mr5-rcw8

[6]https://ubuntu.com/security/notices/USN-7043-4

[7]https://ubuntu.com/security/notices/USN-7042-3

[8]https://launchpad.net/ubuntu/+source/cups-browsed/2.0.1-0ubuntu2.1

[9]https://www.upwind.io/feed/analyzing-the-latest-cups-rce-vulnerability-threats-and-mitigations


OG¶«·½Ìü»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©


ADLab³ÉÁ¢ÓÚ1999Ä꣬£¬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬£¬¡°ºÚȸ¹¥»÷¡±¸ÅÄîÊ×ÍÆÕß¡£¡£¡£½ØÖÁĿǰ£¬£¬ADLabÒÑͨ¹ý CNVD/CNNVD/NVDB/CVEÀۼư䲼°²È«·ì϶5000Óà¸ö£¬£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£¡£¡£³¢ÊÔÊÒ×êÑз½Ïòº­¸Ç»ù´¡°²È«×êÑС¢¡¢¡¢Êý¾Ý°²È«×êÑС¢¡¢¡¢5G°²È«×êÑС¢¡¢¡¢ÈËΪÖÇÄܰ²È«×êÑС¢¡¢¡¢Òƶ¯°²È«×êÑС¢¡¢¡¢ÎïÁªÍø°²È«×êÑС¢¡¢¡¢³µÁªÍø°²È«×êÑС¢¡¢¡¢¹¤¿Ø°²È«×êÑС¢¡¢¡¢ÐÅ´´°²È«×êÑС¢¡¢¡¢Ôư²È«×êÑС¢¡¢¡¢ÎÞÏß°²È«×êÑС¢¡¢¡¢¸ß¼¶Íþв×êÑС¢¡¢¡¢¹¥·Àϵͳ½¨Éè¡£¡£¡£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑС¢¡¢¡¢¹ú¶ÈÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢¡¢¡¢×¨Òµ°²È«·þÎñµÈ¡£¡£¡£


adlab.jpg