Back to homeSample report, read-only. NearTest is a fictional demo client.Download sample PDF
ARAMON
Security Assessment
PENETRATION
TEST REPORT
NearTest
CONFIDENTIAL
Auditor
Anas Magane
Assessment Window
2026-08-10 - 2026-08-14
Report Date
2026-08-20
Knowledge / Practice / Impact

01 EXECUTIVE SUMMARY

Aramon carried out a gray-box security assessment of the NearTest web application over a five-day engagement. Testing focused on authentication, authorization and session handling across the customer-facing application and its administrative console. Two critical and two high-severity findings allow an authenticated standard user to reach administrative functionality, and are the priority for remediation.

2
CRITICAL
2
HIGH
3
MEDIUM
1
LOW
4
INFO

02 SUMMARY OF VULNERABILITIES

The table below presents the vulnerabilities detected during the mission.

IDSeverityCVSSFindingScope
C-01CRITICAL9.0Stored Cross-Site Scripting Leading to Administrative Session CompromisePOST /api/support/tickets/attachment
C-02CRITICAL9.9Broken Authorization Allowing Administrative Account TakeoverPOST /api/admin/users/promote
H-01HIGH7.1Insecure Direct Object Reference Exposing Customer RecordsGET /api/customers/{id}/invoices
H-02HIGH8.1Missing Server-Side Authorization on Administrative ActionsDELETE /api/admin/content/{id}
M-01MEDIUM5.3Username Enumeration in Password RecoveryPOST /api/auth/forgot-password
M-02MEDIUM6.5Cross-Site Request Forgery on Sensitive Account ActionPOST /api/account/email
M-03MEDIUM5.3Verbose Application Errors Exposing Internal PathsVarious endpoints
L-01LOW3.1Weak Password Policy EnforcementPOST /api/auth/register
I-01INFO0.0Web Server Version DisclosureGlobal
I-02INFO0.0Missing Recommended Security HeadersGlobal
I-03INFO0.0Technology Stack DisclosureGlobal
I-04INFO0.0Publicly Accessible Non-Sensitive Diagnostic EndpointGET /health

03 SCOPE OF THE MISSION

Assess the security posture of the NearTest web application and its supporting API from the perspective of an authenticated standard user, with emphasis on access control between user roles.

Asset / URL / IPDescriptionNotes
https://app.neartest.ioCustomer-facing web application—
https://api.neartest.ioApplication API—
https://admin.neartest.ioAdministrative console—

04 RULES OF ENGAGEMENT

Start2026-08-10
End2026-08-14
Report delivery2026-08-20

05 PENTESTING METHODOLOGY

The assessment followed a standard web application testing methodology covering reconnaissance, authentication and session testing, authorization and access control testing, input validation, and configuration review, aligned with the OWASP Web Security Testing Guide.

06 EVALUATION CRITERIA & CVSS

The report uses CVSS v3.1. The Aramon display convention maps a 0.0 score to INFO for reporting, while official CVSS terminology calls this None.

CRITICAL 9.0 - 10.0
HIGH 7.0 - 8.9
MEDIUM 4.0 - 6.9
LOW 0.1 - 3.9
INFO 0.0

07 VULNERABILITY DETAILS

The following section reproduces each finding with its CVSS vector, evidence, impact, and remediation guidance.

C-01
Stored Cross-Site Scripting Leading to Administrative Session Compromise
9.0
CRITICAL
Component / AssetSupport ticket attachments
ScopePOST /api/support/tickets/attachment
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
Description

The support ticket attachment feature accepts HTML and SVG uploads without validating their content type. A standard user can attach a file containing JavaScript that executes in an administrator's browser when the ticket is opened, in the security context of the application.

Steps to Reproduce
Step 1:

Create a support ticket as a standard user and attach a crafted HTML file containing a JavaScript payload.

Step 2:

Wait for an administrator to open the ticket from the admin console.

Step 3:

The payload executes in the administrator's session and sends the session cookie to an external endpoint.

Impact

An attacker with a standard account can hijack an administrator's session and gain full administrative access, without needing the administrator's credentials.

Recommendations

Reject HTML and SVG uploads in the ticketing system, enforce a strict allow-list of file types, serve uploaded content from a separate cookieless origin, and apply a Content Security Policy to the admin console.

C-02
Broken Authorization Allowing Administrative Account Takeover
9.9
CRITICAL
Component / AssetUser role management
ScopePOST /api/admin/users/promote
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Description

The endpoint used to change a user's role does not verify that the requesting session belongs to an administrator. Any authenticated user can call it directly and set their own account to the administrator role.

Steps to Reproduce
Step 1:

Authenticate as a standard user and capture the request an administrator sends when changing a user's role.

Step 2:

Replay the request using the standard user's own session and user ID.

Step 3:

Reload the application. The account now has administrative privileges.

Evidence
Role promotion request replayed with a standard user session
Figure C-02.1 - Role promotion request replayed with a standard user session
Impact

Complete compromise of the application's access control model. Any registered user can become an administrator without an exploit chain.

Recommendations

Enforce server-side role checks on every administrative endpoint, never rely on the client to hide administrative functionality, and log role changes for review.

H-01
Insecure Direct Object Reference Exposing Customer Records
7.1
HIGH
Component / AssetCustomer invoices
ScopeGET /api/customers/{id}/invoices
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Description

Customer invoices are retrieved using a sequential numeric identifier. The application does not verify that the requesting user owns the requested record, so any authenticated customer can view other customers' invoices by changing the identifier.

Steps to Reproduce
Step 1:

Authenticate as a standard customer account.

Step 2:

Request an invoice belonging to the account and note the identifier.

Step 3:

Increment the identifier and repeat the request.

Step 4:

Observe other customers' invoices, including names, addresses and billing details.

Impact

Any customer can enumerate and read other customers' billing information and personal details.

Recommendations

Verify object ownership on every request, use non-sequential identifiers where practical, and add authorization tests for resource-level endpoints.

H-02
Missing Server-Side Authorization on Administrative Actions
8.1
HIGH
Component / AssetAdmin console
ScopeDELETE /api/admin/content/{id}
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Description

Several administrative actions, including deleting published content, are only restricted in the interface. The underlying API accepts requests from any authenticated session regardless of role.

Steps to Reproduce
Step 1:

Authenticate as a standard user, who does not see administrative controls in the interface.

Step 2:

Send the deletion request directly to the API using the standard user's session.

Step 3:

Confirm the content is deleted despite the account lacking administrative privileges.

Impact

A standard user can delete or modify content that should only be manageable by administrators, affecting data integrity for all users.

Recommendations

Apply the same authorization checks used in the interface to the underlying API, and add automated tests asserting non-admin accounts receive a 403 response.

M-01
Username Enumeration in Password Recovery
5.3
MEDIUM
Component / AssetPassword recovery
ScopePOST /api/auth/forgot-password
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Description

The password recovery endpoint returns a different message depending on whether the submitted email address is registered, allowing an attacker to build a list of valid accounts.

Steps to Reproduce
Step 1:

Submit the recovery form with a registered email address and note the response.

Step 2:

Submit the form again with an unregistered email address and compare the response.

Impact

An attacker can enumerate valid accounts and use the list for targeted phishing or credential stuffing.

Recommendations

Return an identical response regardless of whether the account exists, and rate-limit the endpoint.

M-02
Cross-Site Request Forgery on Sensitive Account Action
6.5
MEDIUM
Component / AssetAccount settings
ScopePOST /api/account/email
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Description

The endpoint used to change a user's registered email address does not include or validate an anti-CSRF token, and accepts requests based on the session cookie alone.

Steps to Reproduce
Step 1:

As an authenticated user, visit an attacker-controlled page that auto-submits a form to the email change endpoint.

Step 2:

The request executes using the victim's existing session and the registered email address changes without their knowledge.

Impact

An attacker can change a victim's registered email as a step toward taking over the account through password recovery.

Recommendations

Implement anti-CSRF tokens on state-changing requests and validate the Origin header as a secondary control.

M-03
Verbose Application Errors Exposing Internal Paths
5.3
MEDIUM
Component / AssetGlobal error handling
ScopeVarious endpoints
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Description

Unhandled exceptions return a full stack trace to the client, including internal file system paths and the framework version.

Steps to Reproduce
Step 1:

Submit malformed input to a form field that is not validated server-side.

Step 2:

Observe the resulting error page.

Impact

Internal paths, dependency versions and application structure are disclosed, aiding further attacks.

Recommendations

Return a generic error message to the client in production and log full details server-side only.

L-01
Weak Password Policy Enforcement
3.1
LOW
Component / AssetAccount registration
ScopePOST /api/auth/register
CVSS VectorCVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
Description

The application accepts passwords as short as four characters with no complexity requirement, and does not check submitted passwords against known-breached password lists.

Steps to Reproduce
Step 1:

Register a new account using a short, common password such as "1234".

Step 2:

Confirm the account is created successfully.

Impact

Weak passwords increase the likelihood of successful credential stuffing and brute-force attacks.

Recommendations

Enforce a minimum password length and check new passwords against a breached-password list.

I-01
Web Server Version Disclosure
0.0
INFO
Component / AssetHTTP response headers
ScopeGlobal
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
Description

The Server header returned by the application discloses the exact web server software and version in use.

Steps to Reproduce
Step 1:

Send a request to any application endpoint and inspect the response headers.

Impact

Version disclosure lets an attacker check for known vulnerabilities affecting that specific version.

Recommendations

Remove or genericize the Server header at the web server or reverse proxy level.

I-02
Missing Recommended Security Headers
0.0
INFO
Component / AssetHTTP response headers
ScopeGlobal
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
Description

Responses do not include recommended security headers such as Content-Security-Policy, X-Content-Type-Options or Strict-Transport-Security.

Steps to Reproduce
Step 1:

Send a request to the application and inspect the response headers.

Impact

The absence of these headers removes a layer of defense against content sniffing, clickjacking and downgrade attacks.

Recommendations

Add the recommended security headers at the application or reverse proxy level.

I-03
Technology Stack Disclosure
0.0
INFO
Component / AssetResponse headers and client bundle
ScopeGlobal
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
Description

Response headers and publicly served source maps reveal the frameworks, libraries and versions used to build the application.

Steps to Reproduce
Step 1:

Review response headers and publicly served JavaScript source maps.

Impact

Knowledge of the technology stack helps an attacker focus on known vulnerabilities affecting those components.

Recommendations

Remove identifying headers and avoid deploying source maps to production.

I-04
Publicly Accessible Non-Sensitive Diagnostic Endpoint
0.0
INFO
Component / AssetHealth check
ScopeGET /health
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
Description

A diagnostic endpoint is publicly reachable without authentication. It does not expose sensitive data but confirms internal service names and uptime.

Steps to Reproduce
Step 1:

Request the diagnostic endpoint without authentication.

Impact

Minimal on its own, but combined with other findings it helps an attacker understand the application's internal structure.

Recommendations

Restrict the endpoint to internal networks or authenticated monitoring systems.

08 RETEST / REMEDIATION STATUS

IDFindingOriginalStatusRetest Notes
C-01Stored Cross-Site Scripting Leading to Administrative Session CompromiseCRITICALOpen—
C-02Broken Authorization Allowing Administrative Account TakeoverCRITICALOpen—
H-01Insecure Direct Object Reference Exposing Customer RecordsHIGHOpen—
H-02Missing Server-Side Authorization on Administrative ActionsHIGHOpen—
M-01Username Enumeration in Password RecoveryMEDIUMOpen—
M-02Cross-Site Request Forgery on Sensitive Account ActionMEDIUMOpen—
M-03Verbose Application Errors Exposing Internal PathsMEDIUMOpen—
L-01Weak Password Policy EnforcementLOWOpen—
I-01Web Server Version DisclosureINFOOpen—
I-02Missing Recommended Security HeadersINFOOpen—
I-03Technology Stack DisclosureINFOOpen—
I-04Publicly Accessible Non-Sensitive Diagnostic EndpointINFOOpen—

09 APPENDICES

  • Tooling and versions used
  • Detailed asset inventory
  • Test accounts / sanitized identifiers
  • Evidence index
  • Raw scan excerpts where appropriate
  • Limitations and assumptions
  • Additional engagement notes where appropriate