PT-2026-58960 · Packagist · Nukeviet/Nukeviet
Publicado
2026-07-13
·
Atualizado
2026-07-13
CVSS v3.1
8.7
Alta
| Vetor | AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:H |
Summary
Path Traversal to Arbitrary File Deletion in the Edit Comment admin function. An authenticated administrator can delete arbitrary files within the application root (e.g.,
config.php) by injecting a crafted attach parameter, rendering the application inoperable.Affected Component
modules/comment/admin/edit.phpRoot Cause
In the vulnerable version, the
attach parameter received via HTTP POST was not validated before being processed:php
// Vulnerable code (before fix)
$attach = $nv Request->get string('attach', 'post', '', true);
if (!empty($attach)) {
$attach = substr($attach, strlen(NV BASE SITEURL . NV UPLOADS DIR . '/' . $module upload . '/'));
}substr() strips the first N characters (equal to the length of the upload URL prefix, e.g. 26 chars for /nukeviet/uploads/comment/). By padding the payload with exactly 26 arbitrary characters followed by a path traversal sequence, an attacker can store ../../<target> directly into the database.When the comment is subsequently deleted,
del.php reads attach from the database and calls:php
nv deletefile(NV UPLOADS REAL DIR . '/' . $module upload . '/' . $row['attach']);nv deletefile() resolves the path via realpath() and only verifies the result is within NV ROOTDIR — it does not restrict deletion to the uploads directory — allowing deletion of any file in the installation root.Steps to Reproduce
- Log in as an administrator and navigate to Admin → Comment Management.
- Select any comment and open the Edit form.
- Intercept the POST request and set the
attachparameter to:
aaaaaaaaaaaaaaaaaaaaaaaaaa../../config.php(26 padding characters + traversal path)
- Submit the request. The value
../../config.phpis now stored in the database. - Delete the comment.
config.phpis deleted from the application root. - The application immediately redirects to the install wizard, confirming the file has been removed.
Impact
- Any file readable by the web server process within
NV ROOTDIRcan be permanently deleted. - Deleting
config.phpcauses a full application outage and exposes the install wizard.
Severity
CVSS v3.1 Base Score: 8.7 (High)
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:H| Metric | Value |
|---|---|
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | High (Admin required) |
| User Interaction | None |
| Scope | Changed |
| Confidentiality | None |
| Integrity | High |
| Availability | High |
Fix
Added
nv is file() validation before processing the attach value. This function uses realpath() and a regex check to ensure the file resolves to a path within the intended upload directory, rejecting any traversal attempts.php
// Fixed code
$attach = $nv Request->get string('attach', 'post', '');
if (!empty($attach) and nv is file($attach, NV UPLOADS DIR . '/' . $module upload)) {
$attach = substr($attach, strlen(NV BASE SITEURL . NV UPLOADS DIR . '/' . $module upload . '/'));
} else {
$attach = '';
}Correção
Path traversal
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Nukeviet/Nukeviet