javaweb代码审计思路
前言:
介绍:
博主:网络安全领域狂热爱好者。
殊荣:华为云博主、CSDN网络安全领域优质创作者(CSDN:黑色地带(崛起)),2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。
擅长:对于技术、工具、漏洞原理、黑产打击的研究。
导读:
面向读者:对于网络安全方面的学者。
本文知识点:
(1)框架-组件-依赖库-过滤器(√)
(2)SQL注入(√)
(3)安全验证(√)
(4)常规漏洞(√)
(5)审计工具(√)
一、框架-组件-依赖库-过滤器
1、框架-组件-依赖库
通过了解了开发的框架以及组件以后,可以扩大攻击面
查看配置文件web.xml和外部引用库,确定当前引用框架名称和版本
通过获取的版本等,对比漏洞库
2、过滤器
过滤器专门设置了针对SQL注入、XSS等拦截
通过对过滤器分析,可以知道过滤规则,以及可以最终筛选出未使用过滤器的URL
(也可以搜索关键字定位过滤器)
二、SQL注入
(数据库模式--->sql语句的写法--->函数--->类--->调用层次)
1、JDBC 注入
全称:Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作
2、Mybatis注入
使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
搜索xml查找关键点(如${)--->反推到DAO--->到实现类--->通过调用链找到前台URL--->找到利用点
3、Hibernate注入
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任
三、安全验证
1、验证框架
2、代码验证
这就得抓包,并结合反编译对验证代码进行审计了
3、过滤器
过滤器的绕过、过滤器未引用
无非就是绕过if等判断语句
4、JWT加密
对于身份等重要的信息可能会使用JWT加密(在不知道密钥的情况下,黑盒很难利用)
JWT是三段式,在cookie中一眼就能看出加密后生成的token
(header.payload.signature)
四、常规漏洞
1、代码、函数执行
1、可执行函数(如exec()等),搞清楚传递过程,是否用户可控
2、表达式注入(一般是参数值,不过有的也有极少的是参数名,一般会有检测,如OGNL、SpEL、MVEL、EL、Fel、JST+EL等)
3、后端模板引擎注入(如Freemarker、Velocity、Thymeleaf等)
4、第三方开源组件(如Fastjson、Shiro、Xstream、Struts2)
2、SSTI
源码:在pom.xml里面找使用有模版引擎,如freemarker
前端:寻找修改模块的功能点
3、SSRF
4、XXE
5、反序列化
序列化使用的地方:
1、参数,cookie,sesion,存储时候可能会base64,压缩后的base64、MII等加密
2、Servlets http,Sockets,Session管理器(包含的协议:JMX,RMI,JMS,JND1等)
3、xmlXstream,XmldEcoder等(http Body:Content-type: application/xml)
4、json(jackson,fastjson)http请求中包含
框架组件:fastjson,shiro,jackson,CommonsCollections等
利用工具:
jndi:可用于Fastjson、Jackson等验证
ysoserial:支持多种引用库生成的payload
marshalsec:可以快速启动rmi/ldap server
FastjsonExploit:专门针对fastjson的exp框架
五、审计工具
Fortify、CheckMarx、Findbugs、PMD等
- 点赞
- 收藏
- 关注作者
评论(0)