Seikei's Blog

Java SpringBoot框架代码审计三 - SQL注入

SQL注入介绍

SQL注入是代审中最容易找的漏洞之一,一般都在固定的模块存放SQL语句,只需在这些SQL语句中搜寻是否拼接参数即可。

案例项目使用Mybatis作为数据持久层框架,进行数据库的各种操作。MyBatis的主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件当中,实现SQL的灵活配置。配置文件常存放在src/main/resources/mapper中,配置文件命名为ExampleMapper.xml

Read More...

Java SpringBoot框架代码审计一 - 前期准备

本系列文章使用SpringBoot+Mybaits的小型商城作为本次代码审计的目标,项目地址:https://github.com/newbee-ltd/newbee-mall

SpringBoot+Mybatis这套架构使用较为广泛,相比于SpringMVC,SpringBoot简化了很多配置,更易上手使用。并且该项目属于小型系统,程序逻辑较为简单,作者编码规范,搭建也非常方便,只需要配置数据库(MySQL)和商品图片资源,SpringBoot自带中间件,无需额外配置中间件,方便调试,代码中没看懂的逻辑,下断点上手调试非常便捷,非常适合新手入门代码审计。

Read More...

通过JS解开加密传输

JS解密过程

为了不泄漏信息,文章中存在打码,修改参数等脱敏措施,但解密的方法未变,可供参考。

很多app传输会对报文进行加密,并存在防篡改的签名机制,导致不能修改参数进行渗透测试,对于我不熟悉app逆向的人来说逆向app的成本比较高,这里介绍一种比较便捷的解密方式,就是通过js来解密请求。前提是需要这个app存在h5页面,并且h5页面的加密算法和app本身的加密算法一致。

某app的h5页面显示的链接是 https://app.xxx.com/function/#/pages/queryDetails?id=644626 这种类型的,URl中参数在#之后,这种样式的URL基本都是前后端分离的系统,也就是会通过JS会处理很多事务。

Read More...

使用Packet Filter将Mac热点中的流量转发到Burp

一般情况下,Burp抓手机APP的HTTP/HTTPS请求时可在系统代理或者VPN代理软件上设置代理服务器,但是部分APP存在代理检测,发现存在代理则退出应用,或是部分APP的请求不通过代理。此时可利用Packet Filter将手机流量转发到Burp代理上,避免以上情况发生,从而抓到请求包。

Read More...

Fastjson反序列化过程分析

本篇文章记录fastjson反序列化的过程,记录自己对fastjson反序列化本质原因的学习过程,不对各版本的绕过做详细分析,版本绕过的分析网络上已经存在很多文章对其进行了清晰的描写。

Read More...

Tomcat 8.5版本以上隐藏400报错信息

一个平时没注意过的问题。

从Tomcat 8.5版本开始,若URL中存在部分特殊字符,会产生400报错。本以为修复方法和其他404、5XX报错页面没什么不同,结果并不简单。因为这个400报错是由于Tomcat无法解析字符导致的报错,并不通过代码层面,所以一般的错误页面自定义配置就会失效。

Read More...

理解Java反序列化-ysoserial URLDNS

目前网上绝大部分 Java 反序列化漏洞文章都以 CommonsCollections 这条利用链作为教程,这条利用链其实特别复杂,用 CommonsCollections 作为 Java 反序列化入门教程未免太过硬核。

想要利用「不安全的反序列化」漏洞,就需要看被反序列化的类的 readObject() 是怎么写的。通常 Java 反序列化类中的 readObject() 方法很少会被重写,这也就是为什么「不安全的反序列化」利用链一般都只出现在通用 jar 包中。大部分反序列化的利用链较为复杂,甚至还需要多种 Java 特性来配合,比如反射、动态代理、JNDI注入等等,光了解这些特性就要花上不少时间。

这里通过 URLDNS 作为利用链来学习 Java 反序列化就会简单很多。

Read More...

WebGoat - 不安全的反序列化

Webgoat有一道不安全反序列化的题,如下:

webgoat-insecure-deserialization.png

最初看到这题有点迷茫,不知道该怎么下手,正是迷茫才能从中学到反序列。从网上找了一些文章,自己也动手完全整了一遍,在此记录。

Read More...