自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】OA高危漏洞的修復(fù)過(guò)程

安全 漏洞
21日信息安全部副總監(jiān)轉(zhuǎn)來(lái)一封郵件,關(guān)于OA的重大安全隱患,一是越權(quán)訪問(wèn)的問(wèn)題;二是struts版本問(wèn)題,經(jīng)過(guò)一段時(shí)間的整改,現(xiàn)將問(wèn)題描述和解決方案及實(shí)施過(guò)程總結(jié)成文。

21日信息安全部副總監(jiān)轉(zhuǎn)來(lái)一封郵件,關(guān)于OA的重大安全隱患,一是越權(quán)訪問(wèn)的問(wèn)題;二是struts版本問(wèn)題,經(jīng)過(guò)一段時(shí)間的整改,現(xiàn)將問(wèn)題描述和解決方案及實(shí)施過(guò)程總結(jié)如下:

越權(quán)訪問(wèn)漏洞

風(fēng)險(xiǎn)等級(jí):高危

問(wèn)題類型:程序漏洞

問(wèn)題描述:

由于OA系統(tǒng)檔案查詢模塊沒(méi)有對(duì)查詢者的權(quán)限進(jìn)行完整驗(yàn)證,導(dǎo)致攻擊者可以利用該漏洞在查詢模塊通過(guò)修改工號(hào)的方式遍歷公司所有員工的個(gè)人信息。(注:editStaffInfoByCode參數(shù)值即工號(hào))

漏洞地址:

curl 'https://oa.*******.com/dependence/queryStaffinfoByStaffId.action' -H 'Cookie: Hm_lvt_0f350e5390b92578122a09670da4e18a=1444457881;JSESSIONID=17F532AA5A02473F18BFC2251D9EB4CD.s39;Hm_lvt_f5127c6793d40d199f68042b8a63e725=1444382434,1444640491,1445232940;Hm_lpvt_f5127c6793d40d199f68042b8a63e725=1445234011' -H 'Origin: https://oa.*******.com' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.8' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36' -H 'Content-Type: application/json;charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer:https://oa.*******.com/dependence/staffInfoAdd.action?editStaffInfoByCode=FX006635&command=detail&selfstaffinfo=showFiled' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data-binary '{"staffinfoVo":{"staffinfoEntity":{"staffId":"FX006635"}}}' --compressed

【博文推薦】OA高危漏洞的修復(fù)過(guò)程

 

解決方案:

1.修改網(wǎng)站代碼,添加權(quán)限驗(yàn)證功能,可以劃分用戶組,根據(jù)用戶組進(jìn)行權(quán)限劃分并嚴(yán)格限制用戶的訪問(wèn);

2.復(fù)用管理范圍和數(shù)據(jù)權(quán)限功能(mybatis攔截器對(duì)查詢進(jìn)行攔截并處理),使數(shù)據(jù)查詢控制在管理范圍的范疇內(nèi);

3.前端不向后端傳遞參數(shù),用于查詢的工號(hào)在后端從redis服務(wù)器上直接拉取當(dāng)前用戶的工號(hào);

4.前端傳遞的參數(shù)不使用工號(hào),而使用檔案的uuid代理主鍵,防止攻擊者使用偽造數(shù)據(jù)遍歷;

Struts2命令執(zhí)行漏洞

風(fēng)險(xiǎn)等級(jí):高危

問(wèn)題類型:程序漏洞

問(wèn)題描述:

OA系統(tǒng)使用的struts2框架版本較低,存在遠(yuǎn)程代碼執(zhí)行漏洞,攻擊者可利用該漏洞遠(yuǎn)程進(jìn)行執(zhí)行命令、上傳腳本后門文件等操作,進(jìn)而直接獲取服務(wù)器權(quán)限。

漏洞地址:

https://oa.*******.com/main/index.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27cat%27,%27/etc/passwd%27})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}

解決方案:

【博文推薦】OA高危漏洞的修復(fù)過(guò)程

1.升級(jí)struts2框架到最新版本,將struts2升級(jí)到2.3.15.1

2.在升級(jí)的過(guò)程中導(dǎo)致 StrutsModuleConfigProvider 類在加載classpath 下的struts配置文件出錯(cuò);

3.通過(guò)以下方法解決該錯(cuò)誤

1.在pom.xml中更新版本號(hào)

  1. <struts-version>2.3.15.1</struts-version> 

2.將struts2的自動(dòng)裝載配置文件方法重寫如下

  1. public class StrutsModuleConfigProvider  extends XmlConfigurationProvider {  
  2.         //需要解析加載的文件路徑  
  3.      private static final String FILE_PATTERN = "classpath*:com/fx/**/server/META-INF/struts.xml";  
  4.      public StrutsModuleConfigProvider() {  
  5.       Map<String, String> mappings = new HashMap<String, String>();  
  6.       mappings.put("-//OpenSymphony Group//XWork 2.1.3//EN",  
  7.         "xwork-2.1.3.dtd");  
  8.       mappings.put("-//OpenSymphony Group//XWork 2.1//EN", "xwork-2.1.dtd");  
  9.       mappings.put("-//OpenSymphony Group//XWork 2.0//EN", "xwork-2.0.dtd");  
  10.       mappings.put("-//OpenSymphony Group//XWork 1.1.1//EN",  
  11.         "xwork-1.1.1.dtd");  
  12.       mappings.put("-//OpenSymphony Group//XWork 1.1//EN", "xwork-1.1.dtd");  
  13.       mappings.put("-//OpenSymphony Group//XWork 1.0//EN", "xwork-1.0.dtd");  
  14.       mappings  
  15.         .put(  
  16.           "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN",  
  17.           "struts-2.0.dtd");  
  18.       mappings  
  19.         .put(  
  20.           "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN",  
  21.           "struts-2.1.dtd");  
  22.       mappings  
  23.         .put(  
  24.           "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN",  
  25.           "struts-2.1.7.dtd");  
  26.       setDtdMappings(mappings);  
  27.      }  
  28.      /**  
  29.       * (non-Javadoc)  
  30.       *   
  31.       * @see com.opensymphony.xwork2.config.ContainerProvider#needsReload()  
  32.       */  
  33.      @Override  
  34.      public boolean needsReload() {  
  35.       return true;  
  36.      }  
  37.      /*  
  38.       * (non-Javadoc)  
  39.       *   
  40.       * @see com.opensymphony.xwork2.config.ContainerProvider#register(com.opensymphony.xwork2.inject.ContainerBuilder,  
  41.       *      com.opensymphony.xwork2.util.location.LocatableProperties)  
  42.       */  
  43.      @Override  
  44.      public void register(ContainerBuilder containerBuilder,  
  45.        LocatableProperties props) throws ConfigurationException {  
  46.       super.register(containerBuilder, props);  
  47.      }  
  48.      /*  
  49.       * (non-Javadoc)  
  50.       *   
  51.       * @see com.opensymphony.xwork2.config.PackageProvider#loadPackages()  
  52.       */  
  53.      @Override  
  54.      public void loadPackages() throws ConfigurationException {  
  55.       super.loadPackages();  
  56.      }  
  57.      @Override  
  58.      protected Iterator<URL> getConfigurationUrls(String fileName)  
  59.        throws IOException {  
  60.       List<URL> urls = new ArrayList<URL>();  
  61.       Resource[] resources = getAllResourcesUrl();  
  62.       for (Resource resource : resources) {  
  63.        urls.add(resource.getURL());  
  64.       }  
  65.       return urls.iterator();  
  66.      }  
  67.      /**  
  68.       * 獲取系統(tǒng)中需要搜尋的struts的配置  
  69.       *   
  70.       * @return  
  71.       * @throws IOException  
  72.       */  
  73.      private Resource[] getAllResourcesUrl() {  
  74.       ResourcePatternResolver resoler = new PathMatchingResourcePatternResolver();  
  75.       try {  
  76.        return resoler.getResources(FILE_PATTERN);  
  77.       } catch (IOException e) {  
  78.        e.printStackTrace();  
  79.       }  
  80.       return new Resource[0];  
  81.      } 

在大的項(xiàng)目的開(kāi)發(fā)中,如果采用了struts2,就有可能有很多的struts2的配置文件,雖然struts2提供通配符和action的自動(dòng)加載,但我們一般還是很難將所有的配置文件采用一個(gè)單一的action配置文件來(lái)解決,因此就產(chǎn)生了很多的action配置文件。如果我們將所有的配置文件存放在一個(gè)配置文件中,這樣在項(xiàng)目間的協(xié)同開(kāi)發(fā)和測(cè)試就會(huì)出現(xiàn)混亂,而最好的開(kāi)發(fā)模式就是每個(gè)模塊都有自己的action配置文件,而系統(tǒng)會(huì)自動(dòng)搜索到所有的配置文件,采用自動(dòng)加載的方式來(lái)完成struts2的初始化。

雖然在struts2中提供在web.xml文件中配置config參數(shù),將說(shuō)有需要加載的配置文件的路徑寫在其中,以逗號(hào)分隔,這樣對(duì)于大的項(xiàng)目來(lái)說(shuō)還是很難實(shí)施的,最好的辦法還是采用自動(dòng)掃描的方法,我們可以擴(kuò)展struts2的ConfigurationProvider接口,在web.xml中配置自定義的加載類即可,這樣就解決了struts2配置文件自動(dòng)加載的問(wèn)題。

另外,struts2的漏洞時(shí)升級(jí)到2.3.15.1時(shí)報(bào)下面錯(cuò)誤

java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext;)Z

原因是因?yàn)閛gnl的版本也需要跟著升級(jí)需要升級(jí)到3.0.6

原文地址http://jncumter.blog.51cto.com/812546/1720489

責(zé)任編輯:藍(lán)雨淚 來(lái)源: 51CTO.com
相關(guān)推薦

2022-01-13 14:27:36

數(shù)字化

2009-08-27 09:25:33

GoogleChrome高危漏洞Mozilla

2022-04-26 16:52:59

漏洞網(wǎng)絡(luò)攻擊者谷歌

2023-09-02 21:39:47

2015-05-15 10:04:28

localhost

2015-04-08 14:44:40

2010-06-01 09:03:58

2015-06-15 13:06:23

項(xiàng)目項(xiàng)目經(jīng)驗(yàn)

2016-01-31 16:49:42

漏洞Galaxy

2023-03-15 18:08:08

2022-06-29 08:13:36

漏洞網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2022-02-12 16:30:02

WordPress安全漏洞插件

2015-03-18 13:18:45

MySQLSQL優(yōu)化

2015-06-17 09:34:09

軟件定義存儲(chǔ) 云存儲(chǔ)

2015-07-01 10:25:07

Docker開(kāi)源項(xiàng)目容器

2021-07-07 10:25:16

微軟漏洞補(bǔ)丁

2012-03-12 17:23:45

2025-03-31 07:10:00

2020-11-21 19:30:48

GitHub代碼開(kāi)發(fā)者

2014-12-12 10:46:55

Azure地緣組affinitygro
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)