📞
Contrxl
External Links
Theoretical Learning
Theoretical Learning
  • 🏡Home
  • 📰News & Information
  • Systems Administration
    • ⌨️Cisco
      • Networking Basics
        • Communication in a Connected World
        • Network Components, Types and Connections
        • Wireless and Mobile Networks
        • Home Networking Technologies
        • Communication Protocols
        • Network Media
        • The Access Layer
        • The Internet Protocol
        • IPv4 and Network Segmentation
    • 🎓Learning Links
    • 💻Microsoft
      • AZ-900
        • 1. Cloud Concepts
          • 1.1 Describe Cloud Computing
            • 1.1.1 Introduction - Cloud Computing
            • 1.1.2 What is Cloud Computing?
            • 1.1.3 The Shared Responsibility Model
            • 1.1.4 Define Cloud Models
            • 1.1.5 Define the Consumption based Model
            • 1.1.6 Summary - Cloud Computing
          • 1.2 Describe the Benefits of Cloud Services
            • 1.2.1 Introduction - Cloud Services
            • 1.2.2 Benefits of High Availability and Scalability
            • 1.2.3 Benefits of Reliability and Predictability
            • 1.2.4 Benefits of Security and Governance
            • 1.2.5 Manageability in the Cloud
            • 1.2.6 Summary - Cloud Services
          • 1.3 Describe Cloud Service Types
            • 1.3.1 Introduction - Cloud Service Types
            • 1.3.2 Describe Infrastructure as a Service
            • 1.3.3 Describe Platform as a Service
            • 1.3.4 Describe Software as a Service
            • 1.3.5 Summary - Cloud Service Types
        • 2. Architecture
          • 2.1 Core Architectural Components
            • 2.1.1 Introduction - Core Architectural Components
            • 2.1.2 What is Microsoft Azure
            • 2.1.3 Get Started with Azure Accounts
            • 2.1.4 Explore the Learn Sandbox
            • 2.1.5 Describe Azure Physical Infrastructure
            • 2.1.6 Describe Azure Management Infrastructure
            • 2.1.7 Create an Azure Resource
            • 2.1.8 Summary
          • 2.2 Compute and Networking
            • 2.2.1 Introduction - Compute and Networking
            • 2.2.2 Describe Azure VMs
            • 2.2.3 Create an Azure VM
            • 2.2.4 Describe Azure Virtual Desktop
            • 2.2.5 Describe Azure Containers
            • 2.2.6 Describe Azure Functions
            • 2.2.7 Describe Application Hosting Options
            • 2.2.8 Describe Azure Virtual Networking
            • 2.2.9 Configure Network Access
            • 2.2.10 Describe Azure VPNs
            • 2.2.11 Describe Azure ExpressRoute
            • 2.2.12 Describe Azure DNS
            • 2.2.13 Summary - Compute and Networking
          • 2.3 Azure Storage Services
            • 2.3.1 Introduction - Storage Services
            • 2.3.2 Describe Azure Storage Accounts
            • 2.3.3 Describe Azure Storage Redundancy
            • 2.3.4 Describe Azure Storage Services
            • 2.3.5 Create a Storage Blob
            • 2.3.6 Identify Azure Data Migration Options
            • 2.3.7 Identify Azure File Movement Options
            • 2.3.8 Summary - Storage Services
        • 3. Management and Governance
          • 3.1 Cost Management
            • 3.1.1 Introduction - Cost Management
            • 3.1.2 Describe Factors that can Affect Costs in Azure
            • 3.1.3 Compare Pricing and TCO Calculators
            • 3.1.4 Estimate Workload Costs
            • 3.1.5 Compare Workload Costs with TCO
            • 3.1.6 Describe the Microsoft Cost Management Tool
            • 3.1.7 Describe the Purpose of Tags
            • 3.1.8 Summary - Cost Management
          • 3.2 Governance and Compliance
            • 3.2.1 Introduction - Compliance and Governance
            • 3.2.2 Describe the Purpose of Microsoft Purview
            • 3.2.3 Describe the Purpose of Azure Policy
            • 3.2.4 Describe the Purpose of Resource Locks
            • 3.2.5 Configure a Resource Lock
            • 3.2.6 Describe the Purpose of the Service Trust Portal
            • 3.2.7 Summary - Compliance and Governance
          • 3.3 Tools for Managing Azure Resources
            • 3.3.1 Introduction - Tools for Managing Azure Resources
            • 3.3.2 Describe Tools for Interacting with Azure
            • 3.3.3 Describe the Purpose of Azure Arc
            • 3.3.4 Describe ARM and Azure ARM Templates
            • 3.3.5 Summary - Tools for Managing Azure Resources
          • 3.4 Monitoring Tools
            • 3.4.1 Introduction - Monitoring Tools
            • 3.4.2 Describe the Purpose of Azure Advisor
            • 3.4.3 Describe Azure Service Health
            • 3.4.4 Describe Azure Monitor
    • 📘Microsoft Portal Links
  • Cybersecurity
    • ❓Anonymity Tools
    • 💡OSINT
      • IP & Domain OSINT
      • Email & Username OSINT
      • Vulnerability OSINT
    • 📚Projects
      • ‼️A Simulation Study of DDoS
  • 🦈Hacking
    • ☁️Cloud Attack Vectors
      • Credential Harvesting
      • Privilege Escalation
      • Account Takeover
      • Metadata Service Attacks
      • Misconfigured Cloud Assets
      • Resource Exhaustion and DoS
      • Cloud Malware Injection Attacks
      • Side-Channel Attacks
    • Maintaining Persistence
      • Reverse and Bind Shells
      • Command and Control (C2) Utilities
      • Scheduled Jobs, Tasks and Custom Daemons
    • 💻Network-Based Vulnerabilities
      • Windows Name Resolution and SMB
      • DNS Cache Poisoning
      • SNMP
      • SMTP
      • FTP
      • Pass-the-Hash
      • Kerberos and LDAP-Based Attacks
      • On-Path
      • Route Manipulation
      • DoS and DDoS
      • NAC Bypass
      • VLAN Hopping
      • DHCP Starvation/Rogue DHCP Server
    • Pivoting
      • Post-Exploitation Scanning
      • Legitimate Utilities and LotL
      • Privilege Escalation
    • Specialised System Vulnerabilities
      • Mobile Devices
      • Internet of Things Devices
      • Virtual Machines
      • Containerised Workloads
    • ⚒️Tools
      • Burp Suite
        • Repeater
        • Intruder
        • Other Modules
      • GoPhish
      • Hydra
      • John the Ripper
      • Metasploit
        • Exploitation
        • Meterpreter
      • NMAP
      • Wireshark
    • 🖥️TryHackMe
      • Complete Beginner
        • 1. Complete Beginner Intro
        • 2. Linux Fundamentals
        • 3. Introductory Networking
        • 3.1 Network Exploitation Basics
        • 4. OWASP Top 10 Exploits
        • 5. Upload Vulnerabilities
        • 5.1 An Example Methodology
        • 6. Cryptography - Hashing
        • 7. Cryptography - Encryption
        • 8. Active Directory Basics
        • 9. What the Shell?
        • 10. Linux Privesc
        • 11. More Linux Privesc
      • Jr Penetration Tester
        • Walking an Application
        • Content Discovery
        • Subdomain Enumeration
        • Authentication Bypass
        • IDOR
        • File Inclusion
        • SSRF
        • XSS (Cross-site Scripting)
        • Command Injection
        • SQL Injection
        • Passive Reconnaissance
        • Active Reconnaissance
        • Protocols and Servers
        • Protocol and Server Attacks
        • Vulnerabilities
        • Exploiting Vulnerabilities
        • Linux Privilege Escalation
        • Windows Privilege Escalation
      • CompTIA Pentest+
        • Planning and Scoping
          • Pentesting Fundamentals
          • Red Team Engagements
          • Governance and Regulation
        • Tools and Code Analysis
          • Metasploit: Introduction
          • Wireshark: The Basics
          • Burp Suite: The Basics
          • Hydra
          • Python Basics
        • Attacks and Exploits
          • Phishing
          • Windows Local Persistence
          • Breaching Active Directory
          • Lateral Movement & Pivoting
    • Web Application Vulnerabilities
      • The HTTP Protocol
      • Business Logic Flaws
      • Injection-Based Vulnerabilities
      • Authentication-Based Vulnerabilities
      • Authorisation-Based Vulnerabilities
      • Cross-Site Scripting (XSS)
      • Cross-Site Request Forgery (CSRF/XSRF) and Server-Side Request Forgery (SSRF)
      • Clickjacking
      • Security Misconfigurations
      • File Inclusion Vulnerabilities
      • Insecure Coding Practices
    • Wireless Vulnerabilities
      • Rogue Access Point/Evil Twin
      • Disassociation/Deauthentication
      • Preferred Network List Attack
      • Wireless Signal Jamming
      • War Driving
      • Initialization Vector (IV) and Insecure Wireless Protocol
      • KARMA
      • Fragmentation Attacks
      • Credential Harvesting
      • Bluejacking and Bluesnarfing
      • RFID Attacks
Powered by GitBook
On this page
  • Introduction
  • Overwriting Existing Files
  • RCE (Remote Code Execution)
  • Filtering
  • Bypassing Client-Side Filtering
  1. Hacking
  2. TryHackMe
  3. Complete Beginner

5. Upload Vulnerabilities

Fifth section in the Complete Beginner learning path.

Introduction

Uploading files to a server has become integral to modern interaction with web applications. Social media profile pictures, cloud storage services or even GitHub are examples of web apps that make extensive use of file uploads. When handled badly, file uploads can lead to a wide range of issues from minor problems all the way to Remote Code Execution (RCE). Attacks with unlimited upload access can deface existing content or use servers to host illegal content. This exercise explores:

  • Overwriting files on a server

  • Uploading and executing shells on a server

  • Bypassing Client-Side filtering

  • Bypassing various kinds of Server-Side filtering

  • Fooling content type validation checks

Overwriting Existing Files

Files being uploaded to a server should undergo extensive checks to ensure that nothing on the server will be overwritten, common practice is to rename the file with a new random name or with a date and time stamp appended. Alternatively, checks can be made to see if the filename already exists on the server and change it if it does.

File permissions are also relevant here, for example, web pages should not be writeable to the web user, which prevents them from being overwritten. Without these precautions, a site can be left vulnerable to overwriting. In most realistic scenarios, basic permissions on the server prevent this happening.

RCE (Remote Code Execution)

RCE allows the arbitrary execution of code on the web server. Even on low-privilege accounts this can be a serious vulnerability. RCE via upload is typically done by uploading a program written in the same language as the back-end of the website (or at least one the server will understand and execute). Traditionally, this is PHP but more modern technologies take advantage of Python, JavaScript in the form of Node.js or Django. In routed applications (app where routes are defined programmatically rather than mapped to the file-system) this becomes more complicated to achieve.

There are two basic methods to achieve RCE on a web server: web shells and reverse/bind shells. A full reverse shell is the ideal goal, however, a web shell may be an available option. These can be uploaded and accessed through either direct navigation to the upload location or by forcing the web app to run the script.

Filtering

A client-side script (in the context of web apps) means it is running in the users browser rather than on the web server. JavaScript is the most used client-side scripting language, although there are alternatives. A client-side script will run in your web browser, meaning filtering occurs before the file is uploaded. In theory this is good, in practice it is very easy to bypass. Client-side filtering alone is highly insecure and not a good way to verify an uploaded file is not malicious.

A server-side script will run on the server. PHP was the traditionally predominant server side language, many more like Python, Node.js, Ruby on Rails and C# are becoming more widely used. Server-side filtering is much harder to bypass, often a payload will need to be formed which will conform to filters but still allow code execution.

Some different types of filtering are:

  • Extension Validation: file extensions are used (in theory) to identify the contents of a file. Practically, they are easily changed so they don't mean much. However, Windows still uses them to identify file types, Unix based systems rely on other methods. Filters for extensions either blacklist set extensions or whitelist set extensions.

  • File Type Filtering: file type filtering is a more intense version of extension validation. There are two types of file type filtering:

    • MIME (Multi-purpose Internet Mail Extension) validation checks the MIME type of a file, the MIME type is used to identify a file when transferred over HTTP(S) or email. The mime type of a file upload is attacked in the header of a request and looks like "image/jpeg". MIME is easy to bypass as it is based on the extension of a file.

    • Magic Number validation is an accurate way to determine file type, however, it is still bypassable. The magic number of a file is a string of bytes at the beginning that identifies it, for example, a PNG has the magic number: 89 50 4E 47 0D 0A 1A 0A.

  • File Length Filtering: file length filters prevent massive files from being uploaded to the file. This won't cause issues uploading shells, however, a filter may be in place if an upload server only expects a very short file name. For example, a web server may expect a max of 2Kb being uploaded and block anything larger.

  • File Name Filtering: checks that files names or unique or checks if a file already exists. Also, should sanitise file names and remove any "bad characters" which can cause problems, for example, remove null bytes or forward slashes, or control characters like ";".

  • File Content Filtering: complex filter systems will scan file contents to check it is not spoofing its extension, MIME type or Magic Number.

Bypassing Client-Side Filtering

There are four easy ways to bypass an average client-side filter:

  1. Turn Off JavaScript in Browser : this works if the site does not require JavaScript to function, otherwise, it will completely bypass a client-side filter.

  2. Intercept and Modify Incoming Page : using Burp, the incoming page can be stripped of JavaScript before it can run.

  3. Intercept and Modify the File Upload : intercept the file upload after it is passed and accepted by the filter by changing the MIME type to an accepted one e.g. change image/jpeg to text/x-php and the file extension from .jpg to .php.

  4. Send the File Directly to Upload : tool like curl can be used to pass the data directly to the webpage and bypass the client-side filter. The syntax for this would look like:

curl -X POST -F "submit:<value>" -F "<file-parameter>:@<path-to-file>" <site>

Last updated 4 months ago

🦈
🖥️