成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【博文推薦】OA高危漏洞的修復過程

安全 漏洞
21日信息安全部副總監轉來一封郵件,關于OA的重大安全隱患,一是越權訪問的問題;二是struts版本問題,經過一段時間的整改,現將問題描述和解決方案及實施過程總結成文。

21日信息安全部副總監轉來一封郵件,關于OA的重大安全隱患,一是越權訪問的問題;二是struts版本問題,經過一段時間的整改,現將問題描述和解決方案及實施過程總結如下:

越權訪問漏洞

風險等級:高危

問題類型:程序漏洞

問題描述:

由于OA系統檔案查詢模塊沒有對查詢者的權限進行完整驗證,導致攻擊者可以利用該漏洞在查詢模塊通過修改工號的方式遍歷公司所有員工的個人信息。(注:editStaffInfoByCode參數值即工號)

漏洞地址:

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高危漏洞的修復過程

 

解決方案:

1.修改網站代碼,添加權限驗證功能,可以劃分用戶組,根據用戶組進行權限劃分并嚴格限制用戶的訪問;

2.復用管理范圍和數據權限功能(mybatis攔截器對查詢進行攔截并處理),使數據查詢控制在管理范圍的范疇內;

3.前端不向后端傳遞參數,用于查詢的工號在后端從redis服務器上直接拉取當前用戶的工號;

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

Struts2命令執行漏洞

風險等級:高危

問題類型:程序漏洞

問題描述:

OA系統使用的struts2框架版本較低,存在遠程代碼執行漏洞,攻擊者可利用該漏洞遠程進行執行命令、上傳腳本后門文件等操作,進而直接獲取服務器權限。

漏洞地址:

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高危漏洞的修復過程

1.升級struts2框架到最新版本,將struts2升級到2.3.15.1

2.在升級的過程中導致 StrutsModuleConfigProvider 類在加載classpath 下的struts配置文件出錯;

3.通過以下方法解決該錯誤

1.在pom.xml中更新版本號

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

2.將struts2的自動裝載配置文件方法重寫如下

  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.       * 獲取系統中需要搜尋的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.      } 

在大的項目的開發中,如果采用了struts2,就有可能有很多的struts2的配置文件,雖然struts2提供通配符和action的自動加載,但我們一般還是很難將所有的配置文件采用一個單一的action配置文件來解決,因此就產生了很多的action配置文件。如果我們將所有的配置文件存放在一個配置文件中,這樣在項目間的協同開發和測試就會出現混亂,而最好的開發模式就是每個模塊都有自己的action配置文件,而系統會自動搜索到所有的配置文件,采用自動加載的方式來完成struts2的初始化。

雖然在struts2中提供在web.xml文件中配置config參數,將說有需要加載的配置文件的路徑寫在其中,以逗號分隔,這樣對于大的項目來說還是很難實施的,最好的辦法還是采用自動掃描的方法,我們可以擴展struts2的ConfigurationProvider接口,在web.xml中配置自定義的加載類即可,這樣就解決了struts2配置文件自動加載的問題。

另外,struts2的漏洞時升級到2.3.15.1時報下面錯誤

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

原因是因為ognl的版本也需要跟著升級需要升級到3.0.6

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

責任編輯:藍雨淚 來源: 51CTO.com
相關推薦

2022-01-13 14:27:36

數字化

2009-08-27 09:25:33

GoogleChrome高危漏洞Mozilla

2022-04-26 16:52:59

漏洞網絡攻擊者谷歌

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

2022-02-12 16:30:02

WordPress安全漏洞插件

2022-06-29 08:13:36

漏洞網絡攻擊網絡安全

2023-03-15 18:08:08

2016-01-31 16:49:42

漏洞Galaxy

2015-06-15 13:06:23

項目項目經驗

2025-03-31 07:10:00

2012-03-12 17:23:45

2021-07-07 10:25:16

微軟漏洞補丁

2015-03-18 13:18:45

MySQLSQL優化

2015-06-17 09:34:09

軟件定義存儲 云存儲

2015-07-01 10:25:07

Docker開源項目容器

2020-11-21 19:30:48

GitHub代碼開發者

2010-08-03 09:51:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人aaa视频| а天堂中文最新一区二区三区 | 一级毛片视频在线观看 | 久久久在线视频 | 亚洲综合在 | 看片天堂 | 狠狠艹| 久久久久久久久久久久91 | 粉嫩av久久一区二区三区 | 91成人在线视频 | 激情五月婷婷 | 亚洲精品成人av | 国产精品久久在线观看 | 99久久精品国产一区二区三区 | 欧美亚洲视频在线观看 | 国产乱码精品一区二区三区五月婷 | 三级黄片毛片 | 国产精品一区二区视频 | 91精品国产麻豆 | 国产91综合| 日韩在线播放视频 | 久在草| 国产福利资源在线 | 草久久| 懂色tv| 麻豆久久久9性大片 | 国产精品av久久久久久毛片 | 一区视频在线 | 久久综合久色欧美综合狠狠 | www.狠狠操| www.国产精| 91av导航| 国产欧美久久精品 | 91精品久久 | 黄色成人亚洲 | av大全在线| 狠狠狠 | 久草免费在线视频 | 亚洲情综合五月天 | 国产精品久久久久久影院8一贰佰 | 国产一区免费 |