โ๏ธ[Root me] Writeup Sever Side
Mแป ฤแบงu
ฤรขy lร trang write up vแป challenges root me vแป sever side. Mแบทc dรน hiแปn tแบกi cรณ rแบฅt nhiแปu ngฦฐแปi write up vแป root me nhฦฐng mรฌnh vแบซn muแปn lร m vร write up lแบกi ฤแป mแปt phแบงn nhแป kiแบฟn thแปฉc. Nรณ mang theo kiแปu note lร chรญnh. [Mแปฉc ฤแป Medium trแป lรชn _ ะฝะพ ะฝะต ะฒัะต]
JSON Web Token (JWT) - Introduction
Khi vร o trang web chรบng ta sแบฝ cรณ mแปt form ฤฤng nhแบญp nhฦฐ sau:

แป ฤรขy chรบng ta sแบฝ login nhฦฐ lร khรกch, sau khi login ฤฦฐแปฃc tร i khoแบฃn khรกch chรบng ta sแบฝ check cookie xem cรณ gรฌ.

แป ฤรขy mรฌnh nhแบญn ra cookie cรณ sแปญ dแปฅng jwt, thรฌ mรฌnh thแปญ decode xem nรณ nhฦฐ nร o.

แป ฤรขy mรฌnh check tool jwt nhฦฐng khรดng thแป cรณ ฤฦฐแปฃc secret nร o nรชn mรฌnh set lแบกi jwt bแบฑng cรกch khรดng sแปญ dแปฅng algorithm
ฤoแบกn code trรชn sแบฝ nhฦฐ nร y:

Thay thแบฟ cookie hiแปn tแบกi ta cรณ flag

JSON Web Token (JWT) - Weak secret
แป bร i nร y nhฦฐ tiรชu ฤแป thรฌ lร weak secret mรฌnh cรณ thแบป brute foce ฤฦฐแปฃc secret.

Chรบng ta truy cแบญp /token cรณ mรฃ token nhฦฐ trรชn:

Mรฌnh dรนng tool jwt ฤแป brute foce secret mรฃ trรชn:

แป ฤรขy mรฌnh cรณ ฤฦฐแปฃc secret bแบฏt ฤแบงu encode mแปt token vแปi role:admin

Oke bay giแป post nรณ lรชn vร thรชm Authorization ฤแป xรกc nhแบญn lร xong.

JWT - Revoked token
แป bร i nร y cho sแบตn code ฤแป phรขn tรญch.
Chรบng ta sแบฝ phรขn tรญch ฤoแบกn code nร y nhฦฐ sau:
ฤoแบกn code trรชn cรณ 3 hร m quan trแปng ฤรณ lร :
** -> nhฦฐ ฤรฃ nรณi แป trรชn rแบฑng token sแบฝ cรณ hแบกn lร 3p nhฦฐng cรณ ฤiแปu lร khi token ฤฦฐแปฃc tแบกo ra ฤรฃ bแป add vร o blacklist.


Chรบ รฝ cรกch tแบกo token JWT header.payload.signature
แป ฤรขy cแบงn chรบ รฝ tแปi cรกch tแบกo ra signature:
แป ฤรขy theo gแปฃi รฝ แป metarial trang root-me cho thรฌ cรณ thแป bypass bแบฑng cรกch dรนng kรฝ tแปฑ non-alphabet nhฦฐng แป ฤรขy chรบng ta thแบฅy rแบฑng signature ฤฦฐแปฃc base64urlEncode() . Thรฌ trong base64 thฦฐแปng cรณ dแบฅu = kแบฟt thรบc แป cuแปi mร mรฌnh nhแบญn ra dรน bแบกn thรชm hay bแปt dแบฅu = thรฌ nรณ vแบซn decode ra mแปt giรก trแป.
Vรญ dแปฅ nhฦฐ: aG9haG9uZ2Rv= vร aG9haG9uZ2Rv ฤแปu decode ra hoahongdo

Oke bรขy giแป thรชm Authorization header vร thรชm dแบฅu = แป cuแปi JWT hoแบทc mแปt non-alphabet nhฦฐ tiแบฟng Nga(ะป), tiรชng Trung...

PHP - assert()

Bร i nร y cรณ lแป hแปng LFI nhรฌn qua khi mรฌnh thแปญ xem ฤแปc ฤฦฐแปฃc file passwd khรดng thรฌ nรณ hiแปn ra nhฦฐ nร y:

แป ฤรขy hiแปn ra hai hร m assert() vร strpos(). Trong ฤรณ hร m assert() kiแปm tra ฤแบงu vร o vร trแบฃ vแป giรก trแป bool. Nแบฟu kแบฟt quแบฃ lร fallse thรฌ nรณ sแบฝ thแปฑc hiแปn nรฉm lแปi ra. Cรฒn hร m strpos() dรนng ฤแป tรฌm vแป trรญ xuแบฅt hiแปn ฤแบงu tiรชn cแปงa chuแปi con trong chuแปi cha.
ฤแปi vแปi hร m assert() thรฌ cรณ hai tham sแป assert(mixed $assertion, Throwable $exception = ?): bool nแบฟu mร nรณ check $assertion false thรฌ sแบฝ nรฉm ra $exception, cรฒn ฤแปi vแปi hร m cลฉng thแป strpos( $str, $char, $position) .
Chรบ รฝ rแบฑng khi ฤรบng tra truyแปn ../../../etc/passwd thรฌ thแบฅy rแบฑng chรบng ta cรณ thแป inject ฤฦฐแปฃc dรฒng code.
Code PHP แป dรฒng cรณ thแป lร :
assert("strpos('includes/$file.php', '..') === false") or die("Detected hacking attempt!");
Payload lรบc nร y sแบฝ lร : ','')+or+die(show_source('.passwd'));//
Lรบc ฤรณ ฤoแบกn code:

PHP - Apache configuration
Last updated