βοΈ[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