โœ๏ธ[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 jwtarrow-up-right ฤ‘แปƒ 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:

  1. ฤ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(mixedarrow-up-right $assertion, Throwablearrow-up-right $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:

Show_source file .passwd

PHP - Apache configuration

Last updated