> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jaspervanzeir.be/llms.txt
> Use this file to discover all available pages before exploring further.

# Web Fingerprinting & Recon

> Lesnotities over technologie, routes, headers en verborgen informatie.

<Note>
  In dit onderdeel draaide het rond herkennen welke technologie draait en waar verborgen informatie kan opduiken. Fingerprint-data blijft een indicatie: servers kunnen bewust of onbewust misleidende informatie teruggeven.
</Note>

## In een oogopslag

| Bron              | Waar                          | Snel commando                 |
| ----------------- | ----------------------------- | ----------------------------- |
| HTML broncode     | F12 -> Elements / View Source | CTRL+F op `{`                 |
| JS-bestanden      | F12 -> Network / Sources      | zoek comments & routes        |
| HTTP headers      | terminal / Network            | `curl.exe -I http://<target>` |
| Cookies & Storage | F12 -> Application            | naam + waarde                 |
| robots.txt        | browser                       | `/robots.txt`                 |
| Verborgen paden   | dirbusting                    | gokken -> status `200`/`403`  |
| File extensions   | URL                           | `.php.aspx.jsp`               |
| Error messages    | foute URL                     | serverpaden & versies         |
| Encoded waarden   | overal                        | BASE64 decoderen              |

## Bronnen in detail

<AccordionGroup>
  <Accordion title="HTML broncode" icon="code">
    * Developer-comments `{/*  ...  */}`
    * `type="hidden"` inputs en `display:none` blokken
    * `<meta name="generator">` -> CMS (WordPress / Joomla / Drupal)
    * Paden naar CSS/JS/images -> mapstructuur
    * Opvallende/gemarkeerde woorden -> vormen soms samen een URL
  </Accordion>

  <Accordion title="JavaScript-bestanden" icon="file-code">
    * Comments `//` en `/* */`, hardcoded strings, `console.log`
    * **Routes die wel in de code maar niet in de UI staan** -> zoek op een paginanaam
    * F12 -> Console: JS uitvoeren tegen de pagina
  </Accordion>

  <Accordion title="HTTP headers" icon="server">
    * Custom `X-...` headers - daar zit het vaak verstopt
    * `Server` / `X-Powered-By` -> framework + versie
    * `Last-Modified`, `Set-Cookie`, redirect `Location`

    ```powershell theme={null}
    curl.exe -I http://<target>      # enkel headers
    curl.exe http://<target>         # volledige body
    ```
  </Accordion>

  <Accordion title="Cookies & Storage" icon="cookie">
    * Cookie **naam en waarde** (een key kan er direct in zitten)
    * Framework-namen: `laravel_session`, `wp-settings`, `phpbb3_`, `django`
    * Vergeet **Local Storage** en **Session Storage** niet
  </Accordion>

  <Accordion title="robots.txt & bekende files" icon="robot">
    * `Disallow:`-regels -> verborgen/interessante paden (bv. admin)
    * Ook relevant: `/sitemap.xml`, `.htaccess`, `security.txt`, `readme`
    * `/wp-admin/` -> verraadt WordPress
  </Accordion>

  <Accordion title="Verborgen paden / dirbusting" icon="folder-magnifying-glass">
    * Logische URL's **gokken**, of bekende namen brute-forcen
    * `200` = bestaat ; `403` = bestaat maar verboden (interessant!) ; `404` = niets
  </Accordion>

  <Accordion title="File extensions" icon="file-code">
    * `.php` -> PHP ; `.aspx` -> ASP.NET ; `.jsp` -> Java
    * Bepaalt welke vervolgaanvallen zinvol zijn
  </Accordion>

  <Accordion title="Error messages forceren" icon="triangle-exclamation">
    * Een onbestaand pad of foute input kan extra foutinformatie tonen
    * Lekt absolute serverpaden (`/home/<user>/...`), framework + versie, stack traces
    * Markers als `wp-content`, `functions.php`
  </Accordion>

  <Accordion title="Encoded waarden decoderen" icon="lock">
    * **BASE64 herkennen:** lange string met `A-Z a-z 0-9 + /`, eindigt vaak op `=`
    * Decode -> soms is het resultaat **opnieuw** BASE64 -> meerdere decode-stappen kunnen nodig zijn
    * Ook: hex, URL-encoding, ROT13

    ```bash theme={null}
    echo "S29lbmtfaXNfdGhlX2Jlc3Q=" | base64 -d
    ```

    **CyberChef** heeft ook een "Magic" functie die veel encoding automatisch herkent.
  </Accordion>
</AccordionGroup>

## Handige curl parameters

| Parameter          | Wat doet het?                          | Handig wanneer                                               |
| ------------------ | -------------------------------------- | ------------------------------------------------------------ |
| `-I`               | Vraagt alleen headers op.              | Snel `Server`, `Location`, cookies en custom headers zien.   |
| `-i`               | Toont headers en body samen.           | Responsebody en statusinformatie tegelijk bekijken.          |
| `-L`               | Volgt redirects.                       | Loginroutes, trailing slash redirects of moved pages volgen. |
| `-k`               | Negeert TLS-certificaatfouten.         | Lokale labs of self-signed certificaten.                     |
| `-H "Name: value"` | Stuurt een header mee.                 | Custom headers, auth tokens of `Origin` testen.              |
| `-A "User-Agent"`  | Zet de User-Agent.                     | Kijken of content per client verschilt.                      |
| `-b "a=b"`         | Stuurt cookies mee.                    | Ingelogde routes of role-cookies testen.                     |
| `-X POST`          | Gebruikt een andere methode.           | Snelle methodecheck zonder Burp.                             |
| `-d "a=1"`         | Stuurt formdata mee.                   | POST-body testen.                                            |
| `-o file.txt`      | Schrijft output naar bestand.          | Grote responses of downloads bewaren.                        |
| `-sS`              | Silent, maar fouten blijven zichtbaar. | Minder ruis in scripts.                                      |
| `-v`               | Toont veel request/response details.   | Redirects, TLS en connectieproblemen debuggen.               |

```powershell theme={null}
curl.exe -i -L -H "Origin: https://test.example" http://<target>
```

## Tools

<CardGroup cols={3}>
  <Card title="Browser DevTools" icon="code" href="https://firefox-source-docs.mozilla.org/devtools-user/">
    Handig voor HTML, JavaScript, Network, Console, cookies en storage.
  </Card>

  <Card title="curl" icon="terminal" href="https://curl.se/docs/manpage.html">
    Terminaltool voor headers en responses.
  </Card>

  <Card title="CyberChef" icon="utensils" href="https://gchq.github.io/CyberChef/">
    Tool voor BASE64, hex, URL-encoding en andere encoded waarden.
  </Card>

  <Card title="ffuf" icon="bolt" href="https://github.com/ffuf/ffuf">
    Wordlist-based fuzzing voor directories, bestanden en parameters.
  </Card>

  <Card title="Dirb" icon="folder-magnifying-glass" href="https://www.kali.org/tools/dirb/">
    Commandline tool voor bekende webpaden en directories.
  </Card>

  <Card title="Burp Suite" icon="shield" href="https://portswigger.net/burp">
    Proxytool voor HTTP history en Repeater.
  </Card>
</CardGroup>

## Samenvatting

* HTML broncode + CTRL+F op `{`
* Alle JS-bestanden (Network + Sources)
* Response headers (`curl -I`) + custom headers
* Cookies + Local/Session Storage
* `/robots.txt` en `/sitemap.xml`
* Verborgen paden / dirbusting
* File extensions geinterpreteerd
* Foutmeldingen geforceerd
* Encoded waarden gedecodeerd (BASE64)
