UnixͨÓôòӡϵͳcups-browsedÔ¶³Ì´úÂëÖ´ÐÐÎó²îÆÊÎö

Ðû²¼Ê±¼ä 2024-12-13

Ò»¡¢Îó²îÐÎò


2024Äê9Ô£¬£¬£¬£¬Çå¾²Ñо¿Ô±Simone MargaritelliÅû¶ÁËUnixͨÓôòӡϵͳCUPS(Common UNIX Printing System)±£´æÒ»ÏµÁÐÇå¾²Îó²î£¬£¬£¬£¬Ê¹Óöà¸öÎó²î×éºÏ¿ÉÔÚÊÜÓ°ÏìµÄϵͳÉÏÖ´ÐÐÔ¶³ÌÏÂÁî¡£¡£¡£¡£¡£c7c7ÓéÀÖÆ½Ì¨ADLabÑо¿Ö°Ô±¶Ô¸ÃÎó²îµÄÔ­Àí¾ÙÐÐÉîÈëÆÊÎö£¬£¬£¬£¬Í¬Ê±Ìá³öÐÞ¸´½¨Ò黺ºÍ½â²½·¥¡£¡£¡£¡£¡£


±í1.png


¶þ¡¢Ïà¹ØÏÈÈÝ


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


ͼ1.png


CUPSÖ÷ҪʹÓÃInternet Printing Protocol(IPP)À´ÊµÏÖÍâµØºÍÍøÂç´òÓ¡»úµÄ´òÓ¡¹¦Ð§¡£¡£¡£¡£¡£IPPÊÇÒ»¸öÔÚ»¥ÁªÍøÉÏ´òÓ¡µÄ±ê×¼ÍøÂçЭÒ飬£¬£¬£¬ËüÔÊÐíÓû§¿ÉÒÔͨ¹ý»¥ÁªÍø×÷Ô¶¾àÀë´òÓ¡¼°ÖÎÀí´òÓ¡ÊÂÇéµÈ¡£¡£¡£¡£¡£IPP½ÓÄɵij¬Îı¾´«ÊäЭÒé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£¬£¬£¬£¬Ê¹ÓøÃÃûÌõÄÊý¾ÝµÄÔµ¹ÊÔ­ÓÉʱÊdzÌÐòÔÚ´¦Öóͷ£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


c7c7ÓéÀÖÆ½Ì¨Æð¾¢·ÀÓùʵÑéÊÒ£¨ADLab£©


ADLab½¨ÉèÓÚ1999Ä꣬£¬£¬£¬ÊÇÖйúÇå¾²ÐÐÒµ×îÔ罨ÉèµÄ¹¥·ÀÊÖÒÕÑо¿ÊµÑéÊÒÖ®Ò»£¬£¬£¬£¬Î¢ÈíMAPPÍýÏë½¹µã³ÉÔ±£¬£¬£¬£¬¡°ºÚȸ¹¥»÷¡±¿´·¨Ê×ÍÆÕß¡£¡£¡£¡£¡£×èÖ¹ÏÖÔÚ£¬£¬£¬£¬ADLabÒÑͨ¹ý CNVD/CNNVD/NVDB/CVEÀÛ¼ÆÐû²¼Çå¾²Îó²î5000Óà¸ö£¬£¬£¬£¬Ò»Á¬¼á³Ö¹ú¼ÊÍøÂçÇå¾²ÁìÓòÒ»Á÷Ë®×¼¡£¡£¡£¡£¡£ÊµÑéÊÒÑо¿Æ«Ïòº­¸Ç»ù´¡Çå¾²Ñо¿¡¢Êý¾ÝÇå¾²Ñо¿¡¢5GÇå¾²Ñо¿¡¢È˹¤ÖÇÄÜÇå¾²Ñо¿¡¢Òƶ¯Çå¾²Ñо¿¡¢ÎïÁªÍøÇå¾²Ñо¿¡¢³µÁªÍøÇå¾²Ñо¿¡¢¹¤¿ØÇå¾²Ñо¿¡¢ÐÅ´´Çå¾²Ñо¿¡¢ÔÆÇå¾²Ñо¿¡¢ÎÞÏßÇå¾²Ñо¿¡¢¸ß¼¶ÍþвÑо¿¡¢¹¥·Àϵͳ½¨Éè¡£¡£¡£¡£¡£Ñо¿Ð§¹ûÓ¦ÓÃÓÚ²úÆ·½¹µãÊÖÒÕÑо¿¡¢¹ú¼ÒÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨ÒµÇ徲ЧÀ͵È¡£¡£¡£¡£¡£


adlab.jpg