| Title | wuzhicms <=4.1.0 Arbitrary File Write (RCE) |
|---|
| Description | member::setAvatar() accepts a user's avatar upload. The extension of the resulting filename is derived from $_FILES['file']['name'] (the raw, client-supplied filename, which is entirely untrusted), using only strtolower(pathinfo(...)) to extract the extension — with no extension whitelist, no MIME-type validation, and no image-content validation via getimagesize()/exif_imagetype(). The file is then written directly via move_uploaded_file() into the uploadfile/member/<uid>/ directory. This directory is directly served by the web server and PHP execution is permitted there, so an attacker who uploads a .php-suffixed web shell can trigger execution simply by requesting the predictable resulting URL. |
|---|
| Source | ⚠️ https://github.com/wuzhicms/wuzhicms/issues/219 |
|---|
| User | ZAST.AI (UID 87884) |
|---|
| Submission | 08/17/2026 07:22 (29 days ago) |
|---|
| Moderation | 09/15/2026 10:44 (29 days later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 404077 [WuzhiCMS up to 4.1.0 Avatar Upload index.php?m=member&f=user&v=setAvatar member::setAvatar File unrestricted upload] |
|---|
| Points | 20 |
|---|