¡¾ ÊÖÒÕÆÊÎöÓë·À»¤¼Æ»®¡¿GoAhead httpd/2.5 to 3.5 LD_PRELOAD Ô¶³Ì´ú
2017-11-20
×ÛÊö
GoAhead Web ServerÔÚ3.6.5֮ǰµÄËùÓа汾Öб£´æÒ»¸öÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¨CVE-2017-17562£©¡£¸ÃÎó²îÔ´ÓÚʹÓò»ÊÜÐÅÍеÄHTTPÇëÇó²ÎÊý³õʼ»¯CGI¾ç±¾ÇéÐΣ¬²¢ÇÒ»áÓ°ÏìËùÓÐÆôÓÃÁ˶¯Ì¬Á´½Ó¿ÉÖ´ÐÐÎļþ£¨CGI¾ç±¾£©Ö§³ÖµÄÓû§¡£µ±Óëglibc¶¯Ì¬Á´½ÓÆ÷ÍŽáʹÓÃʱ£¬Ê¹ÓÃÌØÊâ±äÁ¿£¨ÈçLD_PRELOAD£©¿ÉÒÔÀÄÓøÃÎó²î£¬´Ó¶øµ¼ÖÂÔ¶³Ì´úÂëÖ´ÐС£
²Î¿¼Á´½Ó£º
https://www.elttam.com.au/blog/goahead/
https://github.com/embedthis/goahead/issues/249
ÊÜÓ°ÏìµÄ°æ±¾
GoAhead Web Server Version < 3.6.5
²»ÊÜÓ°ÏìµÄ°æ±¾
GoAhead Web Server Version >= 3.6.5
ÊÖÒÕ·À»¤¼Æ»®
Óû§×Ô²é
¸ÃÎó²îÓ°Ïìlinux·þÎñÆ÷ÉÏ¿ªÆôÁ˶¯Ì¬Á´½Ó¿ÉÖ´ÐÐÎļþµÄÓû§£¬Í¬Ê±Çë¼ì²éÄ¿½ñGoAhead Web Server°æ±¾ÊÇ·ñÔÚÊÜÓ°Ïì¹æÄ£ÄÚ£¬ÈôÊÇÄ¿½ñ°æ±¾µÍÓÚ3.6.5£¬Ôò±£´æÎ£º¦¡£
°æ±¾¼ì²â¿ÉʹÓÃÈçÏÂÏÂÁ
|
./goahead --version |

¹Ù·½ÐÞ¸´¼Æ»®
¹Ù·½ÒѾÔÚа汾ÖÐÐÞ¸´Á˸ÃÎó²î£¬ÇëÓû§¾¡¿ìÉý¼¶µ½×îа汾¾ÙÐзÀ»¤¡£Óû§¿ÉÒÔÉúÑÄauth.txtºÍroute.txÉèÖÃÎļþ£¬ È»ºóɾ³ýÒÔǰ°æ±¾µÄGoAhead£¬½ÓÏÂÀ´£¬×°ÖÃа汾²¢½«ÄúµÄÉèÖÃÓ¦ÓÃÓÚа汾¡£
²Î¿¼Á´½Ó£º
https://embedthis.com/goahead/download.html
https://embedthis.com/goahead/doc/start/installing.html
¾ÅÓÎÀÏ¸ç¿Æ¼¼·À»¤½¨Òé
¾ÅÓÎÀÏ¸ç¿Æ¼¼¼ì²âÀà²úÆ·Óë·þÎñ
1¡¢ ¹«Íø×ʲú¿ÉʹÓþÅÓÎÀϸçÔÆ ½ôÆÈÎó²îÔÚÏß¼ì²â£¬¼ì²âµØµãÈçÏ£º
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12
2¡¢ÄÚÍø×ʲú¿ÉÒÔʹÓþÅÓÎÀÏ¸ç¿Æ¼¼µÄÈëÇÖ¼ì²âϵͳ(IDS)¾ÙÐмì²â¡£
ÈëÇÖ¼ì²âϵͳ£¨IDS£©
http://update.nsfocus.com/update/listIds
ͨ¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐмì²â
ʹÓþÅÓÎÀÏ¸ç¿Æ¼¼·À»¤Àà²úÆ·£¨IPS/NF/WAF£©¾ÙÐзÀ»¤£º
ÈëÇÖ·À»¤ÏµÍ³£¨IPS£©
http://update.nsfocus.com/update/listIps
ÏÂÒ»´ú·À»ðǽϵͳ£¨NF£©
http://update.nsfocus.com/update/listNf
WebÓ¦Ó÷À»¤ÏµÍ³£¨WAF£©
http://update.nsfocus.com/update/wafIndex
ͨ¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐзÀ»¤£¡
ÊÖÒÕÆÊÎö
Îó²îÆÊÎö
GoAheadµÄcgi³ÌÐòÔÚ´¦Öóͷ£HTTPÇëÇóʱ£¬Ã»ÓÐ׼ȷ¹ýÂ˲ÎÊý£¬¿É±»×¢Èë±äÁ¿LD_PRELOAD£¬µ¼ÖÂÔ¶³ÌÏÂÁîÖ´ÐС£
goahead/src/cgi.cµÄcgihandlerº¯ÊýÓÃÓÚ´¦Öóͷ£HTTPÇëÇó¡£

Ëü»á´ÓHTTPÇëÇóµÄ²ÎÊýÖÐÌáÈ¡³ökey-valueÖµ£¬´úÈëenvpÊý×éÖУ¬×÷ΪÇéÐαäÁ¿£¬×ª´ï¸ølaunchCgiº¯Êý£¬Ö´ÐÐcgi³ÌÐò¡£
launchCgiº¯ÊýÖÐͨ¹ýexecve½«Ö®Ç°´«ÈëµÄÇéÐαäÁ¿×÷Ϊcgi³ÌÐòµÄÇéÐαäÁ¿Ö´ÐС£

¶øÎÒÃÇÖªµÀÔÚlinuxÖÐÊÇ¿ÉÒÔͨ¹ýLD_PRELOADÇéÐαäÁ¿À´hook£¬Ð®Öƺ¯ÊýµÄÖ´ÐÐÁ÷¡£
ÔÚº¯ÊýÖпÉÒÔ¿´µ½Ö»¶ÔREMOTE_HOSTºÍHTTP_AUTHORIZATION¾ÙÐÐÁ˹ýÂË£¬¶ÔÆäËû±äÁ¿²¢Ã»ÓйýÂË¡£
ͨ¹ý“envp[n++] = sfmt("%s=%s" s->name.value.string s->content.value.string);”Ö±½Ó°ÑHTTPÇëÇóÖеIJÎÊý¸³Öµ¸øÁËenvpÊý×飬´ËºóÃæenvpÊý×éÖ±½Ó×÷ΪÁËcgi³ÌÐòÖ´ÐÐʱµÄÇéÐαäÁ¿¡£

Òò´Ë£¬Í¨¹ý¶ñÒâµÄHTTPÇëÇó¿ÉÒÔÈÃgoaheadµÄcgi³ÌÐò¼ÓÔØÖ´ÐÐÖ¸¶¨µÄso¿âÎļþ¡£
Îó²îÐÞ¸´
´Ó²¹¶¡ÐÅÏ¢¿´£¬¹Ù·½ÔÚ2017Äê6Ô¾ÍÐÞ¸´Á˸ÃÎÊÌâ¡£

ÔöÌíÁËHTTP²ÎÊýµÄ¹ýÂË£¬±ÜÃâ²»·¨²ÎÊý´«ÈëÇéÐαäÁ¿ÖС£

¿ÉÒÔ¿´µ½³ýÁË“LD_”¿ªÍ·µÄ±äÁ¿£¬»¹ÔöÌíÁ˶ԓCDPATH”¡¢“IFS”µÈ×Ö·ûµÄ¹ýÂË¡£
Éù Ã÷
±¾Ç徲ͨ¸æ½öÓÃÀ´ÐÎò¿ÉÄܱ£´æµÄÇå¾²ÎÊÌ⣬¾ÅÓÎÀÏ¸ç¿Æ¼¼²»Îª´ËÇ徲ͨ¸æÌṩÈκΰü¹Ü»òÔÊÐí¡£ÓÉÓÚÈö²¥¡¢Ê¹ÓôËÇ徲ͨ¸æËùÌṩµÄÐÅÏ¢¶øÔì³ÉµÄÈκÎÖ±½Ó»òÕß¼ä½ÓµÄЧ¹û¼°Ëðʧ£¬¾ùÓÉʹÓÃÕß×Ô¼ºÈÏÕæ£¬¾ÅÓÎÀÏ¸ç¿Æ¼¼ÒÔ¼°Ç徲ͨ¸æ×÷Õß²»Îª´Ë¼ç¸ºÈκÎÔðÈΡ£¾ÅÓÎÀÏ¸ç¿Æ¼¼ÓµÓжԴËÇ徲ͨ¸æµÄÐÞ¸ÄÏ¢ÕùÊÍȨ¡£ÈçÓû×ªÔØ»òÈö²¥´ËÇ徲ͨ¸æ£¬±ØÐè°ü¹Ü´ËÇ徲ͨ¸æµÄÍêÕûÐÔ£¬°üÀ¨°æÈ¨ÉùÃ÷µÈËùÓÐÄÚÈÝ¡£Î´¾¾ÅÓÎÀÏ¸ç¿Æ¼¼ÔÊÐí£¬²»µÃí§ÒâÐ޸ĻòÕßÔö¼õ´ËÇ徲ͨ¸æÄÚÈÝ£¬²»µÃÒÔÈκη½·¨½«ÆäÓÃÓÚÉÌҵĿµÄ¡£

¾ÅÓÎÀϸçÔÆ





