[代码审计]记一次简单的java代码审计

admin 2024年7月26日16:00:46评论24 views字数 909阅读3分1秒阅读模式

免责声明

本公众号所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的一切不良后果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立即删除并致歉。

前言

记录一次极其简单的代码审计,技术含量较低,适合代码审计小白观看,不喜勿喷

利用工具

https://github.com/webraybtl/CodeQLpy

第一步:生成数据库初始化,-t指定代码根目录,-c表示为编译后代码,不指定-c表示为.java代码。

python .main.py -t D:codeSourceCodexxxxROOT -c

[代码审计]记一次简单的java代码审计

第二步:生成数据库,这一步直接使用上一步命令最终返回的生成数据库的命令在cmd/bash环境中运行即可。

[代码审计]记一次简单的java代码审计

codeql database create out/database/ROOT --language=java --command="D:toolsCodeAuditCodeQLpyoutdecode/run.cmd" --overwrite

[代码审计]记一次简单的java代码审计

第三步:开始扫描,运行完成之后最终会返回结果文件,结果文件是csv文件,保存目录在out/result/目录之下。

python .main.py -d D:toolsCodeAuditCodeQLpyoutdatabaseROOT

[代码审计]记一次简单的java代码审计

[代码审计]记一次简单的java代码审计

生成的csv文件。

[代码审计]记一次简单的java代码审计

代码审计与漏洞利用

查看生成的csv结果文件,发现有FileWrite,排除掉jsp文件后,可以看到很明显给出了漏洞代码所在类与方法。

[代码审计]记一次简单的java代码审计

定位到漏洞代码位置之后,发现逻辑很简单,就是获取表单中名称为imgFile的文件,最终将上传的文件保存在 /pages/uploads/目录下,期间没有对上传的文件的后缀做校验。

[代码审计]记一次简单的java代码审计

构造poc上传文件发现报错提示:java.io.ByteArrayInputStream cannot be cast to java.io.FileInputStream

[代码审计]记一次简单的java代码审计

类型转换错误,经过搜索后发现是因为文件大小不同时,返回类型不同的问题。

[代码审计]记一次简单的java代码审计

根据描述,我们只要将上传的文件内容写的大一点就行了。

[代码审计]记一次简单的java代码审计

原文始发于微信公众号(良月安全):[代码审计]记一次简单的java代码审计

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月26日16:00:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [代码审计]记一次简单的java代码审计https://cn-sec.com/archives/3000824.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息