Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2023-46474 PoC — PMB 安全漏洞

Source
Associated Vulnerability
Title:PMB 安全漏洞 (CVE-2023-46474)
Description:PMB是PMB Services团队的一个 100% 免费文档管理的参考工具。 PMB v.7.4.8版本存在安全漏洞,该漏洞源于允许远程攻击者通过上传 start_import.php 文件执行任意代码并升级权限。
Description
PoC for CVE-2023-46474.
Readme
# PMB <=7.5.3 - Remote Code Execution via Unrestricted File Upload
**CVE-2023-46474**

| CVSS v3.1 Vector | CVSS v3.1 Score  |
|------------------|------------------|
| AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H | 9.1 |

Découverte dans le cadre d'un test d'intrusion par Marcus Reynaud de [Devensys Cybersecurity](https://devensys.com)

### Description

Le script `pmb/admin/convert/start_import.php` est vulnérable à une faille de type [`Unrestricted File Upload`](https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload), ce qui permet d'obtenir une execution de code arbitraire sur le serveur.

![Fonctionnalité vulnérable](image-4.png)

L'attaquant doit auparavant obtenir **l'accès administratif** à la platefrome pour utiliser à cette fonctionnalité.

Le script PHP ne vérifie pas l'extension du fichier qui est uploadé par l'utilisateur, et le stocke dans un répertoire accessible par le serveur web en conservant son extension. Ainsi, il est possible d'uploader un script PHP, puis de l'executer en visitant l'endroit où il a été uploadé.

### Reproduction

Il est possible de reproduire ce comportement de la manière suivante :

On envoie un fichier en `.php` qui contient le code que l'on veut executer sur le système. Ici, nous executrons la commande système `id`.

![Upload d'un .php](image.png)

En observant la réponse, nous pouvons récupérer le nom du fichier tel qu'il vient être écrit sur le serveur.

![Le nom du fichier est renvoyé](image-1.png)

Pour executer notre code, il suffit de visiter `/pmb/temp/[nom_du_fichier].php` avec un navigateur.

![Résultat](image-2.png)

Le résultat de la commande est renvoyé par le serveur.

### Cause
La cause de cette vulnérabilité est le manque de contrôle sur le fichier avant de l'écrire sur le disque :

![Alt text](image-3.png)

### Remediation
Pour remédier cette vulnérabilité, il faut implémenter un contrôle des extensions sur les fichiers uploadés par les utilisateurs.

Nous vous conseillons d'utiliser un système de whitelist, qui n'autorise que certaines extensions de fichier.

Vous pouvez également écrire le fichier sur le disque en ommetant l'extension (sachant qu'il s'agit d'un stockage temporaire.)

Il est aussi possible d'écrire le fichier dans un répertoire hors du scope du serveur web, ce qui rendrait le fichier inaccessible sur Internet, et le code ne pourrait pas être éxecuté.

Les versions `7.5.4` et superieures ne sont pas vulnérables, le script a été entièrement réécrit.
File Snapshot

[4.0K] /data/pocs/fa0147bdfd34d32704956894ed27491f2ccfc7f4 ├── [511K] image-1.png ├── [ 38K] image-2.png ├── [ 65K] image-3.png ├── [ 66K] image-4.png ├── [172K] image.png └── [2.5K] README.md 0 directories, 6 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.