对某系统的Java代码审计

admin 2021年11月14日11:00:50评论57 views字数 1175阅读3分55秒阅读模式

序言
偶然拿到一款基于Spring开发的建站系统,简单看了看Web.xml,发现Servlet前面存在一个全局安全过滤,然后得到路由为Controller/方法名.do,接着直接定位到Class文件中,下文主要介绍本次审计中发现的安全问题。


对某系统的Java代码审计


Xss
在XxxxxController.Class中


对某系统的Java代码审计


  • 关键代码如下:

    String callback = request.getParameter("callback");
    jsonStr = ";" + callback + "(" + result.toString() + ")";
    out.write(jsonStr);

    前端不经过任何过滤,直接通过Request.getParameter获取参数,Out.write输出到前端解析导致Xss漏洞。

  • 任意文件上传
    在XxxxxController.Class中


对某系统的Java代码审计


接着跟到module类的tipOffService.saveTipOff中


对某系统的Java代码审计


  • 可以看到没有对后缀存在任何过滤,导致任意文件上传。
    关键代码如下:

    String path2 = Utils.uploadFile(video, String.valueOf(hdjlPath) + "/tipOff/video");
    if (Utils.isNotNullOrEmpty(tipOff.getVideo())) {
    File file2 = new File(String.valueOf(SystemParamConfigUtil.getParamValueByParam("zdzyUploadPath")) + tipOff.getVideo());
    if (file2.exists()) {
    file2.delete();
    }
    }
    tipOff.setVideo(path2);
  • 逻辑漏洞(越权删除纠错信息)
    在XxxxxController.Class中,没有做权限校验,任意不信任的用户都可以调用此类


逻辑漏洞(越权删除纠错信息)
在XxxxxController.Class中,没有做权限校验,任意不信任的用户都可以调用此类


对某系统的Java代码审计


  • import cn.com.trueway.cms.core.dao.RecoveryDao;
    是数据库处理的包,这里传入的ID会到传入进Sql语句,不过当然程序员使用${id}防止了Sql注入。

    String sql = JdbcUtil.montageSql("select t.id,t.email,t.ip,t.phone,t.name,a.msg_title,c.column_name,s.site_name  from t_cms
  • 未授权访问
    在XxxxxController.Class中


对某系统的Java代码审计


取出所有管理员信息并且以xml的形式打印到Html页面


对某系统的Java代码审计


来源:先知社区


对某系统的Java代码审计

欢迎加群,一起学习!

对某系统的Java代码审计

如果群满了,欢迎加小浪,拉你入群

原文始发于微信公众号(衡阳信安):对某系统的Java代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月14日11:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   对某系统的Java代码审计https://cn-sec.com/archives/677202.html

发表评论

匿名网友 填写信息