前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看一名Java开发以红队思维五分钟审计一套代码

看一名Java开发以红队思维五分钟审计一套代码

作者头像
天钧
发布2020-11-03 15:12:44
6580
发布2020-11-03 15:12:44
举报
文章被收录于专栏:渗透云笔记渗透云笔记

前言

审计往往需要开发的功底,既站在开发的角度又站在渗透者的角度。这样的角度去审视问题时,往往意味着渗透者比开发更懂业务逻辑,才能找出开发者代码中存在的问题。

概述

Java一直是渗透测试中的一块硬骨头,相比其他语言算是比较难啃。下面的文章将从Java漏洞出现的位置从审计的角度出发,深入了解JavaWeb渗透。

准备工作

众所周知,IntelliJ Idea 一直深受Java开发者的喜爱,他以丰富的扩展插件,无处不在的代码提示提高了开发者的效率,但其对于我们的渗透人员来说也是一把“利器”。打开我们事先准备好的Idea。

由于拿公司项目演示更具有实战意义,所以将项目名称,企业名称多地打码,希望理解~

持久层审计

Java经常出现的架构模式为数据交互层(持久层),业务逻辑层,接口调用层三层。各层之间负责各自事情,互不干涉,这也增加了程序的解耦性。持久层即为和数据库交互层,开发者通常将sql的编写放入在此层。

存在sql的地方就可能存在sql注入,而防御sql注入的典型技术应当是“预编译”技术。随着企业级开发的到来,框架的产生也如约而至。目前市场主流的持久层开发框架为“mybatis”,他是一个ORM映射框架,这里不再赘述它的概念,这套框架在持久层做出来防止sql注入的“手段”。

上图指出了两句sql的不同,相信你也发现了。这就是sql注入产生的地方,mybatis在入参的地方提供了两种方式,“#{}”和“{}”.他们的区别就在于我上文提到的预编译技术,#{} 采用了预编译的技术不存在sql注入,而使用 {} 为了拼接sql,从而产生了sql注入。

因此总结持久层审计,我们直接使用idea快捷键全局搜索Ctrl+Shift+R,然后输入 “${”

直接找出所有存在sql注入的语句。

中间件审计

众所周知,在JavaWeb早期版本中,如果使用其他官方提供的jar文件需要手动将jar复制到项目lib目录下,假设使用中间件太多的情况下,极大的增加了维护成本。后来为了解决此问题,Apache编写了Maven这个工具,减少了开发成本,也给后期项目维护轻松埋下了伏笔。

这里详细的记录着这个项目用着哪些中间件,并且他们的版本是多少。想必我说到这里老司机们都已经明白了吧。

这里需要读者经常记忆一些经常产生漏洞中间件,以便在审阅pom.xml时快速找出漏洞,例如Java常用的shiro,redis,fastjson等等。

因此总结中间件漏洞,直接打开pom.xml文件翻阅其所使用的中间件,然后反手就是将名称和版本号带入搜索引擎当中就是一顿爆找。

后续

在我上文讲到持久层时,如果全文都仔细阅读下来的同学一定会有疑问。开文我便声明这是公司真正的项目,为了给大家带来真正的实战体验,那我既然在我的持久层找到了 “${}”,是我在给公司留后门嘛?其实不然,且听我细细道来。

预编译是解决sql注入最有效的办法,但不是唯一一种办法,虽然其他方法可能存在被绕过风险,但是要承认的是,只要足够细心,就会在防御时做出效果。下面看我的骚操作

没错,springMvc提供了一套访问的执行链,在请求进入程序之前,用户可以配置过滤器,对请求参数进行过滤,拦截非法参数。这里我采用了“正则表达式”,也就是sql注入的克星。在请求参数进来时我首先采用正则表达式匹配参数,是否存在非法参数。

但是这么做,一定几率存在着被绕过的风险。但至少说明了预编译不是防止sql注入的唯一办法。

所以读者朋友就不要妄想找到我的项目,然后进行一番渗透了。我也不是好欺负的哦,哼唧~

结尾

由于文章篇幅的原因,这篇文章我只能讲到持久层和中间件的审计,但是提供给读者的快速审计方法相信能起到作用。在接下来的文章中,我会继续分享审计逻辑漏洞,业务漏洞,前端漏洞。以及源码级免杀,更多的精彩内容即将为您揭晓,希望读者能给作者一定的鼓励,让一位开发走下去。

本文来源于作者投稿,原文在下面哦

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概述
  • 准备工作
  • 持久层审计
    • 因此总结持久层审计,我们直接使用idea快捷键全局搜索Ctrl+Shift+R,然后输入 “${”
    • 中间件审计
      • 因此总结中间件漏洞,直接打开pom.xml文件翻阅其所使用的中间件,然后反手就是将名称和版本号带入搜索引擎当中就是一顿爆找。
      • 后续
        • 在我上文讲到持久层时,如果全文都仔细阅读下来的同学一定会有疑问。开文我便声明这是公司真正的项目,为了给大家带来真正的实战体验,那我既然在我的持久层找到了 “${}”,是我在给公司留后门嘛?其实不然,且听我细细道来。
        • 结尾
        相关产品与服务
        消息队列 TDMQ
        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档