Weblogic ·´ÐòÁл¯Ô¶³Ì´úÂëÖ´ÐÐÎó²î(CVE-2018-2628) ÊÖÒÕÆÊÎöÓë·À»¤¼Æ»®
2018-04-18
×ÛÊö
ÍâµØÊ±¼ä4ÔÂ17ÈÕ£¬±±¾©Ê±¼ä4ÔÂ18ÈÕÆÆÏþ£¬Oracle¹Ù·½Ðû²¼ÁË4Ô·ݵÄÒªº¦²¹¶¡¸üÐÂCPU£¨Critical Patch Update£©ÆäÖаüÀ¨Ò»¸ö¸ßΣµÄWeblogic·´ÐòÁл¯Îó²î(CVE-2018-2628)£¬Í¨¹ý¸ÃÎó²î£¬¹¥»÷Õß¿ÉÒÔÔÚδÊÚȨµÄÇéÐÎÏÂÔ¶³ÌÖ´ÐÐí§Òâ´úÂë¡£
²Î¿¼Á´½Ó£º
http://www.oracle.com/technetwork/security-advisory/cpuapr2018-3678067.html
Îó²îÓ°Ïì¹æÄ£
l Weblogic 10.3.6.0
l Weblogic 12.1.3.0
l Weblogic 12.2.1.2
l Weblogic 12.2.1.3
ƾ֤NTI£¨AG¹«Ë¾Ì¬ÊƸÐ֪ƽ̨£©·´ÏìµÄЧ¹û£¬ÔÚÈ«Çò¹æÄ£ÄÚ¶Ô»¥ÁªÍø¿ª·Åweblogic·þÎñµÄ×ʲúÊýÄ¿¶à´ï19229£¬ÆäÖйéÊôÖйúµØÇøµÄÊÜÓ°Ïì×ʲúΪ1787¡£
¶ÔÓ¦Öйú¹éÊô¸÷Ê¡ÊеĵÄÂþÑÜÇéÐÎÈçÏÂͼËùʾ£¬±±¾©µØÇø¿ª·ÅµÄ×ʲúÊýÄ¿½Ï¶à¡£
ÊÖÒÕ·À»¤¼Æ»®
Óû§×Ô²é
ʹÓÃÈçÏÂÏÂÁî¼ì²éWeblogic°æ±¾ÊÇ·ñÔÚÊÜÓ°Ïì¹æÄ£ÄÚ£º
$ cd /lopt/bea92sp2/weblogic92/server/lib
$java -cp weblogic.jar weblogic.version
ͬʱ¼ì²éÊÇ·ñ¶ÔÍ⿪·ÅÁË7001¶Ë¿Ú£¨WeblogicĬÈ϶˿ڣ©¡£
¹Ù·½ÐÞ¸´¼Æ»®
¹Ù·½ÒѾÔÚ½ñÈÕÐû²¼µÄÒªº¦²¹¶¡¸üÐÂÖÐÐÞ¸´Á˸ÃÎó²î£¬ÇëÓû§ÊµÊ±ÏÂÔØ¸üоÙÐзÀ»¤¡£
²Î¿¼Á´½Ó£º
http://www.oracle.com/technetwork/security-advisory/cpuapr2018-3678067.html
×¢£ºOracle¹Ù·½²¹¶¡ÐèÒªÓû§³ÖÓÐÕý°æÈí¼þµÄÔÊÐíÕ˺ţ¬Ê¹ÓøÃÕ˺ÅÉϰ¶https://support.oracle.comºó£¬¿ÉÒÔÏÂÔØ×îв¹¶¡¡£
ÔÝʱ½â¾ö¼Æ»®
CVE-2018-2628Îó²îʹÓõĵÚÒ»²½ÊÇÓëWeblogic·þÎñÆ÷¿ª·ÅÔÚ·þÎñ¶Ë¿ÚÉϵÄT3·þÎñ½¨ÉèsocketÅþÁ¬£¬¿Éͨ¹ý¿ØÖÆT3ÐÒéµÄ»á¼ûÀ´ÔÝʱ×è¶Ï¹¥»÷ÐÐΪ¡£WebLogic Server ÌṩÁËÃûΪweblogic.security.net.ConnectionFilterImpl µÄĬÈÏÅþÁ¬É¸Ñ¡Æ÷¡£´ËÅþÁ¬É¸Ñ¡Æ÷½ÓÊÜËùÓд«ÈëÅþÁ¬£¬¿Éͨ¹ý´ËÅþÁ¬É¸Ñ¡Æ÷ÉèÖùæÔò£¬¶Ôt3¼°t3sÐÒé¾ÙÐлá¼û¿ØÖÆ¡£¡£
1. ½øÈëWeblogic¿ØÖÆÌ¨£¬ÔÚbase_domainµÄÉèÖÃÒ³ÃæÖУ¬½øÈë¡°Çå¾²¡±Ñ¡Ïî¿¨Ò³Ãæ£¬µã»÷¡°É¸Ñ¡Æ÷¡±£¬½øÈëÅþÁ¬É¸Ñ¡Æ÷ÉèÖá£
2. ÔÚÅþÁ¬É¸Ñ¡Æ÷ÖÐÊäÈ룺weblogic.security.net.ConnectionFilterImpl£¬ÔÚÅþÁ¬É¸Ñ¡Æ÷¹æÔòÖÐÊäÈ룺* * 7001 deny t3 t3s

3. ÉúÑĺó¹æÔò¼´¿ÉÉúЧ£¬ÎÞÐèÖØÐÂÆô¶¯¡£

|
ÅþÁ¬É¸Ñ¡Æ÷¹æÔòÃûÌÃÈ磺target localAddress localPort action protocols£¬ÆäÖУº l target Ö¸¶¨Ò»¸ö»ò¶à¸öҪɸѡµÄ·þÎñÆ÷¡£ l localAddress ¿É½ç˵·þÎñÆ÷µÄÖ÷»úµØµã¡£(ÈôÊÇÖ¸¶¨ÎªÒ»¸öÐǺŠ(*)£¬Ôò·µ»ØµÄÆ¥ÅäЧ¹û½«ÊÇËùÓÐÍâµØ IP µØµã¡£) l localPort ½ç˵·þÎñÆ÷ÕýÔÚ¼àÌýµÄ¶Ë¿Ú¡£(ÈôÊÇÖ¸¶¨ÁËÐǺţ¬ÔòÆ¥Åä·µ»ØµÄЧ¹û½«ÊÇ·þÎñÆ÷ÉÏËùÓпÉÓõĶ˿Ú)¡£ l action Ö¸¶¨ÒªÖ´ÐеIJÙ×÷¡£(Öµ±ØÐèΪ¡°allow¡±»ò¡°deny¡±¡£) l protocols ÊÇÒª¾ÙÐÐÆ¥ÅäµÄÐÒéÃûÁÐ±í¡£(±ØÐèÖ¸¶¨ÏÂÁÐÆäÖÐÒ»¸öÐÒ飺http¡¢https¡¢t3¡¢t3s¡¢giop¡¢giops¡¢dcom »ò ftp¡£) ÈôÊÇδ½ç˵ÐÒ飬ÔòËùÓÐÐÒé¶¼½«ÓëÒ»¸ö¹æÔòÆ¥Åä¡£ |
AG¹«Ë¾¿Æ¼¼·À»¤½¨Òé
AG¹«Ë¾¿Æ¼¼¼ì²âÀà²úÆ·Óë·þÎñ
1¡¢¹«Íø×ʲú¿ÉʹÓÃAG¹«Ë¾ÔÆ ½ôÆÈÎó²îÔÚÏß¼ì²â£¬¼ì²âµØµãÈçÏ£º
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12
2¡¢ÄÚÍø×ʲú¿ÉÒÔʹÓÃAG¹«Ë¾¿Æ¼¼µÄÈëÇÖ¼ì²âϵͳ(IDS)£¬Ô¶³ÌÇå¾²ÆÀ¹Àϵͳ£¨RSAS V6£©ºÍWebÓ¦ÓÃÎó²îɨÃèϵͳ£¨WVSS£© ¾ÙÐмì²â¡£
- ÈëÇÖ¼ì²âϵͳ£¨IDS£©
http://update.nsfocus.com/update/listIds
- Ô¶³ÌÇå¾²ÆÀ¹Àϵͳ£¨RSAS V6£©
http://update.nsfocus.com/update/listRsasDetail/v/vulweb
ͨ¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐмì²â
ʹÓÃAG¹«Ë¾¿Æ¼¼·À»¤Àà²úÆ·£¨IPS/NF£©¾ÙÐзÀ»¤£º
- ÈëÇÖ·À»¤ÏµÍ³£¨IPS£©
http://update.nsfocus.com/update/listIps
- ÏÂÒ»´ú·À»ðǽϵͳ£¨NF£©
http://update.nsfocus.com/update/listNf
ͨ¹ýÉÏÊöÁ´½Ó£¬Éý¼¶ÖÁ×îа汾¼´¿É¾ÙÐзÀ»¤£¡
TRGÇ徲ƽ̨ÌṩӦ¼±ÏìÓ¦ÊÖ²á
1. TSA£¨AG¹«Ë¾Ì¬ÊƸÐ֪ƽ̨£©
1.1 Ìí¼Ó¡°weblogicÎó²î¹¥»÷ʵÑ顱ÊÂÎñ¹æÔò£º
½øÈëBSAÌ¬ÊÆ¸ÐÖªÖ÷Ò³£¬½øÈë¹æÔòÒýÇæAPP£¬Èçͼ1.1.
ͼ1.1½øÈë¹æÔòÒýÇæAPP
1.2 н¨¹æÔò
ͼ 1.2 н¨¹æÔò
1.3 ÔÙн¨Ò³Ãæ
¹æÔòģʽ£º×¨¼Òģʽ
¹æÔò·ÖÀà£ºÍøÂçÈëÇÖ¹æÔò
¹æÔòsql£º
select sip dip sum(last_times) as atk_count sip dip min(timestamp) as start_time max(timestamp) as end_time concat_agg(related_id_list) as related_id_list
from internal_app_bsaips.ipslog
where rule_id in (2417424022236142307421757217582145629116303122368563299232676262760689663446163666197661896619560862)
group by sip dip

ͼ1.3 н¨¹æÔò-ר¼ÒģʽÌîд
1.4 µã»÷ÏÂÒ»²½£¬·ºÆð¹æÔòÊôÐÔÉèÖÃÒ³Ãæ
Ãû³Æ£ºweblogicÎó²î¹¥»÷ʵÑé
Ç徲Ʒ¼¶£ºÖÐ
ÊÂÎñ½×¶Î£ºÕì²é
³¬Ê±Ê±¼ä£º1800£¨Ä¬ÈÏÖµ£©
Ò»Á¬Ê±¼ä£º3600£¨Ä¬ÈÏÖµ£©
ºÏ²¢ÊôÐÔ£ºsip£¬dip
ÊÂÎñÀàÐÍ£ºÏµÍ³ÈëÇÖÊÂÎñ- Îó²î¹¥»÷
¹æÔòÐÎò£º¸ÃÊÂÎñÊǹ¥»÷Õß¶Ôweblogic·þÎñÆ÷Îó²î×ö¹¥»÷ʵÑé¡£
¹æÔò½¨Ò飺ÈôÊǹ¥»÷ÌᳫÕßΪÎÒ·½×ʲú£¬Ôò˵Ã÷¸Ã×ʲúÒÑʧÏÝ¡£²»È»£¬Èç±»¹¥»÷ϵͳΪÎÒ·½×ʲú£¬²¢ÇÒ°²ÅÅÓÐweblogic·þÎñ£¬ÇëÈ·ÈÏÊǸÃ×ʲúÊÇ·ñ±£´æÊÂÎñÏêÇéÖеÄÎó²î¡£

ͼ1.4 н¨¹æÔò-¹æÔòÊôÐÔÉèÖÃ
µã»÷Íê³É£¬Íê³É¸Ã¹æÔòÉèÖá£
1.5 ÔÚ¹æÔòÁбíÖÐʹ֮ÉúЧ

ͼ1.5 ʹ¹æÔòÉúЧ
2. ESP£¨AG¹«Ë¾ÆóÒµÇ徲ƽ̨£©
2.1 Ìí¼Ó¡°weblogicÎó²î¹¥»÷ʵÑ顱ÊÂÎñ¹æÔò
·¿ªESPAG¹«Ë¾ÆóÒµÇ徲ƽ̨£¬½øÈë Á¿»¯ÆÊÎö-> ÊÂÎñÆÊÎö-> ÊÂÎñ¹æÔò£¬µã»÷¡°½¨Éè¹æÔò¡±£¬Èçͼ2.1Ëùʾ£¬µ¯³öÈçͼ2.2ËùʾµÄ½¨Éè¹æÔò´°¿Ú¡£

ͼ2.1 Ñ¡Ôñ½¨Éè¹æÔò
2.2 ÔÚ[½¨Éè¹æÔò->»ù±¾ÉèÖÃ]ÖÐÌîÈëÒÔÏÂÐÅÏ¢
¹æÔòÃû³Æ£ºweblogicÎó²î¹¥»÷ʵÑé
ÈÕÖ¾ÀàÐÍ£ºÈëÇÖ·À»¤ÈÕÖ¾
´°¿ÚÉèÖ㺿Õȱ£¨Ä¬ÈÏ£©
¹æÔòÐÎò£º¸ÃÊÂÎñÊǹ¥»÷Õß¶Ôweblogic·þÎñÆ÷Îó²î×ö¹¥»÷ʵÑé¡£ÈôÊǹ¥»÷ÌᳫÕßΪÎÒ·½×ʲú£¬Ôò˵Ã÷¸Ã×ʲúÒÑʧÏÝ¡£²»È»£¬Èç±»¹¥»÷ϵͳΪÎÒ·½×ʲú£¬²¢ÇÒ°²ÅÅÓÐweblogic·þÎñ£¬ÇëÈ·ÈÏÊǸÃ×ʲúÊÇ·ñ±£´æÊÂÎñÏêÇéÖеÄÎó²î¡£

ͼ2.2 ½¨Éè¹æÔò-»ù±¾ÉèÖÃ
2.3 µã»÷ÏÂÒ»²½£¬ÔÚ[½¨Éè¹æÔò->½¨Éè¹æÔò]ÖÐÌîÈëÒÔÏÂÐÅÏ¢
Ñ¡ÖÐ[¹ýÂËÌõ¼þ(where)]
[¸æ¾¯ÊÂÎñ¹æÔò]ÊôÐÔin(2417424022236142307421757217582145629116303122368563299232676262760689663446163666197661896619560862)
ͼ2.3 ½¨Éè¹æÔò-¹æÔòÉèÖÃ
2.4 µã»÷ÏÂÒ»²½£¬ÔÚ[½¨Éè¹æÔò->ÊÂÎñÉèÖÃ]ÖÐÌîÈëÒÔÏÂÐÅÏ¢
ÊÂÎñÀàÐÍ£º¹¥»÷ÈëÇÖ£¨Ö»Ê¹ÓøÃ×°±¸¸æ¾¯²»¿ÉÈ·ÈϹ¥»÷ÊÇ·ñÀֳɣ¬Ö»ÄÜÅжÏÊÇÕë¶ÔϵͳÖпÉÄܱ£´æµÄweblogic·þÎñÎó²îµÄ¹¥»÷ʵÑ飩
Σº¦Æ·¼¶£º3
ͼ2.4 ½¨Éè¹æÔò-ÊÂÎñÉèÖÃ
2.5 µã»÷½¨É裬ÍêªϰÔò½¨Éè

ͼ2.5 ¹æÔò½¨ÉèÍê³ÉºóЧ¹û
3. TAMа汾£¨AG¹«Ë¾È«Á÷Á¿ÆÊÎöƽ̨£©
Ìí¼Ó¡°weblogicÎó²î¹¥»÷ʵÑ顱ÊÂÎñ¹æÔò
3.1 ½øÈëÈ«Á÷Á¿ÊÂÎñ¹æÔòÉèÖÃÎļþÎļþĿ¼(/home/bsauser/BSA/apps/bsa_tam2/conf)£¬±¸·Ýmergeconf.xmlÎļþ£¬È»ºóʹÓÃvi·¿ªmergeconf.xmlÎļþ
ͼ3.1·¿ªÈ«Á÷Á¿ÊÂÎñ¹æÔòÉèÖÃÎļþ
3.2 ÓÃutf-8±àÂëÃûÌÃµÄ±à¼Æ÷·¿ª¡°È«Á÷Á¿Æ½Ì¨¹æÔò_weblogicÎó²î¹¥»÷ʵÑéÊÂÎñ.xml¡±£¬¸´ÖÆÆäÖеÄÄÚÈݲåÈëµ½rules½ÚµãÖУ¬²¢¼á³ÖÍ˳ö£¬Ð¹æÔò×Ô¶¯ÉúЧ¡£
ͼ3.2²åÈëйæÔòµ½rules½Úµã
»¥ÁªÍø×ʲúÓ°ÏìÅŲé
AG¹«Ë¾¿Æ¼¼ÍþвÇ鱨ÖÐÐÄÌṩ¶Ô»¥ÁªÍø¿ª·ÅÍøÂç×ʲúÐÅÏ¢Éó²éµÄ¹¦Ð§£¬ÆóÒµÓû§¿Éͨ¹ýÔÚNTIÉϼìË÷×ÔÓÐ×ʲúÐÅÏ¢¶Ë¿Ú¿ª·ÅÇéÐΣ¬Éó²éÆóÒµ×ʲúÊÇ·ñÊÜ´ËÎó²îÓ°Ïì¡£

AG¹«Ë¾¿Æ¼¼ÍþвÇ鱨ÖÐÐÄΪÆóÒµ¿Í»§Ìṩ»¥ÁªÍø×ʲúºË²é·þÎñ£¬Ê¹µÃÆóÒµ¿Í»§Äܹ»ÊµÊ±ÕÆÎÕ×ÔÉí×ʲúµÄÇå¾²Ì¬ÊÆÒÔ¼°×ʲú±ä»»ÇéÐΣ¬·þÎñÏêÇé¿É×Éѯ£ºNTI@nsfocus.com£¬»òÕß×Éѯ¶ÔÓ¦µÄ¿Í»§Ë¾Àí¡£
ÊÖÒÕÆÊÎö
Îó²î¼òÎö
¸Ã·þÎñ»á½â°üObject½á¹¹£¬Í¨¹ýÒ»²½²½µÄreadObjectÈ¥µÚ¶þ²½·þÎñÆ÷ÉϵÄ1099¶Ë¿ÚÇëÇó¶ñÒâ·â×°µÄ´úÂë¡£
È»ºóÔÚÍâµØµ¯³öÅÌËãÆ÷¡£

WeblogicÒѾ½«»¥ÁªÍøÌ»Â¶µÄPoC¶¼ÒѾ¼ÓÈëÁ˺ÚÃûµ¥£¬ÈôÊÇÒªÈÆ¹ýËûµÄºÚÃûµ¥µÄÏÞÖÆ¾ÍÖ»ÄÜ×Ô¼ºÏÂÊֽṹ¡£À´¿´¿´InboundMsgAbbrevÖÐresolveProxyClassµÄʵÏÖ£¬resolveProxyClassÊÇ´¦Öóͷ£rmi½Ó¿ÚÀàÐ͵ģ¬Ö»ÅжÏÁËjava.rmi.registry.Registry£¬×ÅÊµËæ±ãÕÒÒ»¸örmi½Ó¿Ú¼´¿ÉÈÆ¹ý¡£
|
protected Class resolveProxyClass(String[] interfaces) throws IOException ClassNotFoundException { String[] arr$ = interfaces; int len$ = interfaces.length;
for(int i$ = 0; i$ < len$; ++i$) { String intf = arr$[i$]; if(intf.equals("java.rmi.registry.Registry")) { throw new InvalidObjectException("Unauthorized proxy deserialization"); } }
return super.resolveProxyClass(interfaces); }
|
Éù Ã÷
±¾Ç徲ͨ¸æ½öÓÃÀ´ÐÎò¿ÉÄܱ£´æµÄÇå¾²ÎÊÌ⣬AG¹«Ë¾¿Æ¼¼²»Îª´ËÇ徲ͨ¸æÌṩÈκΰü¹Ü»òÔÊÐí¡£ÓÉÓÚÈö²¥¡¢Ê¹ÓôËÇ徲ͨ¸æËùÌṩµÄÐÅÏ¢¶øÔì³ÉµÄÈκÎÖ±½Ó»òÕß¼ä½ÓµÄЧ¹û¼°Ëðʧ£¬¾ùÓÉʹÓÃÕß×Ô¼ºÈÏÕæ£¬AG¹«Ë¾¿Æ¼¼ÒÔ¼°Ç徲ͨ¸æ×÷Õß²»Îª´Ë¼ç¸ºÈκÎÔðÈΡ£AG¹«Ë¾¿Æ¼¼ÓµÓжԴËÇ徲ͨ¸æµÄÐÞ¸ÄÏ¢ÕùÊÍȨ¡£ÈçÓû×ªÔØ»òÈö²¥´ËÇ徲ͨ¸æ£¬±ØÐè°ü¹Ü´ËÇ徲ͨ¸æµÄÍêÕûÐÔ£¬°üÀ¨°æÈ¨ÉùÃ÷µÈËùÓÐÄÚÈÝ¡£Î´¾AG¹«Ë¾¿Æ¼¼ÔÊÐí£¬²»µÃí§ÒâÐ޸ĻòÕßÔö¼õ´ËÇ徲ͨ¸æÄÚÈÝ£¬²»µÃÒÔÈκη½·¨½«ÆäÓÃÓÚÉÌҵĿµÄ¡£

AG¹«Ë¾ÔÆ





