¾ÅÓÎÀϸç

¾ÅÓÎÀϸç

¾ÅÓÎÀÏ¸ç¿Æ¼¼

  • »ù´¡ÉèÊ©Çå¾²

    »ù´¡ÉèÊ©Çå¾²
  • Êý¾ÝÇå¾²

    Êý¾ÝÇå¾²
  • ÔÆÅÌËãÇå¾²

    ÔÆÅÌËãÇå¾²
  • AIÇå¾²

    AIÇå¾²
  • ¹¤Òµ»¥ÁªÍøÇå¾²

    ¹¤Òµ»¥ÁªÍøÇå¾²
  • ÎïÁªÍøÇå¾²

    ÎïÁªÍøÇå¾²
  • ÐÅÏ¢ÊÖÒÕÓ¦ÓÃÁ¢Òì

    ÐÅÏ¢ÊÖÒÕÓ¦ÓÃÁ¢Òì
  • ËùÓвúÆ·

    ËùÓвúÆ·
  • ËùÓнâ¾ö¼Æ»®

    ËùÓнâ¾ö¼Æ»®

»ù´¡ÉèÊ©Çå¾²


  • Õþ¸®

    Õþ¸®
  • ÔËÓªÉÌ

    ÔËÓªÉÌ
  • ½ðÈÚ

    ½ðÈÚ
  • ÄÜÔ´

    ÄÜÔ´
  • ½»Í¨

    ½»Í¨
  • ÆóÒµ

    ÆóÒµ
  • ¿Æ½ÌÎÄÎÀ

    ¿Æ½ÌÎÄÎÀ

  • ¾ÅÓÎÀϸçÔÆ ¾ÅÓÎÀϸçÔÆ
  • ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI
  • TechWorldÊÖÒÕ¼ÎÄ껪 TechWorldÊÖÒÕ¼ÎÄ껪
  • ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á
  • ÊÖÒÕ²©¿Í ÊÖÒÕ²©¿Í
  • Àֳɰ¸Àý Àֳɰ¸Àý

ÏàÖúͬ°éÉó²é¸ü¶à >

ÏàÖúͬ°é¶¯Ì¬

³ÉΪÏàÖúͬ°é

  • ¾ÅÓÎÀϸçÔÆ ¾ÅÓÎÀϸçÔÆ
  • ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI
  • TechWorldÊÖÒÕ¼ÎÄ껪 TechWorldÊÖÒÕ¼ÎÄ껪
  • ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á
  • ÊÖÒÕ²©¿Í ÊÖÒÕ²©¿Í
  • Àֳɰ¸Àý Àֳɰ¸Àý

ÊÖÒÕÖ§³ÖÉó²é¸ü¶à >

²úÆ·Ö§³Ö

  • ¾ÅÓÎÀϸçÔÆ ¾ÅÓÎÀϸçÔÆ
  • ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI ¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI
  • TechWorldÊÖÒÕ¼ÎÄ껪 TechWorldÊÖÒÕ¼ÎÄ껪
  • ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á ±±¾©¾ÅÓÎÀÏ¸ç¹«Òæ»ù½ð»á
  • ÊÖÒÕ²©¿Í ÊÖÒÕ²©¿Í
  • Àֳɰ¸Àý Àֳɰ¸Àý

·µ»ØÁбí

ÆÊÎö·À»¤:Struts2 Ô¶³Ì´úÂëÖ´ÐÐÎó²î£¨S2-045£©

2017-03-08

Ðû²¼Õߣº¾ÅÓÎÀÏ¸ç¿Æ¼¼

Îó²îÆÊÎö

Apache Struts2µÄJakarta Multipart parser²å¼þ±£´æÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¬Îó²î±àºÅΪCNNVD-201703-152¡£¹¥»÷Õß¿ÉÒÔÔÚʹÓøòå¼þÉÏ´«Îļþʱ£¬ÐÞ¸ÄHTTPÇëÇóÍ·ÖеÄContent-TypeÖµÀ´´¥·¢¸ÃÎó²î£¬µ¼ÖÂÔ¶³ÌÖ´ÐдúÂë¡£

Ïà¹ØÁ´½ÓÈçÏ£º

https://cwiki.apache.org/confluence/display/WW/S2-045?from=timeline&isappinstalled=0


Ó°ÏìµÄ°æ±¾

  • Struts 2.3.5 - Struts 2.3.31
  • Struts 2.5 - Struts 2.5.10


²»ÊÜÓ°ÏìµÄ°æ±¾

  • Struts 2.3.32
  • Struts 2.5.10.1


¾ÅÓÎÀϸçÍþвÇ鱨ÖÐÐÄNTI¹ØÓÚStruts2Îó²î¹æÄ£ÂþÑÜͼ

  1. È«ÇòÂþÑÜͼ

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

  1. º£ÄÚÂþÑÜͼ

  1. È«ÇòÅÅÐÐ

  1. º£ÄÚÅÅÐÐ


Îó²îÆÊÎö

Apache Struts2±£´æÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¬¹¥»÷Õß¿ÉÒÔ½«¶ñÒâ´úÂëͨ¹ýhttp±¨ÎÄÍ·²¿µÄContent-Type×Ö¶Îת´ï¸ø±£´æÎó²îµÄ·þÎñÆ÷£¬µ¼ÖÂí§Òâ´úÂëÖ´ÐÐÎó²î¡£


  1. Îó²îPOC

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾


  1. Îó²îÑéÖ¤


  1. ϸ½ÚÆÊÎö

It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn't valid an exception is thrown which is then used to display an error message to a user.

´Ó¹Ù·½µÄÎó²îÐÎòÎÒÃÇ¿ÉÒÔÖªµÀ£¬Õâ¸öÎó²îÊÇÓÉÓÚStrus2¶Ô¹ýʧÐÂÎÅ´¦Öóͷ£·ºÆðÁËÎÊÌ⣬ͨ¹ýContent-TypeÕâ¸öheaderÍ·£¬×¢ÈëOGNLÓïÑÔ£¬½ø¶øÖ´ÐÐÏÂÁî¡£

±¾ÎĵįÊÎöÊÇ»ùÓÚStruts 2.3.24°æ±¾¡£Ê×ÏÈ¿´Ò»ÏÂPOC£¬¹¥»÷Ö¸Áîͨ¹ý"Content-Type"ת´ï¸ø±£´æÎó²îµÄ·þÎñÆ÷£¬ÈçÏÂͼËùʾ£º

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

ÔÚ´«ÈëµÄ²ÎÊýÖУ¬Í¨¹ý#nike='multipart/form-data'Óï¾äʹµÃºǫ́ÅжÏÓï¾äcontent_type.contains("multipart/form-data")ÅжÏЧ¹ûΪtrue£¬ÒԱ㹥»÷´úÂëµÃÒÔ´«È롣ͬʱ½«¹¥»÷´úÂë'cat /etc/passwd'¸³Öµ¸ø#cmd²ÎÊý¡£½ÓÏÂÀ´Í¨¹ý(#cmds=(#iswin?{'cmd.exe''/c'#cmd}:{'/bin/bash''-c'#cmd})À´ÅжÏÄ¿µÄÖ÷»úµÄ²Ù×÷ϵͳÀàÐÍ£¬²¢Ñ¡ÔñÐԵľÙÐÐÖ¸Áֵ£¬×îÖÕ£¬Í¨¹ýÈçÏÂͼ´úÂ룬½«¹¥»÷Ö¸ÁîÖ´ÐУº

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

ÏÂÃæÏÈ¿´Ò»ÏÂÏÂÁîÖ´ÐÐ×¢Èëµã£º

ÔÚJakartaMultiPartRequest.java µÄbuildErrorMessageº¯ÊýÖУ¬Õâ¸öº¯ÊýÀïµÄlocalizedTextUtil.findText»áÖ´ÐÐOGNL±í´ïʽ£¬´Ó¶øµ¼ÖÂÏÂÁîÖ´ÐУ¬ÎÒÃÇÏÈ¿´ÏÂfindtextµÄ½ç˵£º

https://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/util/LocalizedTextUtil.html

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

½ÓÏÂÀ´Ëü±»JakartaMultiPartRequest.javaÖеÄparseŲÓá£Struts2µÄÈë¿ÚFilterDispatcher.java½ÓÏÂÀ´Ö´ÐÐdoFilterº¯Êý£¬Ö´ÐÐÍêһЩ¹ýÂ˺ó½øÈëprepareDispatcherAndWrapRequestº¯Êý£¬ÔÙÖ´ÐÐdispatcher.wrapRequest½øÈërequest´¦Öóͷ£·ÖÖ§£¬ÏÂͼ¾ÍÊÇprepareDispatcherAndWrapRequestµÄʵÏÖ£¬¸Ãº¯Êý¶ÔÒªÁì¾ÙÐÐÁË´¦Öóͷ££º

½Ó×ÅÎÒÃÇ¿´dispatcher.wrapRequest£¬µ±Content-TypeΪmultipart/form-dataµÄʱ¼ä»áŲÓÃMultiPartRequestWrapperÕâ¸öÊÇÒ»¸ö¶ÔÖݪֲî±ðÉÏ´«·½·¨µÄ·â×°£¬ÆäÖоͰüÀ¨JakartaµÈ´«Êä·½·¨£º

MultiPartRequestWrapper.java·â×°ÁËparseº¯Êý£º

ÎÒÃÇÀ´¿´ÏÂparseº¯Êý£¬ÈçÏÂͼËùʾ£º

ÔÚparseº¯ÊýÖУ¬µ±Content-TypeÃûÌò»±»Ê¶±ðʱ£¬·ºÆðÒì³££¬µ¼ÖÂOGNL±í´ïʽ±»Ö´ÐУ¬Õâ¾ÍÊÇÎÒÃÇÆÊÎöµÄ×î³õµÄ×¢Èëµã¡£


²¹¶¡ÆÊÎö

  • 2.5.10.1°æ±¾µÄÐÞ¸´¼Æ»®£º

https://github.com/apache/struts/commit/b06dd50af2a3319dd896bf5c2f4972d2b772cf2b

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

  • 2.3.32°æ±¾µÄÐÞ¸´¼Æ»®£º

https://github.com/apache/struts/commit/352306493971e7d5a756d61780d57a76eb1f519a

¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾


¹Ù·½½â¾ö¼Æ»®

  • ¹Ù·½ÒѾ­Ðû²¼Á˰汾¸üУ¬½¨ÒéÓû§Éý¼¶µ½²»ÊÜÓ°ÏìµÄ×îа汾(Struts2 2.3.32»òStruts 2.5.10.1)£¬ÏÂÔØÁ´½ÓÈçÏÂËùʾ£º

Struts 2.3.32:

https://github.com/apache/struts/releases/tag/STRUTS_2_3_32

Struts 2.5.10.1:

https://github.com/apache/struts/releases/tag/STRUTS_2_5_10_1


ÔÝʱÐÞ¸´¼Æ»®

ÔÚÓû§Î´±ã¾ÙÐÐÉý¼¶µÄÇéÐÎÏ£¬×÷ΪÔÝʱµÄ½â¾ö¼Æ»®£¬Óû§¿ÉÒÔ¾ÙÐÐÒÔϲÙ×÷À´¹æ±ÜΣº¦£º

  • ÐÞ¸ÄWeb-INF/classesĿ¼ÏµÄstruts.xmlÖеÄÉèÖÃ

ÔÚWeb-INF/classesĿ¼ÏµÄstruts.xml ÖеÄstruts ±êÇ©ÏÂÌí¼Ó£»

ÔÚWEB-INF/classes/ Ŀ¼ÏÂÌí¼Ó global.properties£¬ÎļþÄÚÈÝÈçÏÂ

struts.messages.upload.error.InvalidContentTypeException=1

  • ÉèÖùýÂËÆ÷¹ýÂËContent-TypeµÄÄÚÈÝ

ÔÚwebÓ¦ÓõÄweb.xmlÖÐÉèÖùýÂËÆ÷£¬ÔÚ¹ýÂËÆ÷ÖжÔContent-TypeÄÚÈݵÄÕýµ±ÐÔ¾ÙÐмì²â£º

public void doFilter(ServletRequest request ServletResponse response FilterChain chain) throws java.io.IOException ServletException {

String contentType = request.getContentType().toLowerCase(Locale.ENGLISH);

if (contentType != null && contentType.contains("multipart/form-data") && !contentType.startsWith("multipart/form-data"))

{ response.getWriter().write("Reject!"); }

else { chain.doFilter(request response); }

}


ÊÖÒÕ·À»¤¼Æ»®

  • ÈôÊÇÄú²»ÇåÎúÊÇ·ñÊÜ´ËÎó²îÓ°Ï죺

¹«Íø×ʲú ¿ÉʹÓþÅÓÎÀϸçÔÆ ½ôÆÈÎó²îÔÚÏß¼ì²â£¬¼ì²âµØµãÈçÏ£º

http://t.cn/RipBq1c

ÄÚÍø×ʲú ¿ÉÒÔʹÓþÅÓÎÀÏ¸ç¿Æ¼¼µÄÔ¶³ÌÇå¾²ÆÀ¹Àϵͳ(RSAS V5¡¢V6)»ò WebÓ¦ÓÃÎó²îɨÃèϵͳ£¨WVSS£© ¾ÙÐмì²â¡£

          Ô¶³ÌÇå¾²ÆÀ¹Àϵͳ£¨RSAS V5£©

http://update.nsfocus.com/update/listAurora/v/5

          Ô¶³ÌÇå¾²ÆÀ¹Àϵͳ£¨RSAS V6£©

http://update.nsfocus.com/update/listRsasDetail/v/vulweb

          WebÓ¦ÓÃÎó²îɨÃèϵͳ£¨WVSS£©

http://update.nsfocus.com/update/listWvss

        Í¨¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐмì²â£¡


  • ʹÓþÅÓÎÀÏ¸ç¿Æ¼¼·À»¤Àà²úÆ·£¨NIPS/NIDS/NF/WAF£©¾ÙÐзÀ»¤£º

          ÈëÇÖ·À»¤ÏµÍ³£¨NIPS£©

http://update.nsfocus.com/update/listIps

          ÈëÇÖ¼ì²âϵͳ£¨NIDS£©

http://update.nsfocus.com/update/listIds

          ÏÂÒ»´ú·À»ðǽϵͳ£¨NF£©

http://update.nsfocus.com/update/listNf

          WebÓ¦Ó÷À»¤ÏµÍ³£¨WAF£©

http://update.nsfocus.com/update/wafIndex

          ͨ¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐзÀ»¤£¡

¾ÅÓÎÀÏ¸ç¿Æ¼¼ÉùÃ÷

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


?

ÄúµÄÁªÏµ·½·¨

*ÐÕÃû
*µ¥Î»Ãû³Æ
*ÁªÏµ·½·¨
*ÑéÖ¤Âë ¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾
Ìá½»µ½ÓÊÏä

¹ºÖÃÈÈÏß

  • ¹ºÖÃ×Éѯ:

    400-818-6868-1

Ìá½»ÏîÄ¿ÐèÇó

½Ó´ý¼ÓÈë¾ÅÓÎÀÏ¸ç¿Æ¼¼£¬³ÉΪÎÒÃǵÄÏàÖúͬ°é£¡
  • *ÇëÐÎòÄúµÄÐèÇó
  • *×îÖÕ¿Í»§Ãû³Æ
  • *ÏîÄ¿Ãû³Æ
  • Äú¸ÐÐËȤµÄ²úÆ·
  • ÏîĿԤËã
ÄúµÄÁªÏµ·½·¨
  • *ÐÕÃû
  • *ÁªÏµµç»°
  • *ÓÊÏä
  • *Ö°Îñ
  • *¹«Ë¾
  • *¶¼»á
  • *ÐÐÒµ
  • *ÑéÖ¤Âë ¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾
  • Ìá½»µ½ÓÊÏä
¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾
¾ÅÓÎÀϸ硤(Öйú)¾ãÀÖ²¿¹Ù·½ÍøÕ¾

·þÎñÖ§³Ö

ÖÇÄܿͷþ
ÖÇÄܿͷþ
¹ºÖÃ/ÊÛºóÊÖÒÕÎÊÌâ
Ã˹ܼÒ-ÊÛºó·þÎñϵͳ
Ã˹ܼÒ-ÊÛºó·þÎñϵͳ
ÔÚÏßÌáµ¥|ÖÇÄÜÎÊ´ð|֪ʶ¿â
Ö§³ÖÈÈÏß
Ö§³ÖÈÈÏß
400-818-6868
¾ÅÓÎÀÏ¸ç¿Æ¼¼ÉçÇø
¾ÅÓÎÀÏ¸ç¿Æ¼¼ÉçÇø
×ÊÁÏÏÂÔØ|ÔÚÏßÎÊ´ð|ÊÖÒÕ½»Á÷
΢²©
΢²©

΢²©

΢ÐÅ
΢ÐÅ

΢ÐÅ

BÕ¾
BÕ¾

BÕ¾

¶¶Òô
¶¶Òô

¶¶Òô

ÊÓÆµºÅ
ÊÓÆµºÅ

ÊÓÆµºÅ

·þÎñÈÈÏß

400-818-6868

·þÎñʱ¼ä

7*24Сʱ

? 2026 NSFOCUS ¾ÅÓÎÀÏ¸ç¿Æ¼¼ www.nsfocus.com All Rights Reserved . ¾©¹«Íø°²±¸ 11010802021605ºÅ ¾©ICP±¸14004349ºÅ ¾©ICPÖ¤110355ºÅ

ÍøÕ¾µØÍ¼