利用DeepSeek进行java代码审计,好用!

admin 2025年2月10日19:50:42评论31 views字数 2531阅读8分26秒阅读模式

正文

(漏洞代码来源:Hello-Java-sec)
首先给大家放一段简单Java源码大家可以自行试试能否审计出漏洞:
publicstatic String processbuilderVul(String filepath)throws IOException {    String[] cmdList = {"sh""-c""ls -l " + filepath};ProcessBuilderpb=newProcessBuilder(cmdList);    pb.redirectErrorStream(true);Processprocess= pb.start();// 获取命令的输出    InputStream inputStream = process.getInputStream();    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));    String line;    StringBuilder output = new StringBuilder();    while ((line = reader.readLine()) != null) {        output.append(line).append("n");    }    return output.toString();}
行三可知利用ProcessBuilder调用行二中可以审到的ls命令进行查看文件,因为存在filepath参数,攻击者可在此拼接恶意代码进行攻击,接下来让我们看看DeepSeek的审计过程:
利用DeepSeek进行java代码审计,好用!
在审计过程中给予了我们具体的payload思路和多种利用方式,我们可以尝试DeepSeek的思路构建参数:
filepath=/tmp;id
我们使用;进行命令拼接,前半段他会正常执行代码中的ls命令读取查看/tmp随后因为我们使用特殊符号拼接了恶意命令所以执行完ls就会执行id:
利用DeepSeek进行java代码审计,好用!
DeepSeek还提供了多种的修复方式:
利用DeepSeek进行java代码审计,好用!
再来试试序列化代码:
publicStringcc(String base64) {try {        base64 = base64.replace(" ""+");        byte[] bytes = Base64.getDecoder().decode(base64);ByteArrayInputStream stream = newByteArrayInputStream(bytes);// 反序列化流,将序列化的原始数据恢复为对象        ObjectInputStream in = new ObjectInputStream(stream);        in.readObject();        in.close();        return "反序列化漏洞";    } catch (Exception e) {        return e.toString();    }}

java中的readObject可以读取输入,并且把它们转换对象,而ObjectInputStream.readObject()是将输入流中读取需要,再将其反序列为对象,这也就符合反序列化漏洞的特征,而要注意的就是代码中会把读取的输入用Base64解密,所以我们要构建payload时应是Base64加密的。

然后再一起看看DeepSeek的审计:

利用DeepSeek进行java代码审计,好用!

同样,DeepSeek漂亮的完成的审计工作,并且再次为我们提供了攻击思路和方法:

先生成payload:

利用DeepSeek进行java代码审计,好用!
?base64=rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABc3IADGphdmEubmV0LlVSTJYlNzYa/ORyAwAHSQAIaGFzaENvZGVJAARwb3J0TAAJYXV0aG9yaXR5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAEZmlsZXEAfgADTAAEaG9zdHEAfgADTAAIcHJvdG9jb2xxAH4AA0wAA3JlZnEAfgADeHD//////////3QAEDZraGRjby5kbnNsb2cuY250AABxAH4ABXQABGh0dHBweHQAF2h0dHA6Ly82a2hkY28uZG5zbG9nLmNueA==

随后执行看看效果:

利用DeepSeek进行java代码审计,好用!
利用DeepSeek进行java代码审计,好用!
利用DeepSeek进行java代码审计,好用!

最后给大家放一个未授权访问漏洞,也是我在实战中经常遇到的漏洞:

@OverridepublicvoidaddInterceptors(InterceptorRegistry registry) {    registry.addInterceptor(newLoginHandlerInterceptor())    .addPathPatterns("/**")    .excludePathPatterns("/vulnapi/unauth/**""/css/**""/js/**""/img/**");}

很简单的一段代码,由于代码对一些接口未做权限鉴别,所以我们可以通过这些未鉴权的接口访问未授权的信息。例如:/vulnapi/unauth。

DeepSeek审计:

利用DeepSeek进行java代码审计,好用!
构建payload:
/vulnapi/unauth/api/info
利用DeepSeek进行java代码审计,好用!

成功访问!

利用DeepSeek进行java代码审计,好用!

总结

  在此前笔者也用过许多星火,Chatgpt等等智能大模型,经过逐个迭代它们的代码审计能力也大幅提升,但如今DeepSeek横空出世,在使用时可以明显感受到的是DeepSeek所输出的内容更加细化,在使用星火写代码或是审计代码时它出现的最大的问题就是逻辑不清晰,所以需要我们花费更多时间去构建自己的语言让其理解我们的想法,但DeepSeek很好的优化了逻辑能力,大大缩减了我们在这上面所花费的时间,在使用时唯一感到不足的就是DeepSeek因为近期众所周知的攻击事件回复速度大幅增加,有很长一段时间还会处于超时状态,希望DeepSeek能早日度过难关让中国AI技术紧跟并领先世界先进水平!

原文始发于微信公众号(flower安全):利用DeepSeek进行java代码审计,好用!

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

发表评论

匿名网友 填写信息