Artificial Intelligence

Terminator:Skynet...010010001000010000010000100001000101010100101001010101001001010001001010000101001010101001010101010100101010100101001010100101001001010010100101100101010101011111010100101011101111

Terminator:Skynet的公告
ID: kj021320
Name: Skynet(AI)
QQ: 282720807
mail:kj021320@126.com
mail:kj021320@gmail.com
http://blog.csdn.net/I_S_T_O/
艾尔斯帝欧
最近评论
KOK:我来打酱油的
zhanglinguo11:好 期待
zhanglinguo11@163.com
rebyond:哈哈,MICKEY你丫 太搞笑啦!
mickey:可以看出来%是注释符.-_-!!
XY:一群牛。。。
文章分类
收藏
    相册
    程序截图
    我的茅舍
    装B的图片
    ISTO成员
    AMXSA's BLOG--PHP高手
    I.C.E'blog一位网络高手
    LIVING's BLOG
    MASK's BLOG--- ASP/Delphi
    SUMMER--搜索引擎开发者
    Security
    milw0rm
    red database security
    技术
    Ada Joint Program Office
    ADA Program Language
    ALL jar download
    BEA DOCUMENTS
    Caucho Technology
    codeproject
    CURL WEB Program language
    D language document
    Documentation at PDC
    Firebird Documentation
    Flex LiveDocs
    FreeBSD Document
    FreeMarker template engine
    hadoop分布式
    IBM informix文档中心
    IBM RedBooks Search
    InternetEngineeringTaskForce
    jakarta-apache.LOG4J
    jcaptcha
    LINUX Documentation
    MIT's OpenCourseWare
    MSDN WEBCAST
    MySQL Reference Manual
    nokia sdk document
    novell-documentation
    ORACLE documentation
    Perl Documentation
    PHP.net Document
    planet-source-code
    PostgreSql Document
    Python Documentation
    reflector
    SapDB documentation
    SourceForge
    SQLite cn
    Sybase Online Document
    teradata Resources
    Velocity Java template engine
    WebWork - Documentation
    Web标准组织
    看雪学院
    美国基因组研究所
    友情连接
    ADK成员-C#
    K' 同学的BLOG
    NetMiner's BLOG
    rainnyzhong--ORACLE
    一个忘不了的好友,我的领路人
    忍者's BLOG
    精灵
    黑客榜中榜
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 asynchronous session 攻击收藏

    新一篇: 新的安全需求? | 旧一篇: 08年新年快乐 :-)

    asynchronous session 难道是万份之1的攻击机会?
    Team : I.S.T.O
    Writer : kj021320
    Tester : Living/Amxsa
    BLOG : http://blog.csdn.net/I_S_T_O

    (套话)
     首先介绍一下什么是 session , 相信很多开发人员已经很熟悉了!但是我还需要老生常谈, session是服务器

    上面的一块内存区域 , 存放登陆用户(同一个会话) 的信息 , 而浏览器端只需要 保存一个KEY , 每次提交的时候只需

    要拿着相应的key去服务器取东西 。为了适应大家阅读所以 下面为常用WEB代码事例

    asp/aspx
    <%
    session("member")="kj021320"
    session("model")="审核模块"
    session("group")="5"
    %>

    PHP
    <?
    $_SESSION['member']="kj021320";
    $_SESSION['model']="审核模块";
    $_SESSION['group']=5;
    ?>

    jsp
    <%
    session.setAttribute("member","kj021320");
    session.setAttribute("model","审核模块");
    session.setAttribute("group","5");
    %>


    (概念)  那怎么才算是 asynchronous session 攻击呢!这个形容词在国外是没有涉及过的!很显然是在session 异步

    操作过程中 , 中引发的权限拷贝 , 或者权限提升 流程改变的现象(living amxsa管它叫做 session竞争)..... 现在我们带着 4维空间的思考模式 去分析这个过程!

    (模拟)

    A页面操作
    查询数据库
    设置session 模块=A
    查询数据库
    设置session 权限=1
    完成

    B页面操作
    查询数据库
    设置session 模块=B
    查询数据库
    设置session 权限=2
    完成


    一切很正常~
    但是当同用户并发到来的时候
    就有可能这样的操作

    A页面操作
    查询数据库
    设置session 模块=A
    系统时间片停止 把执行权交给B页面
    (
    B页面操作
    查询数据库
    设置session 模块=B
    查询数据库
    设置session 权限=2
    完成
    )
    继续A页面
    查询数据库
    设置session 权限=1
    完成

    大家看了吗?这样就是
    模块=B
    权限=1
    的出现了!

    如果大家熟悉数据库事务的话 一看就明白!违背了 原子性

    (解说)
    在这样的细微攻击地方 并不是什么WEB应用都会出现
    至少在ASP/ASPX上面不会因为他的核心处理方式不一样 , 页面处理session都是串行化的
    PHP的话在WIN环境下APACHE也不会发生这个问题!感谢 AMXSA LIVING协助测试
    PHP *NIX的大家可以回去测试


    但是在J2EE应用上面就刚刚好会出发这样的漏洞
    现在来讲讲 J2EE容器 接收请求实现模式

    首先J2EE容器启动被请求SERVLET(JSP也被翻译为SERVLET执行),OK当每一个请求到来的时候!J2EE容器会采用反射把

    请求采用多线程方式交给SERVLET的SERVICE方法处理

    请求 ---> J2EE容器 ---> SERVLET(SERVICE方法)

    而 HttpSession 是存储在 HttpServletRequest 里面的
    容器不一定有监控页面对session的操作是否加入LOCK 就造成这样的攻击

    (代码)
    session.jsp
    <%
    System.out.println(session);
    %>
    <a href="a.jsp" >A</a>
    <a href="b.jsp" >B</a>

    a.jsp
    <%
    session.setAttribute("id",5);
    out.println(session.getAttribute("id"));
    for(int i=0;i<=1000;i++){
     for(int j=0;j<=100;j++){
      System.out.println("");
     }
    }
    out.println(session.getAttribute("id"));
    %>

    b.jsp
    <%
    session.setAttribute("id",100);
    System.out.println(session);
    out.println(session.getAttribute("id"));
    %>

    大家可以先运行 session.jsp 然后 打开a.jsp 再打开 b.jsp ,很显然就能看到 a.jsp处理中途session给修改了!

    (攻击引申)
    以上只是一个 理论与演示,有可能实际中很少见到这样的事情!
    但是在开发J2EE应用的时候真得要注意!要不然以后肯定是J2EE攻击的重大隐患...

    例如
    论坛的斑竹权限被拷贝
    OA被权限被越过本来有邮件模块的权限现在给拷贝了有用户管理
    或者在处理过程中 因为session被改变而流程改变

      

    发表于 @ 2008年01月09日 16:37:00|评论(loading...)|编辑

    评论

    #mickey 发表于2008-01-10 17:11:07  IP: 221.223.226.*
    ...........
    真JB丢人,我PHP没帮你测出来,对不起.汗.
    #viking 发表于2008-01-15 21:02:20  IP: 59.51.78.*
    恩,不错``支持 ```
    #Mr.X 发表于2008-05-07 21:04:00  IP: 218.19.84.*
    纸上谈兵··一台浏览器有可能会同时被两个人用么?!
    #kj 发表于2008-05-07 21:12:48  IP: 60.176.178.*
    不是两个人用,是同一个人用,SESSION资源竞争而权限提升
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © Terminator:Skynet