配合静态代码审计工具,学习一下。
git clone https://github.com/JoyChou93/java-sec-code
cd java-sec-code
# 生成jar包
mvn clean package
修改配置文件src/main/resources/application.properties:
:
将数据库名,账号密码修改为mysql中有的。
参考:mysql最常用最基础的命令
# 调试模式运行
java -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=12346 -jar /home/cqq/repos/java-sec-code/target/java-sec-code-1.0.0.jar
然后在IDEA中远程调试。
文件上传
- 有对文件内容开头做校验;
public static boolean isImage(File file) throws IOException {
BufferedImage bi = ImageIO.read(file);
if (bi == null) {
return false;
}
return true;
}
- 有对上传文件后缀名做校验(白名单:{".jpg", “.png”, “.jpeg”, “.gif”, “.bmp”});
- 上传的图片会通过uuid生成一个’/tmp’ + uuid + '.png’这样的文件名,然后最后删除掉
通过路径穿越修改filename
参数../../../../../home/cqq/repos/java-sec-code/1.png
可以将带有jsp代码的图片上传到任意目录
如果放在tomcat目录下,可以让tomcat解析?
相应的代码在src/main/java/org/joychou/controller/FileUpload.java
: