用户
搜索
  • TA的每日心情
    郁闷
    2017-4-25 14:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    6

    主题

    69

    帖子

    192

    魔法币
    收听
    0
    粉丝
    4
    注册时间
    2017-4-25

    i春秋签约作者

    发表于 2017-8-2 16:07:52 145464
    本文原创作者:黑客小平哥,本文属i春秋原创奖励计划,未经许可禁止转载!

    Java代码审计连载之—添油加醋

    前言
    本篇文章原本是个PPT,但是一直放着没有分享,想着闲着也是闲着,那就改成文章发布吧。其实本篇重点在于两个知识点,一个是代码审计的逆向思维,另一个是二次攻击漏洞,其他的我都省略了,就写几个重要的吧。对于二次攻击我也是最近才研究的,研究了点皮毛,错误之处还请广大圈友指正,谢谢。

    代码审计学习之旅
    总有人问我代码审计该怎么学习,该从哪学习,现在统一回复,表示我也不知道。。。
    20161003102715_uEPJG.jpeg
    但是对于个人的学习路线来说,路程是漫长而艰辛的,建议学习如下(直接截图了):
    1.png
    上面我写的是“熟悉”,这只是对刚入行的同学说的,作为代码审计来说,熟练编写代码程序是必须的,要想深度化发展,精通一门语言是必经之路。
    知识一-变量逆向跟踪
    在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下。如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS、SQL注入、命令执行……等等,逆向查找变量能够快速定位漏洞是否存在,本次已SQL注入为例。

    什么是逆向跟踪
    顾名思义,逆向跟踪就是对变量的逆向查找,开始全局查找出可能存在漏洞的触发点,然后回溯参数到前端,查看参数来源已经参数传递过程中的处理过程。

    逆向跟踪流程
    怎样才能快速定位呢?下面我们一起看下流程。

    1、     查看全局文件web.xml
    2.png
    Web.xml主要是配置web项目启动时加载的信息,比如<listener/>配置你的监听器,<filter/>配置过滤器,<servlet/>配置你的servlet实现。我们主要查看全局过滤器是否过滤特殊字符已经过滤哪些字符,显然没有。

    2、     寻找漏洞触发点
    本次以SQL注入为例,SQL注入我就不说了,相关文档一堆。当我们看到如下形势的SQL语句,就可能存在SQL注入:
    3.png

    因为安全的写法是这样的:
    4.png

    那么,参数“word”可能存在SQL注入漏洞,那我们就回溯“word”参数,看看“word”值到底是怎么传进来的,回溯到控制层,发现该“word”参数:
    5.png

    追踪到控制层基本可以确定漏洞存在,并且没有做相应的过滤,但是为防止“search”方法只是内部调用,继续回溯“searchword”值,查看是否从前端页面传入的:
    6.png

    发现该“searchword”是从前端页面传入,因此可以确定漏洞存在,SQLmap截图如下:
    7.png

    以上就是简单的逆向跟踪变量小技巧,什么?太low?没办法,就这水平。
    8.jpeg

    知识二-二次漏洞审计
    二次漏洞也叫二次攻击,这方面的资料网上很少,我自己研究了一阵子,发现二次攻击形势有很多,也没明白多少,这次就谈谈容易明白的二次命令攻击漏洞,不喜勿喷。

    二次漏洞定义:
    攻击者提交的恶意的代码不是直接通过一个变量提交漏洞函数而是通过变量转化或者中转,最终提交到漏洞函数。

    二次漏洞特点:
    1、常常存在漏洞类型的转换。
    2、常常存在变量中转。

    二次漏洞类型:
    1、通过SQL注射漏洞转化。
    2、通过编码/解码中转变量。
    3、其它方式。

    二次命令攻击
    二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。

    基本流程如下:
    9.png
    1、     构造参数
    在数据库正常的插入、更新等操作中,构造特殊的命令,存储在数据库中:
    10.png

    此处只是方便展示漏洞原理,真实代码中的情况可能复杂的多,此处构造了“cmd”参数为“ipconfig”存储在数据库中。
    11.png

    2、     提取变量
    当系统内部某处主动调用该参数时,经过了相对应的命令执行参数,就会产生命令攻击。
    12.png

    经过Runtime函数,执行命令执行:
    13.png

    看到这里肯定有人一脸懵逼,精明的小伙伴就看出问题了,这二次攻击不是和存储型跨站一样么,没啥区别啊?
    e824b899a9014c089a733557087b02087af4f4fc.jpg.png

    然而严格来说存储型跨站并不属于二次攻击漏洞,存储型跨站虽然也是以数据库作为中转,但是它执行的方式还是靠人为去点击才能生效,但是二次攻击是存储后主动攻击,这就是根本的区别。

    结论
    上面两点纯属个人理解,有什么错误的地方请多多指教,反正我也不改。
    14.jpg


    本帖被以下淘专辑推荐:

    阿甫哥哥 管理员 i春秋最帅男神-阿甫大哥哥 楚 核心白帽 i春秋签约作者 白帽传说 春秋游侠 秦 燕 魏
    来自 14#
    发表于 2017-8-17 22:25:36
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    100
    逻辑很清晰,排版也不错,期待下次连载


    Time will give me the answer
    使用道具 举报 回复
    6666666666666666
    来啊~快活啊~
    使用道具 举报 回复
    厉害,向大佬低头
    使用道具 举报 回复
    发表于 2017-8-3 17:16:07
    66666666666666666
    使用道具 举报 回复
    发表于 2017-8-4 14:29:09
    6666666666666666666666
    使用道具 举报 回复
    发表于 2017-8-7 11:09:04
    现实情况复杂多了,
    使用道具 举报 回复
    bma_china 发表于 2017-8-7 11:09
    现实情况复杂多了,

    那肯定了,这只是个简单的例子而已
    使用道具 举报 回复
    发表于 2017-8-8 01:10:58
    阿斯顿噶士大夫但是s'd'f
    使用道具 举报 回复
    发表于 2017-8-13 09:40:18
    图里为什么是htnl
    使用道具 举报 回复
    Gara404 发表于 2017-8-13 09:40
    图里为什么是htnl

    哪有html
    使用道具 举报 回复
    发表于 2017-8-16 08:50:58

    审计学习之路那个图里
    熟悉基本的开发语言,如:Java、mysql、<htnl>html、js、jsp
    使用道具 举报 回复
    发表于 2017-8-16 14:42:48
    看看二次漏洞到底是怎么回事
    使用道具 举报 回复
    发表于 2017-8-17 16:57:15
    反正他也不改,
    使用道具 举报 回复
    喧嚣如梦 i春秋-核心白帽 行动比空谈更具有说服力! 核心白帽 积极活跃奖
    14#
    发表于 2017-9-1 18:01:08
    十年王者无人闻 一朝瓜皮天下知。
    行动比空谈更具有说服力!
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册