当前位置:WooYun(白帽子技术社区) >> java >> j2ee框架使用中,框架特点及不良习惯容易引发的安全问题:越权操作!

j2ee框架使用中,框架特点及不良习惯容易引发的安全问题:越权操作!

shine (shield) | 2013-01-19 14:30

//一个简单的问题,在乌云也留个底本!


  越权操作:是个很常见的安全问题,应用开发或设计者对访问权限没有考虑或考虑不全。他们即希望于用个未知的访问URL来打发不熟悉开发的攻击者,但如果熟悉就很容易被猜解了。


  MVC模式的框架,如:Struts2(其他常规框架或自己写的框架同理,这里框架优点我们就不去讨论了!),它对访问控制弄了个类似默认的规范,对于同一业务对象或者叫DTO的操作都可以(注意这里的“可以”之词,是不强迫你,但默认要你按这个流程开发了,由开发者决定的问题。)放在一个类里面实现,而不同的操作(无非:C(增)R(查)U(改)D(删)等操作,)通过类里面的不同方法实现,但就是这个规范的引导加上一些开发时对实现方法的命名不良习惯及诸多因素的影响,可能导致安全问题的发生,如:



  对于有权限考虑的应用,如果是个注册型的网站,简单拆分一下CRUD操作权限(在这里我们只讨论越权,平行权限之类等问题不考虑了!),C(增加即注册),及U(修改)用户是可以触及;而R(查询)、D(删除)只有管理员才能操作的,实例代码:

import com.opensymphony.xwork2.ActionSupport;

public class MemberAction extends ActionSupport  {
    

     public String register()  {
         //注册用户,实例代码略...
         return REGISTER;
    }


     public String add()  {
         //保存用户,实例代码略...
         return ADD;
    }
    
     public String getList()  {
         //查询用户,实例代码略...
         return LIST;
    }
    
    

         //其他方法省略...




     public String execute()  {

  
         return SUCCESS;
    }


}




  当用户注册时,先访问:http://xxx.xxx.xxx/member.do?method=register注册,再通过:http://xxx.xxx.xxx/member.do?method=add保存数据。如果是一个了解j2ee开发流程的攻击者,马上就会猜解到method=xxx其他方法名(如关键字:list、getList)来访问管理员权限:http://xxx.xxx.xxx/member.do?method=getList。



  在这里绝对不是偶然,在实际开发中,也不会将方法名称搞得很复杂,而且开发者在对框架学习之初对add、getList、delete等,这样类似枚举类型的关键字选词产生依赖,形成习惯,熟悉的攻击者就很容易猜解它。


  值的注意的是,这里越权问题的产生,有一个很大因素:框架提供一个业务对象操作的类似规范(在同一个Action类中操作,框架不强迫,但结合上下文容易出现安全问题。主要是说这个问题,哈哈!)!




  乌云案例:WooYun: 苏宁易购某站点应用设计缺陷!




//问题太简单,都无力去描述了,但发现你们做安全的人当前就是反复在做这些事情!




  原文地址

分享到:
  1. 1#
    回复此人 感谢
    无敌L.t.H (‮……天百一爱恋考高:簿相色白产国) | 2013-01-19 15:52

    MVC的话可能除了C还得把V给搞定,视图不一定一样。

  2. 2#
    回复此人 感谢
    horseluke (微碌) | 2013-01-19 18:45

    j2ee可以引入AOP(切面编程)来解决这个问题吧?

  3. 3#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2013-01-19 19:01

    struts2有拦截器啊

  4. 4#
    回复此人 感谢
    shine (shield) | 2013-01-19 19:41

    @Sogili @horseluke  你们的回答让哥[乍舌],如果都能想到AOP及拦截器等解决方法,应该不会这么容易出现这个问题了。你们都是对的,问题没这么复杂,解决方法很多。主要开发者意识及框架特点诸多因素影响造成的,加强安全意识比较重要。如果非要从框架自身入手,引入第三方安全框架或自己弄一个权限访问插件,但开发成本及开发者自身要求等都高了点(这几项好象都是做安全的历史难题啊)!

  5. 5#
    回复此人 感谢
    horseluke (微碌) | 2013-01-19 21:08

    @shine 就谁来负责问题,我也在OAuth 2.0的研究中有困惑。如果一个协议或框架需要开发者自行保证安全,那么就只能取决于开发者的安全意识,和安全意识的普及程度。实际上来讲,这样就等于把开发者推向重复出老漏洞的怪论中;但如果框架自己都包罗万象,那么在开发看来,绝不是好框架(意味着只能依赖它来实现,无法解耦)。

    有时间,看来要写篇文章交流一下困惑。

  6. 6#
    回复此人 感谢
    GaRY | 2013-01-19 22:38

    这就是框架的本身的设计问题,尤其s2还嫌用户不方便,还设计一个动态方法调用(DMI)。让这问题更甚。
    不过正如之前几位所说,S2用拦截器,S1也可以用Filter去解决这个问题。但还是一般的开发者的确很容易犯这种错误,这就得靠各个框架的教程,demo去潜移默化了,也是各位安全工作者的任务,一定要做好安全开发培训。

  7. 7#
    回复此人 感谢
    GaRY | 2013-01-19 22:44

    看到楼主此文,想到我之前有个关于S1和S2相关安全方面比对的文档,我找找发上来。

  8. 8#
    回复此人 感谢
    shine (shield) | 2013-01-20 11:09

    @horseluke 这个应该没什么好困惑的吧?

    例如:通常情况下,一个框架如果能够远程代码执行,肯定是安全漏洞(不是绝对啊!);如果是上面这个安全问题,但如果在现实中危害表现得严重,就会有你们这样的安全人员反馈信息给产品开发者,再通过产品开发者的一些思想斗争后,把安全问题上升到安全漏洞,做出适应的策略解决这个问题。只是这个流程在不断完善而已!

    安全只能做到平衡(所有存在的事物也同样),不困惑。不然,象剑心、GaRY等安全行业的人,只能组团搞摇滚或当国际诗人或者其他了!

  9. 9#
    回复此人 感谢
    刺刺 | 2013-01-20 19:08

    哈哈,楼主都不提这个超简单更直接的案例:某省公安厅出入境政务服务网网上申请数据泄露
    WooYun: 某省公安厅出入境政务服务网网上申请数据泄露
    曾经见过,有的程序员也考虑了这个问题,不过他的权限验证居然采用的是js……

  10. 10#
    回复此人 感谢
    shine (shield) | 2013-01-20 19:57

    @刺刺 [微笑],抱歉,确实没瞧见!

    另外,这里只是对一个j2ee框架安全问题产生的过程进行简细说明(类似一个安全开发的文档,问题虽然简单,但很重要!),不突出指责是某一方面的问题,因为问题总会有其他的原因或问题(问题的问题就不在一个层面上了,暂时无法讨论。)!

  11. 11#
    回复此人 感谢
    momo | 2013-01-21 09:17

    好顶

  12. 12# 感谢(3)
    回复此人 感谢
    园长 (喵~) | 2013-01-21 09:45

    这个问题的确是存在的,最主要的还是程序员没有做到良好的权限处理吧。

  13. 13# 感谢(3)
    回复此人 感谢
    园长 (喵~) | 2013-01-21 09:51

    @horseluke 用AOP来做URL权限处理有点多余了,用URL授权或者在method逻辑里面加权限判断比较常用吧。

  14. 14#
    回复此人 感谢
    xsser (十根阳具有长短!!) | 2013-01-21 11:24

    @刺刺 这个是很给力的

  15. 15#
    回复此人 感谢
    xsser (十根阳具有长短!!) | 2013-01-21 15:05

    其实其他语言也会有这个问题 刚对核心公开的这个漏洞就是个案例 WooYun: 蘑菇街某模块(当然是任意咯)资料匿名用户即可修改漏洞

  16. 16#
    回复此人 感谢
    wefgod (求大牛指点) | 2013-04-25 15:36

    这种问题太多了。而且有部分struts的,可能会从整体上限制了不登录不能在某些页面进行操作,某些页面也就是定义了action的,如果找到了正常的jsp页面路径,尼玛,悲催了,爱干什么都可以,没有限制

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录