SQL注入介绍
SQL注入是代审中最容易找的漏洞之一,一般都在固定的模块存放SQL语句,只需在这些SQL语句中搜寻是否拼接参数即可。
案例项目使用Mybatis作为数据持久层框架,进行数据库的各种操作。MyBatis的主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件当中,实现SQL的灵活配置。配置文件常存放在src/main/resources/mapper
中,配置文件命名为ExampleMapper.xml
SQL注入是代审中最容易找的漏洞之一,一般都在固定的模块存放SQL语句,只需在这些SQL语句中搜寻是否拼接参数即可。
案例项目使用Mybatis作为数据持久层框架,进行数据库的各种操作。MyBatis的主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件当中,实现SQL的灵活配置。配置文件常存放在src/main/resources/mapper
中,配置文件命名为ExampleMapper.xml
本系列文章使用SpringBoot+Mybaits的小型商城作为本次代码审计的目标,项目地址:https://github.com/newbee-ltd/newbee-mall
SpringBoot+Mybatis这套架构使用较为广泛,相比于SpringMVC,SpringBoot简化了很多配置,更易上手使用。并且该项目属于小型系统,程序逻辑较为简单,作者编码规范,搭建也非常方便,只需要配置数据库(MySQL)和商品图片资源,SpringBoot自带中间件,无需额外配置中间件,方便调试,代码中没看懂的逻辑,下断点上手调试非常便捷,非常适合新手入门代码审计。
Read More...为了不泄漏信息,文章中存在打码,修改参数等脱敏措施,但解密的方法未变,可供参考。
很多app传输会对报文进行加密,并存在防篡改的签名机制,导致不能修改参数进行渗透测试,对于我不熟悉app逆向的人来说逆向app的成本比较高,这里介绍一种比较便捷的解密方式,就是通过js来解密请求。前提是需要这个app存在h5页面,并且h5页面的加密算法和app本身的加密算法一致。
某app的h5页面显示的链接是 https://app.xxx.com/function/#/pages/queryDetails?id=644626 这种类型的,URl中参数在#
之后,这种样式的URL基本都是前后端分离的系统,也就是会通过JS会处理很多事务。
一般情况下,Burp抓手机APP的HTTP/HTTPS请求时可在系统代理或者VPN代理软件上设置代理服务器,但是部分APP存在代理检测,发现存在代理则退出应用,或是部分APP的请求不通过代理。此时可利用Packet Filter将手机流量转发到Burp代理上,避免以上情况发生,从而抓到请求包。
Read More...在 https://checkra.in/#release 中下载,其中能越狱的设备有iPhone 5s – iPhone X, iOS 12.3 and up
我的设备是iPhone SE(A9),iOS版本12.4
Read More...Read More...本篇文章记录fastjson反序列化的过程,记录自己对fastjson反序列化本质原因的学习过程,不对各版本的绕过做详细分析,版本绕过的分析网络上已经存在很多文章对其进行了清晰的描写。
一个平时没注意过的问题。
从Tomcat 8.5版本开始,若URL中存在部分特殊字符,会产生400报错。本以为修复方法和其他404、5XX报错页面没什么不同,结果并不简单。因为这个400报错是由于Tomcat无法解析字符导致的报错,并不通过代码层面,所以一般的错误页面自定义配置就会失效。
Read More...目前网上绝大部分 Java 反序列化漏洞文章都以 CommonsCollections
这条利用链作为教程,这条利用链其实特别复杂,用 CommonsCollections
作为 Java 反序列化入门教程未免太过硬核。
想要利用「不安全的反序列化」漏洞,就需要看被反序列化的类的 readObject()
是怎么写的。通常 Java 反序列化类中的 readObject()
方法很少会被重写,这也就是为什么「不安全的反序列化」利用链一般都只出现在通用 jar 包中。大部分反序列化的利用链较为复杂,甚至还需要多种 Java 特性来配合,比如反射、动态代理、JNDI注入等等,光了解这些特性就要花上不少时间。
这里通过 URLDNS 作为利用链来学习 Java 反序列化就会简单很多。
Read More...