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ÊôÐÔ £¬ÈçÏÂͼËùʾ£º


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


ͨ¹ý¶ÈÎö¸´ÏÖ·¢ÏÖ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õè¾¶ ¡£ÈçÏÂͼËùʾ£º


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


2.2 JspÎļþÔ̺¬·ì϶


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾


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


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"/>