Blind Exploitation

Overview

When HTTP response injection isn't possible, use time-based or boolean-based techniques to exfiltrate data.


Blind Exfiltration Methods

Method
Description

Sleep timers

If char matches β†’ sleep X seconds

Boolean output

If char matches β†’ different response

Note: Even completely blind, vulnerability is critical - commands still execute (DoS, ransomware, etc.)


Why Not JavaScript Sleep?

The Problem

setTimeout(() => {}, 2000);  // Doesn't work as expected

Node.js processes requests asynchronously - response returns immediately even if code still processing.

The Solution

Use system commands instead:

  • execSync waits for command completion

  • System sleep causes actual delay


Time-Based Exploitation

Test Sleep Works

Result:

βœ… Time-based exfiltration possible!


Reading Output via Sleep

The Technique

  1. Read first character of command output

  2. Compare against each ASCII character

  3. If match β†’ sleep 2 seconds

  4. Repeat for all characters

Bash Command

For Specific Position

Payload


Practical Exploitation

Step 1: Get Admin Token

Step 2: Generate Payloads

Step 3: Test Each Character

Step 4: Identify Match

Step 5: Move to Next Position

Change head -c 1 to head -c 2, then head -c 3, etc.


Example: Extracting 3-Digit Flag

Position 1

Result: Character 2 causes delay

Position 2

Result: Character 1 causes delay

Position 3

Result: Character 4 causes delay

Flag: 214


Accuracy Considerations

Factor
Impact

Internet latency

False positives/negatives

Server load

Variable response times

Short delays

More errors

Recommendations

  • Use longer delays (2-3 seconds) for accuracy

  • Test known character first (e.g., H from HTB{)

  • Repeat on uncertain results


Boolean-Based Alternative

Instead of Sleep

Change HTTP response code or content based on match.

Advantages

  • Faster (no waiting)

  • More reliable

Disadvantages

  • Requires controllable response

  • Not always possible


Automation Needed

Why Manual Is Impractical

  • Full ASCII charset: 95 printable characters

  • Per character: 95 requests (worst case)

  • 30 character output: 2850 requests

  • Manual: Hours of work

Solution

Write script to automate:

  1. Character iteration

  2. Request timing

  3. Result collection


Key Takeaways

  1. execSync + sleep - Reliable time-based exfiltration

  2. head + tail - Extract specific character positions

  3. Base64 encoding - Avoid escaping issues

  4. Longer delays - More accuracy

  5. Automation essential - Manual is impractical

Last updated