Apache TomcatÎļþÔ̺¬·ì϶·ÖÎö

°ä²¼¹¦·ò 2020-02-21

Ò»¡¢·ì϶¸ÅÊö


2020Äê2ÔÂ20ÈÕ£¬¹ú¶ÈÐÅÏ¢°²È«·ì϶¹²ÏíÆ½Ì¨£¨CNVD£©°ä²¼¹ØÓÚApache TomcatµÄ°²È«²¼¸æ£¬Apache TomcatÎļþÔ̺¬·ì϶£¨CNVD-2020-10487£¬¶ÔÓ¦CVE-2020-1938£© ¡£Tomcat AJPºÍ̸ÓÉÓÚ´æÔÚʵÏÖȱµãµ¼ÖÂÓйزÎÊý¿É¿Ø£¬¹¥»÷ÕßÀûÓø÷ì϶¿Éͨ¹ý»ú¹ØÌض¨²ÎÊý£¬¶ÁÈ¡·þÎñÆ÷webappϵÄËÁÒâÎļþ ¡£Èô·þÎñÆ÷¶Ëͬʱ´æÔÚÎļþÉÏ´«Ö°ÄÜ£¬¹¥»÷Õ߿ɽøÒ»²½ÊµÏÖÔ¶³Ì´úÂëµÄÖ´ÐÐ ¡£


¶þ¡¢·ì϶·ÖÎö


ͨ¹ý¶ÔApache TomcatÔ´Âë½øÐзÖÎö£¬·¢ÏÖTomcatÔÚ´¦ÖÃajpºÍ̸ʱ´æÔÚ·ì϶£¬¿Éͨ¹ýŲÓÃrequest.setAttributeΪTomcatÉèÖÃËÁÒârequestÊôÐÔ£¬ÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


ͨ¹ý¶ÈÎö¸´ÏÖ·¢ÏÖTomcat ajpºÍ̸´æÔÚwebĿ¼ÏÂËÁÒâÎļþ¶ÁÈ¡·ì϶ÒÔ¼°JSPÎļþÔ̺¬·ì϶ ¡£µ±ajp URIÉèÖÃΪ·Çjspõ辶ʱ£¬Tomcat»áŲÓÃDefaultServlet´¦Ö㬴Ëʱ»áµ¼ÖÂwebĿ¼ËÁÒâÎļþ¶ÁÈ¡·ì϶ ¡£µ±ajp URIÉèÖÃΪjspõ辶ʱ£¬Tomcat»áŲÓÃJspServlet´¦Ö㬴Ëʱ»áµ¼ÖÂJSPÎļþÔ̺¬·ì϶ ¡£


2.1 WebĿ¼ËÁÒâÎļþ¶ÁÈ¡·ì϶


µ±ajp URIÉèÖÃΪ·Çjspõ辶ʱ£¬Tomcat»áŲÓÃDefaultServlet´¦ÖÃ,ÎÒÃDZØÒª½ÚÔìÈçÏÂÁ½¸öÊôÐÔ£º

javax.servlet.include.path_info

javax.servlet.include.servlet_path


ÆäÖУ¬javax.servlet.include.servlet_pathÊôÐÔΪµ±Ç°ÏîÄ¿õè¾¶¡¢javax.servlet.include.path_infoÊôÐÔΪĿ¼õè¾¶ ¡£¶øºó£¬Í¨¹ýDefaultServletÀàµÄgetRelativePath²½Öè½øÐÐÆ´½Ó»ñµÃpathõè¾¶ ¡£ÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


×îºó£¬»á½«path´øÈëµ½getResource(path)²½ÖèÖÐÔì³ÉËÁÒâÎļþ¶ÁÈ¡ ¡£ÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


ÀûÓø÷ì϶³É¹¦¶ÁÈ¡µ½/WEB-INF/Ŀ¼ÏÂweb.xmlÎļþ ¡£


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


2.2 JspÎļþÔ̺¬·ì϶


µ±ajp URIÉèÖÃΪjspõ辶ʱ£¬Tomcat»áŲÓÃJspServletµÄservice²½Öè´¦Öã¬ÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


ͬÑù»á»ñÈ¡javax.servlet.include.path_info¡¢javax.servlet.include.servlet_pathÕâÁ½¸öÊôÐÔ£¨¾­¹ýÉÏÃæµÄ·ÖÎöÎÒÃÇÒѾ­ÖªÂ·Äܹ»Í¨¹ýajpºÍ̸½ÚÔìÕâÁ½¸öÊôÐÔ£© ¡£½«ÕâÁ½¸öÊôÐÔ¶ÔÓ¦µÄֵƴ½Óµ½jspURi±äÁ¿ÖУ¬×îºó½»¸øserviceJspFile²½Öè´¦Öã¬ÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


Venus.txtÎļþ´úÂëÈçÏÂËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


³É¹¦RCEÁ˾ÖÈçÏÂͼËùʾ£º


28Ȧ-28Ȧ¹Ù·½ÍøÕ¾-ÏàÐÅÆ·ÅƵÄÁ¦Á¿


Èý¡¢Ó°Ïì°æ±¾


Tomcat 6

Tomcat 7

Tomcat 8

Tomcat 9


ËÄ¡¢¶ã±Ü¹æ»®


½«Tomcatµ±¼´Éý¼¶µ½9.0.31¡¢8.5.51»ò7.0.100°æ±¾½øÐн¨¸´ ¡£


½ûÓÃAJPºÍ̸ ¡£

±à×ë /conf/server.xml£¬ÕÒµ½ÈçÏÂÐУº

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />

½«´ËÐÐ×¢½âµô£¨Ò²¿Éɾµô¸ÃÐУ©£º

<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->


ÅäÖÃsecretÀ´ÉèÖÃAJPºÍ̸µÄÈÏ֤ƾ֤ ¡£


ÀýÈ磨°ÑÎȱØÐ뽫YOUR_TOMCAT_AJP_SECRET¸ü¸ÄΪһ¸ö°²È«ÐԸߡ¢ÎÞ·¨±»µÈÏв½âµÄÖµ£©£º

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>