Java代码审计连载之—添油加醋
在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下。如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS、SQL注入、命令执行……等等,逆向查找变量能够快速定位漏洞是否存在,本次已SQL注入为例。
前言
本篇文章原本是个PPT,但是一直放着没有分享,想着闲着也是闲着,那就改成文章发布吧。其实本篇重点在于两个知识点,一个是代码审计的逆向思维,另一个是二次攻击漏洞,其他的我都省略了,就写几个重要的吧。对于二次攻击我也是最近才研究的,研究了点皮毛,错误之处还请广大圈友指正,谢谢。
代码审计学习之旅
总有人问我代码审计该怎么学习,该从哪学习,现在统一回复,表示我也不知道。。。

但是对于个人的学习路线来说,路程是漫长而艰辛的,建议学习如下(直接截图了):

上面我写的是“熟悉”,这只是对刚入行的同学说的,作为代码审计来说,熟练编写代码程序是必须的,要想深度化发展,精通一门语言是必经之路。
知识一-变量逆向跟踪
在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下。如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS、SQL注入、命令执行……等等,逆向查找变量能够快速定位漏洞是否存在,本次已SQL注入为例。
什么是逆向跟踪 顾名思义,逆向跟踪就是对变量的逆向查找,开始全局查找出可能存在漏洞的触发点,然后回溯参数到前端,查看参数来源已经参数传递过程中的处理过程。
逆向跟踪流程 怎样才能快速定位呢?下面我们一起看下流程。
1、 查看全局文件web.xml

Web.xml主要是配置web项目启动时加载的信息,比如<listener/>配置你的监听器,<filter/>配置过滤器,<servlet/>配置你的servlet实现。我们主要查看全局过滤器是否过滤特殊字符已经过滤哪些字符,显然没有。
2、 寻找漏洞触发点
本次以SQL注入为例,SQL注入我就不说了,相关文档一堆。当我们看到如下形势的SQL语句,就可能存在SQL注入:

因为安全的写法是这样的:

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

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

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

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

知识二-二次漏洞审计
二次漏洞也叫二次攻击,这方面的资料网上很少,我自己研究了一阵子,发现二次攻击形势有很多,也没明白多少,这次就谈谈容易明白的二次命令攻击漏洞,不喜勿喷。
二次漏洞定义:
攻击者提交的恶意的代码不是直接通过一个变量提交漏洞函数而是通过变量转化或者中转,最终提交到漏洞函数。
二次漏洞特点:
1、常常存在漏洞类型的转换。
2、常常存在变量中转。
二次漏洞类型:
1、通过SQL注射漏洞转化。
2、通过编码/解码中转变量。
3、其它方式。
二次命令攻击
二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。
基本流程如下:

1、 构造参数
在数据库正常的插入、更新等操作中,构造特殊的命令,存储在数据库中:

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

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

经过Runtime函数,执行命令执行:

看到这里肯定有人一脸懵逼,精明的小伙伴就看出问题了,这二次攻击不是和存储型跨站一样么,没啥区别啊?
然而严格来说存储型跨站并不属于二次攻击漏洞,存储型跨站虽然也是以数据库作为中转,但是它执行的方式还是靠人为去点击才能生效,但是二次攻击是存储后主动攻击,这就是根本的区别。
结论
上面两点纯属个人理解,有什么错误的地方请多多指教。
Java代码审计连载之—添油加醋的更多相关文章
- Java代码审计连载之—SQL注入
前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java ...
- 【代码审计】JAVA代码审计
分享一些Java安全相关文章,其中大部分都涉及到代码的分析与审计. 大家总是在找Java的代码审计的文章,但好像很多人选择性失明. 其实Java没有和PHP一样的简单,所以你觉得你看到的文章不是入门级 ...
- java代码审计中的一些常见漏洞及其特征函数
文章来源:https://xz.aliyun.com/t/1633 最近在先知上看到之前有篇关于java代码审计的文章总结的蛮好,记录以下特征函数,方便查阅,同时自己也会将在平时代码审计过程中积累的函 ...
- Java代码审计入门篇
作者:i春秋核心白帽yanzmi 原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html 本期斗哥带来Java代码审计的一些环境和工具准备. Java这 ...
- java代码审计文章集合
0x00 前言 java代码审计相关文章整理,持续更新. 0x01 java环境基础 搭建Java Web开发环境 配置IDEA编辑器开发java web,从0创建项目 IDEA动态调试 ...
- [代码审计]某租车系统JAVA代码审计[前台sql注入]
0x00 前言 艰难徘徊这么久,终于迈出第一步,畏畏缩缩是阻碍大多数人前进的绊脚石,共勉. 系统是租车系统,这个系统是Adog师傅之前发在freebuf(http://www.freebuf.com/ ...
- ref:JAVA代码审计的一些Tips(附脚本)
ref:https://xz.aliyun.com/t/1633/ JAVA代码审计的一些Tips(附脚本) 概述 本文重点介绍JAVA安全编码与代码审计基础知识,会以漏洞及安全编码示例的方式介绍JA ...
- Java代码审计-铁人下载系统
初学 java 代码审计,跟着表哥们脚步,走一遍审计流程,就选了个没有使用 Java 框架的 java 系统,作为入门. 目的是为了熟悉代码审计流程,寻找漏洞的思路,入门记录. 准备工作 为了验证审计 ...
- java代码审计的点
java代码审计的点 组件的审计 首先看pom.xml查看第三方组件和第三方组件的版本 常用的第三方组件: 第三方组件 漏洞类型 组件漏洞版本 log4j2 远程代码执行 Apache log4j2 ...
随机推荐
- python入门之文件处理
1.读取文件 f=open(file="C:\BiZhi\新建文本文档.txt",mode="r",encoding="utf-8") da ...
- Android音频系统之AudioFlinger(三)
http://blog.csdn.net/xuesen_lin/article/details/8805091 1.1.1 PlaybackThread的循环主体 当一个PlaybackThread进 ...
- Linux常见目录使用区别
/bin 在有的Unix和Linux系统中是/usr/bin的链接,不过UBuntu系统是两个独立的目录./bin 存放系统管理员和普通用户都要使用的程序. /sbin 存放用于系统恢复,系统启动,系 ...
- Oracle导入的常见语句
登录sql > sqlplus / as sysdba 创建表空间sql > create tablespace TABLESPACE datafile 'e:\tables1.dbf' ...
- 应用整合CAS服务器方法
概要 在开发WEB程序时需要整合CAS实现单点登录,下面介绍一下应用整合CAS服务器的过程. 在开始之前,我们确定CAS服务器已经搭建完毕. 实现步骤 1.新建一个maven项目,引入casclien ...
- 微信小程序设置全局字体
微信小程序设置全局css,需要在app.wxss文件中设置page的样式 page { font-family:"PingFangSC-Thin"; font-size:32rpx ...
- nullptr(c++11)
1.概念 用字面值常量nullptr来初始化或赋值来得到空指针 2.c++11之前使用NULL或0 1)NULL是一个宏定义(预处理变量),定义在cstdlib中,其值就是0:对于预处理变量,预处理器 ...
- zk可视化工具
也是无意中接触到zk,搞得有点头大,之前都是通过crt连通服务后,在服务上通过命令去查看节点下的数据的,十分的不方便,后来发现了可视化工具这玩意儿还真的是好用,看节啊点下的数据啥的一目了然,我用过的有 ...
- ajax 简单实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script> ...
- 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
好文原文地址:http://segmentfault.com/a/1190000000354555 本文将首先介绍grunt-markdown插件如何配合HTML模板使用,接着我将介绍如何使用grun ...