某java客服系统后续代码审计

admin 2023年6月16日09:04:30评论70 views字数 1442阅读4分48秒阅读模式

就是某个BC系统的客服,在实战过程中找出了heapdump泄露,任意文件读取,SSRF,SQL注入,fastjson反序列化。漏洞挺多的,继续审。


filter反序列化

 

需登录客服后台。

/apps/contacts/dis

打开这个页面,F12就很容易发现此页面和反序列化有关

某java客服系统后续代码审计

filter=rO0A,很明显的序列化流base64头,看代码

    public ModelAndView dis(ModelMap map, HttpServletRequest request, @Valid String itemid, @Valid String ckind, @Valid String[] ids, @Valid String size, @Valid String filter, @Valid String organ) throws JsonParseException, JsonMappingException, IOException {_________________________   if (!StringUtils.isBlank(filter)) {      String filterstr = (String)UKTools.decode(filter.replaceAll(" ", "+"), String.class);      ObjectMapper objectMapper = new ObjectMapper();      FilterCriteria filterCriteria = (FilterCriteria)objectMapper.readValue(filterstr, FilterCriteria.class);      if (filterCriteria != null) {        filterCriteria.setContactsids((ids != null && ids.length > 0) ? Arrays.<String>asList(ids) : null);        map.addAttribute("filter", UKTools.encode(UKTools.toJson(filterCriteria)));      } 

跟进UKTools.decode()

  public static <T> T decode(String str, Class<T> clazz) {    Base64 base64 = new Base64();    try {      return (T)toObject(base64.decode(str));    } catch (Exception e) {      e.printStackTrace();      return null;    }   }

跟进toObject()

  public static Object toObject(byte[] data) throws Exception {    ByteArrayInputStream input = new ByteArrayInputStream(data);    ObjectInputStream objectInput = new ObjectInputStream(input);    return objectInput.readObject();  }

因此只需要构造/apps/contacts/dis?filter=URLDNS+base64即可。

一般情况这里需要将base64中的加号替换为%2B,但有段代码很贴心的帮我们把空格替换为加号了,所以就不用了。

某java客服系统后续代码审计

同类下的其他很多接口都有此问题,搜UKTools.decode即可。


原文始发于微信公众号(珂技知识分享):某java客服系统后续代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月16日09:04:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某java客服系统后续代码审计http://cn-sec.com/archives/786523.html

发表评论

匿名网友 填写信息