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

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

Ò»¡¢Îó²îÐÎò


2024Äê9Ô£¬£¬£¬ £¬ £¬£¬Çå¾²Ñо¿Ô±Simone MargaritelliÅû¶ÁËUnixͨÓôòӡϵͳCUPS(Common UNIX Printing System)±£´æÒ»ÏµÁÐÇå¾²Îó²î£¬£¬£¬ £¬ £¬£¬Ê¹Óöà¸öÎó²î×éºÏ¿ÉÔÚÊÜÓ°ÏìµÄϵͳÉÏÖ´ÐÐÔ¶³ÌÏÂÁî¡£¡£¡£¡£¿­Ðý¹ú¼ÊÓÎÏ·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


¿­Ðý¹ú¼ÊÓÎÏ·Æð¾¢·ÀÓùʵÑéÊÒ£¨ADLab£©


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


adlab.jpg