Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
STRUTS2µÄgetClassLoader©¶´ÀûÓÃ
 
»ðÁú¹ûÈí¼þ ·¢²¼ÓÚ£º2014-09-18
  2306  次浏览      27

0x00 ÕªÒª

ÎÒÔÚ¡¶¹¥»÷JAVA WEB¡·£¬ÎÄÖÐÌá¶à¹ØÓÚ¡°classLoaderµ¼ÖÂÌØ¶¨»·¾³ÏµÄDOS©¶´¡±£¬µ±Ê±²¢Ã»Óиü¼ÓÉîÈëµÄ˵Ã÷£¬Õ⼸Ììstruts¹Ù·½ÐÞ²¹ÁËÕâ¸ö©¶´£¬±¾ÎÄÊǶÔÕâ¸ö©¶´µÄÉîÈëÑо¿¡£

0x01 ÕýÎÄ

ÕâÒ»ÇУ¬µÃ´ÓÎÒÃÇ¿ØÖÆÁËclassLoader˵Æð£¬Ôø¾­Ð´¹ýһƪÎÄÕ£¬Ìáµ½ÁËÒ»¸öССµÄ¼¼Êõϸ½Ú£¬·Ç³£²»ÆðÑÛµÄÒ»¸ö¼¦Àß¡£ ÒýÓá¶Spring framework£¨cve-2010-1622£©Â©¶´ÀûÓÃÖ¸ÄÏ¡·£º

Struts2ÆäʵҲ±¾¸ÃÊǸöµ¼ÖÂÔ¶³Ì´úÂëÖ´ÐЩ¶´²Å¶Ô£¬Ö»ÊÇÒòΪËüµÄ×Ö¶ÎÓ³ÉäÎÊÌ⣬ֻӳÉä»ù´¡ÀàÐÍ£¬Ä¬Èϲ»¸ºÔðÓ³ÉäÆäËûÀàÐÍ£¬ËùÒÔµ±¹¥»÷ÕßÖ±½ÓÌá½»URLs[0]=xxxʱ£¬Ö±½Ó±¬×Ö¶ÎÀàÐÍת»»´íÎ󣬽á¹û²Å½ÄÐÒÌÓ¹ýÒ»½Ù°ÕÁË¡£

tomcat8.0³öÀ´ºó£¬Õâ¸öÎÊÌⱬ·¢ÁË£¬ÕâÊÇÒ»¸ö¼¦Àß©¶´µÄÄæÏ®¡£

ÔÚstruts2ÈκÎÒ»¸öactionÔËÐÐ֮ǰ£¬Ò»µ©½ÓÊܵ½Óû§Ìá½»²ÎÊýxx=zzzzzʱ£¬¾ÍÓÉOgnl¸ºÔðµ÷ÓöÔÓ¦µÄµ±Ç°actionµÄsetXxx·½·¨£¬ÖÁÓÚset·½·¨µ½µ×ÊǸÉʲôµÄ£¬Æäʵ²»ÖØÒª£¬ÀïÃæµÄÂß¼­Ò²²»ÖØÒª£¬ÎÒÃÇÖ»¹Ø×¢Õâ¸ö·½·¨µ÷ÓÃÁË£¬²ÎÊý´«µÝÁË¡£ÕâÖÖ¶ÔÊôÐԵĸı䣬ÓÐʱºòÊÇ¿ÉÒԺܴó³Ì¶ÈµÄÓ°ÏìºóÐø¸´ÔÓÂß¼­¡£

ÆÕ¼°Ò»µã»ù´¡

ObjectÊÇjavaµÄ»ù´¡À࣬ËùÓеÄclassÉú³ÉµÄ¶ÔÏ󣬶¼»á¼Ì³ÐObjectµÄËùÓÐÊôÐԺͷ½·¨£¬Òò´Ëµ±Ç°actionÎÞÂÛÊÇʲô´úÂ룬±ØÐëÓÐObject×Ô´øµÄgetClass·½·¨£¬Õâ¸ö·½·¨»á·µ»ØÒ»¸öClass¶ÔÏó£¬Class¶ÔÏóÓÖÒ»¶¨»áÓÐgetClassLoader·½·¨£¬×îÖÕÔÚÿ¸öaction¶¼¿ÉÒÔ

getClass().getClassLoader()

ÎÒÑо¿Õâ¸öÎÊÌ⣬ÔÚ¼¸ÄêǰÁË£¬Õâ¸ö¶«Î÷Àí½âÆðÀ´²»ÈÝÒ×£¬ÓÈÆäÊǸ÷¸öwebÈÝÆ÷²»Ò»Ö£¬¸ÕÇɵ±Ê±Óиö°¢Àï°Í°ÍÄÚ²¿¡¶tomcatµÈÈÝÆ÷µÄclassLoader¼ÓÔØÔ­Àí¡·Åàѵ£¬ÊÕ»ñ·Ëdz¡£±¾ÎÄÆª·ùÓÐÏÞ£¬¼òµ¥µÄ½²Ò»Ï¡£

ÔÚJREÆô¶¯ÖУ¬Ã¿¸öClass¶¼»áÓÐ×Ô¼ºµÄClassLoader¡£webÈÝÆ÷£¬ÎªÁË·½±ãµÄ¹ÜÀíÆô¶¯¹ý³Ì£¬Í¨³£¶¼ÓÐʵÏÖ×Ô¶¨ÒåµÄClassLoader¡£¡¶Spring framework¡·µÄ©¶´µÄÀûÓó¡¾°ÕæµÄ·Ç³£ÐÒÔË£¬ÀûÓÃÁËwebÈÝÆ÷µÄÌØÐÔgetURLs·½·¨£¬ËùÓÐÈÝÆ÷µÄservletµÄClassLoader¶¼»áͨ¹ý¼Ì³Ð¸¸ÀàUrlClassLoaderµÃµ½getURLsÕâ¸ö·½·¨£¬ËùÒÔÕâ¸ö©¶´¿ÉÒÔ²»ÊÜÈÝÆ÷Ó°Ïì¡£ÊÂʵÉÏ£¬Ã¿¸öÈÝÆ÷µÄClassLoader¶¼ÊÇ×Ô¼ºÊµÏֵ쬻·¾³±ØÈ»»áÓÐËù²»Í¬£¬ÄÇ´Îstruts2½ÄÐÒÌÓ¹ýÒ»½Ù£¬ËùÒÔÎÒµÄÒ»¸ö¹Ø×¢µã£¬Ò»¶¼·ÅÔÚ¼¸´ówebÈÝÆ÷µÄClassLoader´úÂë±ä»¯ÉÏ£¬ÄÄÌì¿´µ½tomcat8¾ÓÈ»°Ñresources·Å½øClassLoaderÉÏ£¬¶øServletContext¸ÕÇɹÒÔÚresourcesÉÏ£¬¶Ùʱ֪µÀÈâÏ·À´ÁË¡£

ÉÏ´«webshellµÄ¿ÉÄÜÐÔÑо¿

¶à´ÎµÄÔ¶³Ì´úÂëÖ´ÐЩ¶´Ï´Àñ£¬ÎÒÒ»Ö±ÔÚÄÔº£ÀïÄ£Äâ¡°ServletContext±»¿ØÖÆÁË£¬Õâ´ÎÄܸÉʲô¡±£¬¾¿¾¹ÓÐÄÄЩ·Ïߣ¬¿ÉÒÔͨÍù´úÂëÖ´ÐеÄÁìÓò¡£

±ÈÈ磺Struts2»áÈ¥servletContextÀïÈ¡µ½Ò»¸öÖµ£¬È»ºó°ÑËü×÷ΪOgnlÖ´Ðеô¡£Õâ¸öÌ«¼òµ¥ÁË£¬ÎÒ×Ô¼º¶¼²»ÐÅ¡£

OgnlµÄContextÊ÷Ðνṹ£º

servletContext±»×ª»»³ÉMap£¬±ä³ÉÁËͼÖеÄapplication×ÓÏÕâ¸öλַºÜÞÏÞΣ¬Èç¹ûÊÇÉÏÒ»²ãNode£¬´ÓÉϵ½ÏÂÕÒµ½value Stack£¬È·ÊµÓÐʵÏÖÕâ¸ö˼·µÄ¿ÉÄÜ£¬µ«ÏÖÔÚ¿´À´£¬ÕâÌõ·¶ÏÁË£¬Ëü²»Ö§³ÖÕÒµ½¸¸½Úµã¡£¾­¹ý¶à´ÎÕÒѰºó£¬È·ÈÏOgnl³ö¾Ö£¬Ö»ÄÜ´ÓwebÈÝÆ÷±¾ÉíÈëÊÖ¡£

ÔËÐÐÔÚTomcat8ϵÄstruts£¬ÔÚËæ±ãÄĸöaction´úÂëÖУ¬²åÈëÕâ¶Î£¬Ï¶ϵ㣬

this.getClass().getClassLoader();

ÈκÎÒ»¸öActionµÄclassLoader¶¼ÊÇorg.apache.catalina.loader.WebappClassLoader£¬ÕâÊÇ©¶´µÄÔ´Í·¡£

ÎÒµÄ˼·£¬ÊǸøcontext¸³Óè³õʼ»¯²ÎÊýreadOnly=false¡£ÒòΪÔÚtomcatÉÏ£¬ËùÓеÄÇëÇ󣬶¼»áĬÈÏÓÉdefaultServletÉÏ´¦Àí£¬»òÕßÓÉjspServet´¦Àí¡£Ö»ÒªÔÚcontext³õʼ»¯Ê±£¬readOnly=false£¬½ÓÏÂÀ´defaultServlet¾Í»áÕæµÄ´¦ÀíPUTÇëÇóDELETEÇëÇóµÈµÈ´óÍþÁ¦ÇëÇó£¬ÓÚÊÇÎÒÃÇ¿ÉÒÔÖ±½ÓPUTÎļþÉÏÀ´¡£

Õâ¸ö˼·µÄǰÌᣬÊÇdefaultservletÔÙ±»³õʼ»¯Ò»´Î¡£ÏÖʵºÜ²Ð¿á£¬Õâ¸ö˼·×îÖÕûÓеõ½Ö´ÐУ¬Ô­ÒòÊÇservletÖ»»á³õʼ»¯Ò»´Î£¬¶øreadOnlyÊôÐÔÖ»ÓÐÔÚservlet³õʼ»¯Ê±£¬²Å»áÕæµÄ¸øservetµÄreadOnlyÊôÐÔ¸³Öµ¡£Õâ´ÎÍ»ÆÆ£¬Ðû¸æÊ§°Ü¡£

¼¸¸öÕâ¸ö©¶´µÄµ÷ÊÔС¼¼ÇÉ£º

1. ½ö½ö´ÓdebugÉϲ鿴ognlµÄ¸³ÖµÇé¿ö£¬ÊDz»×¼È·µÄ£¬debugÖ»ÄÜ¿´µ½Õâ¸öÀඨÒåºÃµÄ±äÁ¿¡£

Èç¹ûÓÐÒ»¸ö´úÂëÊÇÕâÑùµÄ£º

public void setName(String name){¡­}

µ«ÊDz¢Ã»Óж¨Òå¹ýÕâ¸öÊôÐÔ£¬ÕâʱdebugÎÞ·¨¿´µ½Õâ¸ö¶«Î÷£¬µ«ÊÇÆäʵognl¿ÉÒÔÖ±½Óͨ¹ýname=zzzzzµ÷Ó㬲¢ÇÒÄܰÑzzzz´«µÝ¹ýÈ¥¡£

2. »òÕßÖ»ÓÐÒ»¸ö˽ÓÐÊôÐÔ£¬µ«ÊÇûÓÐset·½·¨£¬ÆäʵҲÊÇognl²»Äܸ³ÖµµÄ¡£

Õâ¸ödebug£¬¹Û²ìÕâ¸ö©¶´Ê±£¬½ö½öÊǸö²Î¿¼£¬ÒªÕæÕýÉîÈë½øÈ¥¿´´úÂë²ÅÄܺÍognlµÄÊÓÏß±£³ÖÒ»Ö¡£

3. Ò»¸öfinalµÄ¶ÔÏ󣬻òÕßÖ»ÊÇget·½·¨·µ»ØÒ»¸ö¶ÔÏ󣬿´ÆðÀ´ÏñÊÇÖ»¶ÁµÄ£¬Æäʵ¶ÔÏóµÄÊôÐÔ»¹ÊÇ¿ÉÒԸĵģ¬Õâ¸öÖ»ÊǶÔÏóµÄÒýÓá£

Äã¿ÉÒÔÀí½âΪָÕëÖ¸ÏòµÄµØÖ·²»Äܱ䣬µ«ÊÇÖ¸ÏòµÄÄǸö¶ÔÏóµÄÊôÐÔ£¬ÊÇ¿ÉÒÔÐ޸ĵġ£

¾ÙÀý£º

public User getUser()
{
return this.user;
}
public final User user;

ÕâÁ½´¦´úÂ룬ÆäÊµÕæÕý·µ»Ø¸øOGNLµÄ¶¼ÊÇuser¶ÔÏ󣬶ÔÏóµÄÊôÐÔÖ»Òª»¹ÓÐset·½·¨£¬Ò²¶¼ÊÇ¿ÉÒÔ±»Ð޸ĵġ£ÒÀÈ»¿ÉÒÔͨ¹ý

url?user.name=xxx

¶ÔuserµÄname¸³Öµ¡£

struts2ÔËÐÐÔÚtomcat8.0.1rc5(2013,11ÔÂǰ)µÄÈÎÒâÎļþ¶Áȡ©¶´

ÔÚtomcatµÄ»·¾³Ï£¬classLoader»á¹ÒÔØÒ»¸öresources£¬ÀàÃû½Ð×ö¡°StandardRoot¡±£¬Õâ¸ö¿Ö²ÀµÄ¶«Î÷£¬ºÍtomcatµÄ×ÊÔ´Îļþ¹ÜÀíÓйأ¬debug¿´µ½µÄµÚÒ»¸öÊôÐÔ¾ÍÊǷdz£Î£ÏÕµÄÊôÐÔ¡°allowLinking¡±¡£

Õâ¸öÊÂÇ飬Ҫ´ÓºÜ¾ÃºÜ¾ÃÒÔǰ£¬strutsÐÞ²¹µÄÒ»¸öÈÎÒâÎļþ¶Áȡ©¶´ËµÆð¡£

http://struts.apache.org/release/2.3.x/docs/s2-004.html

ÕâÊÇÒ»¸öĿ¼Áбí+Îļþ¶Áȡ©¶´£¬ÐÞ²¹·½°¸·Ç³£ÒõÏÕ£¬Ã»ÓвÉÓÃÕý¹æµÄÊֶΣ¬ÔÚ¿ò¼Ü²ã½â¾ö©¶´£¬¶øÊÇÀûÓÃÁËwebÈÝÆ÷µÄÒ»¸ö¹«Ô¼ÌØÐÔ£¬jspµÄwebÈÝÆ÷¶¼×ñÊØÒ»¸ö¹æÔò¡£

µ±Ò»¸ö·¾¶½Ð×ö¡°/var/www/tomcat/webapps/demo/struts/../¡±Ê±£¬µ÷ÓÃ

getClassLoader().getResource(Path)

·µ»ØÂ·¾¶Îª£º

/var/www/tomcat/webapps/demo/

»á°Ñ/../È¥µô£¬²¢ÇÒÖ±½Óµ½´ïÄ¿µÄĿ¼¡£

Õâ¸ö½Ð×öwebÈÝÆ÷ÌØÐÔ£¬ÓÉwebÈÝÆ÷˵ÁËË㣬ÄÄÌìwebÈÝÆ÷ÉúÆøÁË£¬Ïë±äÁË£¬strutsûÓл°ÓïȨ¡£ÊÂʵÉÏ£¬ÎÒһֱϲ»¶½²¿ò¼Ü°²È«£¬ÆäÖÐÒ»Ìõ×¼Ôò£¬¾ÍÊÇ¡°¿ò¼Ü²»ÒªÒÀ¿¿webÈÝÆ÷µÄÌØÐÔ×ö·ÀÓù¡±£¬µ±È»£¬½ñÌì²»ÌÖÂÛÕâ¸ö»°Ì⣬ֻÊÇÉÔ΢×ö¸öÆÌµæ¡£

µ±Ê±ÐÞ²¹´úÂëΪ£º

Óû§Ìá½»struts/../ʱ£¬pathEnding="struts/../"¡£

µ«ÊÇ

resourceUrl="/var/www/tomcat/webapps/demo/"

ËùÒÔ²¢²»ÒÔpathEnding½áβ¡£ÕâÖÖâ«ËöµÄ×ö·¨£¬µ±Ê±È·ÊµÓÐЧ¡£

tomcat8Õâ¸ö°æ±¾Í»È»³é·çÁË£¬ÖØÐ´ÁËÕâ¸ö·½·¨£¬»¹ÕæµÄ·µ»ØÁË

/var/www/tomcat/webapps/demo/struts/../

Ðû¸æÂÙÏÝ¡£µ«ÊÇ´úÂëʵ¼ÊÔËÐÐÖУ¬ÓиöÒªÇ󣬾ÍÊÇ¡°StandardRoot.allowLinking¡±±ØÐëÊÇtrue£¨Ä¬ÈϿ϶¨ÊÇfalse£©¡£

»ú»áÀ´ÁË¡£Ê×ÏÈÌá½»£º

http://localhost:8080/demo/t1.action?class.classLoader.resources.allowLinking=true
debug¿ÉÒÔ¿´µ½ÒѾ­ÊÇtrue¡£

È»ºó°´ÕÕÒÔǰµÄ¹¥»÷·½·¨£º

¾Í¿ÉÒÔÇáÒ×¶ÁÈ¡ÈÎÒâÎļþ£¬Äõ½Êý¾Ý¿âÃÜÂëµÈµÈ¡£

ÕâÊÇÁ½¸ö©¶´½áºÏµÄ³É¹û£¬·Ç³£Òź¶µÄÊÇ£¬ÔÚRC5Õâ¸ö°æ±¾Ö®ºó£¬ÓÐÈ˸øtomcatÌá½»ÁËÒ»¸öÐèÇ󣬴ó¸ÅÔÚ2013Äê11ÔÂ×óÓÒ£¬tomcatµÄÒ»¸ö²»ÖØÒªµÄÐèÇóÖУ¨¸ÕºÃÕâ¸öÐèÇóÉæ¼°µ½×ÊÔ´ÎļþÏà¹Ø´úÂ룩£¬tomcatά»¤ÈËÔ±Ò²Ðí²¢Ã»ÓÐÒâʶµ½ÁËÕâÀï´æÔÚ¶ÁÈ¡×ÊÔ´ÎļþµÄÍþв£¬½ö½öÊǰѶÁÈ¡×ÊÔ´¹¦ÄÜÖØÐ³éÏ󹿻®ÁËÒ»´Î£¬½á¹û˳´øÐÞ²¹ÁËÕâ¸ö©¶´£¬ÕâÎÊÌâ²úÉúµÄÀíÓɷdz£Ô©Çü£¬ÐÞ²¹µÄÀíÓɷdz£Ô©Çü£¬×îÓôÃÆµÄÊÇÎÒ£¬»îÉúÉúµÄ£¬0dayûÁË¡£Ô­±¾Õ´Õ´×ÔϲÒÔΪ¿ÉÒÔ´óɱËÄ·½£¬½á¹û´óÉñ´òÁ˸öÅçÌç¡£

×îºó˳´øËµÒ»¾ä£¬Õâ¸ö©¶´Ö»ÔÚwindowsÏÂÕý³££¬linuxÏÂδ֪ԭÒò³é·ç¡£

tomcat8Ϻڵôstruts2Ó¦ÓõÄÊ×Ò³

µ«ÊDz»Òª½ô£¬tomcatÊDz»¿ÉÄܸøstruts½â¾ö¸ù±¾ÎÊÌâµÄ£¬standardroot±©Â¶³öÀ´£¬¿ÉÒÔ˳´øÓ°ÏìºÜ¶à¶«Î÷¡£Õâ¸öËãDDOSô£¿ÆäʵÎÒ¿ÉÒÔ°Ñ¡°Hacked by kxlzx¡±Ð´µ½ÄãµÄÓ¦ÓÃÊ×ҳȥ

³ÉÒò·Ç³£µÄ¡°Õý³£¡±£¬ÒòΪÕâ¸öcontextÊôÐÔ´ú±íÁËtomcatµÄ/conf/context.xmlÎļþµÄÅäÖã¬ÎÒÏÖÔÚ°Ñpath¸øÄã¸ÄÁË£¬ÄÇôstrutsÈ¥´¦Àíresultʱ£¬»áÓ÷¾¶Æ´½Ó¶ÁÈ¡Îļþ£¬ÏÖÔÚĿ¼Ãû±»¸ÄµôÁË£¬×ÔÈ»¾Í¶Á²»µ½ÎļþÁË£¬¿ÉϧÕâÀï²»ÄÜ00½Ø¶Ï£¬·ñÔòÓÖÊÇÒ»¸öÈÎÒâÎļþ¶Áȡ©¶´¡£ ÏÂÃæÊDZ»¸ÉµôµÄÍøÕ¾£¬·ÃÎÊÈκÎÒ»¸öaction£¬¶¼»áÓÐÈçÏÂЧ¹û£º

¿´¿´debugµÄÇé¿ö£º

µ±Ç°action½Ð×öT1£¬»áÕÒµ½T1.jsp£¬µ«ÊÇÏÖÔÚĿ¼ÃûÒѾ­±»ÐÞ¸ÄÁË£¬ËùÒÔ±¨´í¡£

Õâ¸öÎÊÌâ¿ÉÒÔÓ°Ïìtomcat8ËùÓа汾ÏÂÔËÐеÄstruts2£¬¶ÔÁË£¬ÄãÃǵÃ×Ô¼ºÉè¼ÆEXP¹þ£¬²»ÒªÂÒÈë¡£

jetty7¹Ø»úÖ¸Áî

¼ÈÈ»Ìáµ½ÁËwebÈÝÆ÷£¬Ö»ÓÐÑо¿tomcat£¬¿Ï¶¨²»Äܸ²¸Ç´ó¼Ò¹ØÐĵĵط½£¬ÓÚÊÇÎÒÑ¡ÔñÁËÁíÒ»¸ö¿ªÔ´Ãâ·Ñ²¢ÇÒʹÓÃÁ¿´óµÄÇáÁ¿¼¶webÈÝÆ÷£ºjetty¡£

ÏÖÔÚÏÈ¿´¿´jettyÊÇ·ñÓÐÍ»ÆÆµÄ¿Ú×Ó¡£Õâ´Î½²½â·Ïß·´¹ýÀ´£¬ÏÈÕÒ¸öÓ°Ïì¡°²»´ó¡±£¬¸÷λ¡°²»ÊÇ¡±ºÜ¹ØÐĵÄ©¶´¡£

»¹ÊÇÏÈ¿´¿´web½á¹¹,ʹÓÃÀϰ취¶Ïµã£º

this.getClass().getClassLoader();

¿´µ½Ò»¸öclass£º

org.eclipse.jetty.webapp.WebAppClassLoader

jettyµÄ©¶´£¬Ã»ÓÐtomcatÄÇôº¬Ð·Ç³£Ö±½ÓµÄ£¬context¾Í¹ÒÔØÔÚclassLoaderÉÏ¡£

jettyÔÚÔËÐйý³ÌÖУ¬»áȥʵʱ²é¿´ContextHandlerÖеÄshutdownÊôÐÔ£¨webappcontextͨ¹ý¼¸²ã¼Ì³Ð¹ØÏµ£¬¼Ì³ÐÁËÕâ¸öÀ࣬ÆäʵÇ×ÆÝ¹ØÏµÓаËÕÉÔ¶£©£¬Ò»µ©·¢ÏÖtrue£¬Ö±½Ó¾Í²»¹¤×÷ÁË£¬ÕâÊǵäÐ͵ģ¬Ê¹ÓÃÒ»¸ö״̬ÅжÏÒµÎñÊÇ·ñͬÐС£»ùÓÚÕâ¸öÔ­Àí£¬Ö»ÒªÈçÏ·ÃÎÊ£¬ÒÔºóÕâ¸öÓ¦Ó㬾ÍֻʣÏÂ404ÁË¡£

ÎÞÂÛÊÇʲôaction£¬¶¼Ö»»á·µ»ØÕâ¸ö´íÎ󣬺óÐøµÄÖ´ÐУ¬jetty¶¼ÒÔÎªÕæµÄshutdownÁË¡£²¢ÇÒÕâ¸ö¹ý³ÌûÓÐÈκβ¹¾È´ëÊ©£¬Ö»ÄܹÜÀíÔ±ÊÖ¹¤ÖØÆôÁË£¬¸÷λSAÇ×ÃÇ£¬ÄãÃÇ×¼±¸ºÃÁËô£¿

jettyÈÎÒâÎļþÏÂÔØ

ÎÒÃÇÈÃ404ΪÕâ¸ö©¶´·þÎñµ½µ×¡£

ÊÂʵÉÏ£¬ÏÂÃæËµµÄÕâ¸öÎÊÌâ·¢ÉúÔÚjettyÉÏ£¬tomcatÕæµÄÊÇÇɺϵÄÌÓ¹ýÒ»½Ù¡£

ÎÒÃÇ¿´¿´jetty¶ÔÓÚ×Ô¶¨Òå´íÎóÎļþµÄÅäÖùý³Ì£º

Õâ¶ÎÅäÖÃÎļþ£¬¿ÉÒÔ×Ô¶¨Òå404´íÎóÎļþ£¬ÕâÀï¿ÉÒÔÖ¸¶¨/WEB-INF/Ŀ¼ÏµÄÎļþ£¬Ò»µ©ÅäÖÃÖ®ºó£¬ÓÉErrorPageErrorHandler¸ºÔð¸øerrorPages£¨ÕâÒ²ÊǸömap£©Ìí¼ÓÒ»¸ö¶ÔÓ¦¹ØÏµ¡£Õâ¸öÀà×îÖջᱻ¹ÒÔÚµ½contextÖУ¬ÄÇôÒÀÕÕÕâ¸ö©¶´µÄÔ­Àí£¬ÎÒÃÇ¿ÉÒÔ²ã²ãµ÷Óã¬×îÖÕÖÆ¶¨Ò»ÖÖ´íÎ󣬱ÈÈç404´íÎó¡£

Jetty°ÑerrorHandler¹ÒÔØµ½contextÉÏ£¬errorHanderÓиöerrorPagesÊôÐÔ£¬ÕâÆäʵÊǸömap£¬´ú±í´íÎóÒ³Ãæ£¬keyÊÇÒ»¸ö·µ»ØÂëÊý×Ö£¬value¾ÍÊÇ´íÎóºóÏÔʾµÄÎļþ¡£ ËùÒÔ´ò¿ª£º

·ÃÎÊͼƬÖÐÕâÌõURLºó£¬Ð§¹ûÈçÏ£¬ÈκÎÒ»¸ö²»´æÔÚµÄÒ³Ãæ¶¼»áÏÔʾweb.xmlµÄÄÚÈÝ£º

ÓÐÁËÕâ¸öÎÊÌ⣬¾Í¿ÉÒÔ¶ÁÈ¡Êý¾Ý¿âÎļþ£¬²é¿´Êý¾Ý¿âÃÜÂ룬¶ÁÈ¡´úÂëÎļþ£¬²éÕÒÒþ²ØµÄÒµÎñÂß¼­Â©¶´¡£×¢Ò⣬ÊÇÈκÎÈËÓöµ½404¶¼¿ÉÒÔ¿´µ½Õâ¸öÒ³Ãæ£¬×îºÃµÈÒ¹ÉîÈ˾²µÄʱºòÔÙʹÓã¬ÓÃÍêÁË»¹µÃ»Ö¸´Ô­Ñù¡£

0x02 ©¶´ÐÞ²¹

Õâ©¶´ÒѾ­±»¹Ù·½ÐÞ²¹ÁË£¬2012Äê·¢³öÀ´µÄÀÏÎÊÌ⣬ֻÊÇûÓе¥¶ÀÌá½»¹Ù·½¶øÒÑ£¬¾ÓȻҲÄÜÍϵ½ÏÖÔÚ£¬½¨Òé¸÷λ϶¨¾öÐÄ»»¸ö¿ò¼Ü¡£

   
2306 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±


WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶


ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«