Jet

first cool chain have web pentest and pwn skills

1. Connect

Connect vpn fortesses vΓ  view web page ở port 80 cΓ³ thể cΓ³ được flag Δ‘αΊ§u tiΓͺn sanity check

2. Digging in...

Scan Port service vα»›i Rustscan ( cho nhanh ) hoαΊ·c nmap , vΓ  scan qua directory vα»›i default wordlist bαΊ±ng dirsearch

-> result service scan :

khΓ‘ Δ‘Γ‘ng chΓΊ Γ½ vΓ o port 22,53 , port 5555 trở lΓͺn

-> result scan cũng trả về status code 403

-> ở Δ‘Γ’y thường 1 sα»‘ case sαΊ½ truy xuαΊ₯t được domain name server -> add vΓ o hosts để truy cαΊ­p web page source -> cΓ³ thể sα»­ dα»₯ng dig tool để lΓ m việc nΓ y , truy xuαΊ₯t DNS system

-> tΓ¬m được tΓͺn miền lΓ  www.securewebinc.jet. -> add lαΊ‘i vΓ o host vΓ  view lαΊ‘i web page

tΓ¬m được flag thα»© 2 ở cuα»‘i trang sau khi truy cαΊ­p

3. Going Deeper

view source trang web vα»«a rα»“i -> check cΓ³ thể thαΊ₯y file secure.js khΓ‘ Δ‘Γ‘ng nghi

trΖ°α»›c tiΓͺn decode Δ‘oαΊ‘n char trong hΓ m String.fromCharCode để xem nΓ³ hiển thα»‹ gΓ¬ :

kαΊΏt quαΊ£ :

-> cΓ³ link truy cαΊ­p Δ‘αΊΏn 1 file cΓ³ 1 thΓ΄ng sα»‘ cΓ³ thể lΓ  về function nΓ o Δ‘Γ³ :

khΓ΄ng cΓ³ gΓ¬ Δ‘Γ‘ng kể lαΊ―m -> thα»­ traversal vΓ  detect vα»›i path mα»›i nΓ y

-> khi back về /admin -> web trỏ sang trang login

View source trang login cΓ³ thể thαΊ₯y flag thα»© 3

4. Bypassing Authentication

-> sαΊ½ cαΊ§n bypass authen ở trang login để Δ‘i tiαΊΏp

-> test SQLi

time base test cΓ³ thể nhαΊ­n ra bα»‹ delay theo thời gian ta query

-> Sqli

manual test :

-> lαΊ₯y thΓ΄ng tin database :

tΓ¬m được tΓͺn database lΓ  jetadmin

-> truy xuαΊ₯t thΓ΄ng tin database

-> cΓ³ được hash password vΓ  thΓ΄ng tin username admin

-> sqlmap query

-> save request login tα»« burpsuite vΓ  chαΊ‘y quΓ©t qua file save

-> result

-> tΓ¬m thαΊ₯y database jetadmin -> truy cαΊ­p data trong Δ‘Γ’y

-> tΓ¬m được password được lΖ°u dΖ°α»›i hash -> crack vα»›i john vΓ  cΓ³ được password admin

sau khi login cΓ³ thể tΓ¬m thαΊ₯y flag thα»© 4 ( giao diện khΓ‘ giα»‘ng clone tα»« AdminLTE )

5. Command

KΓ©o xuα»‘ng dΖ°α»›i cΓ³ thể thαΊ₯y phαΊ§n send email -> test 1 vΓ i lα»—i ở Δ‘Γ’y , vΓ¬ mα»₯c tiΓͺu tiαΊΏp theo lΓ  gaining acesss nΓͺn ta sαΊ½ test cΓ‘c lα»—i cΓ³ thể trigger os command vΓ  cΓ³ được foothold trΖ°α»›c

-> cα»₯ thể test OS command

trΓ΄ng bΓ¬nh thường nhỉ -> chα»§ yΓͺu view burpsuite để test nΓͺn nhαΊ­p Δ‘Ζ‘n giαΊ£n trΖ°α»›c

request post Δ‘i khΓ‘ Δ‘Γ‘ng chΓΊ Γ½ về cΓ‘ch handle message :

cΓ³ thể thαΊ₯y Δ‘Γ’y lΓ  output cα»§a hΓ m preg_replace trong php

-> tα»« Δ‘Γ’y tiαΊΏp tα»₯c search thΓͺm về 1 sα»‘ exploit liΓͺn quan Δ‘αΊΏn cΓ‘ch xα»­ lΓ­ cα»§a hΓ m nΓ y

Tα»« bΓ i blog -> cΓ³ thể thαΊ₯y khi sα»­ dα»₯ng modifier e trong PHP tα»« hΓ m preg_replace(), cho phΓ©p PHP thα»±c thi bαΊ₯t kα»³ mΓ£ nΓ o được thay thαΊΏ trong chuα»—i.

-> Điều nΓ y cΓ³ thể dαΊ«n Δ‘αΊΏn lα»— hα»•ng thα»±c thi mΓ£ tα»« xa (Remote Code Execution - RCE) nαΊΏu khΓ΄ng xα»­ lΓ½ Δ‘αΊ§u vΓ o mα»™t cΓ‘ch cαΊ©n thαΊ­n.

VΓ­ dα»₯ :

Khi sα»­ dα»₯ng e modifier, PHP sαΊ½ coi replacement nhΖ° mα»™t biểu thα»©c vΓ  thα»±c thi nΓ³ thay vΓ¬ chỉ Δ‘Ζ‘n thuαΊ§n thay thαΊΏ chuα»—i.

NαΊΏu replacement chα»©a mΓ£ PHP tα»« Δ‘αΊ§u vΓ o cα»§a người dΓΉng, mΓ£ nΓ y sαΊ½ được thα»±c thi. ĐÒy lΓ  mα»™t trong nhα»―ng rα»§i ro bαΊ£o mαΊ­t phα»• biαΊΏn khi sα»­ dα»₯ng preg_replace vα»›i e.

Modifier i vΓ  e trong biểu thα»©c chΓ­nh quy (preg_replace) cα»§a PHP cΓ³ sα»± khΓ‘c biệt cΖ‘ bαΊ£n về chα»©c nΔƒng vΓ  cΓ‘ch hoαΊ‘t Δ‘α»™ng:

Vì sao lẑi vậy ->

  1. Modifier i:

    • i lΓ  viαΊΏt tαΊ―t cα»§a case-insensitive, tα»©c lΓ  khΓ΄ng phΓ’n biệt chα»― hoa vΓ  chα»― thường.

    • Khi sα»­ dα»₯ng i, biểu thα»©c chΓ­nh quy sαΊ½ tΓ¬m kiαΊΏm chuα»—i mΓ  khΓ΄ng quan tΓ’m Δ‘αΊΏn chα»― hoa hay chα»― thường. VΓ­ dα»₯: /test/i sαΊ½ khα»›p vα»›i cαΊ£ "Test", "TEST", vΓ  "test".

    • i chỉ αΊ£nh hưởng Δ‘αΊΏn cΓ‘ch khα»›p chuα»—i vΓ  khΓ΄ng hề can thiệp vΓ o việc thα»±c thi mΓ£ hoαΊ·c Δ‘Γ‘nh giΓ‘ biểu thα»©c. Do Δ‘Γ³, nΓ³ khΓ΄ng cΓ³ rα»§i ro bαΊ£o mαΊ­t trα»±c tiαΊΏp nΓ o.

  2. Modifier e:

    • e lΓ  viαΊΏt tαΊ―t cα»§a evaluate (Δ‘Γ‘nh giΓ‘), cho phΓ©p PHP thα»±c thi mΓ£ PHP trong biểu thα»©c thay thαΊΏ khi khα»›p chuα»—i.

    • Khi sα»­ dα»₯ng e, preg_replace sαΊ½ xem nα»™i dung cα»§a phαΊ§n thay thαΊΏ nhΖ° mα»™t Δ‘oαΊ‘n mΓ£ PHP vΓ  thα»±c thi nΓ³.

    • Điều nΓ y cΓ³ nghΔ©a lΓ  bαΊ₯t kα»³ mΓ£ PHP nΓ o trong phαΊ§n thay thαΊΏ đều sαΊ½ được thα»±c thi

-> tαΊ­n dα»₯ng Δ‘iều nΓ y -> modify i -> e trong request gα»­i Δ‘i vΓ  test command execute

lúc send message , message param cần chứa filed thực thi command thay vì message text thông thường

-> trigger thΓ nh cΓ΄ng -> chΓ¨n command để send rev-shell để lαΊ₯y acess vΓ o server

-> cαΊ§n thα»­ 1 vΓ i shell mα»›i trigger vΓ  cΓ³ connect thΓ nh cΓ΄ng ( test 3-4 cΓ‘i shell sh khΓ‘c nhau )

đọc file flag cΓ³ thể thαΊ₯y trong www-data user ở Δ‘Γ’y vΓ  cΓ³ được flag thα»© 5

6. Overflown

Upgrade cΓ‘i shell lΓͺn để nhΓ¬n cho dα»… hΖ‘n :

connect lαΊ‘i :

trΓ΄ng dα»… tΖ°Ζ‘ng tΓ‘c hΖ‘n 1 chΓΊt rα»“i

XΓ‘c Δ‘α»‹nh version system linux hiện tαΊ‘i vΓ  tΓ¬m suid :

phiΓͺn bαΊ£n nΓ y search khΓ‘ nhiều lα»—i nhΖ° double free, race condition ,... cΓ²n ở file Δ‘Γ£ cung cαΊ₯p cΓ³ thể lΓ  buffer overflow -> Δ‘αΊΏn shellcode
kΓ©o file về local machine để phΓ’n tΓ­ch trΖ°α»›c Δ‘Γ£

Link from exploit.db report : https://www.exploit-db.com/shellcodes/46907arrow-up-right

mΓ‘y target :

mΓ‘y local

not stripped

check sec bαΊ£o vệ file :

  • KhΓ΄ng bαΊ­t stack canary, cΓ³ thể buffer overflow

  • KhΓ΄ng bαΊ­t Full RELRO, khiαΊΏn bαΊ£ng GOT dα»… bα»‹ ghi Δ‘Γ¨.

  • KhΓ΄ng cΓ³ NX vΓ  PIE, cho phΓ©p thα»±c thi mΓ£ trΓͺn stack vΓ  vα»‹ trΓ­ mΓ£ chΖ°Ζ‘ng trΓ¬nh cα»‘ Δ‘α»‹nh.

  • CΓ³ cΓ‘c phΓ’n Δ‘oαΊ‘n RWX, tαΊ‘o Δ‘iều kiện cho việc thα»±c thi mΓ£ Δ‘α»™c.

view file vα»›i ida

  • BiαΊΏn s được khai bΓ‘o vα»›i kΓ­ch thΖ°α»›c 64 byte vΓ  được tαΊ‘o trong main -> lΖ°u trong stack

  • HΓ m fgets dΓΉng để đọc Δ‘αΊ§u vΓ o tα»« stdin vΓ  lΖ°u nΓ³ vΓ o buffer string.

  • -> fgets ở Δ‘Γ’y đọc tα»‘i Δ‘a 512 byte, trong khi s chỉ cΓ³ 64 byte -> buffer overflow stack

  • printf in Δ‘α»‹a chỉ cα»§a biαΊΏn s

  • cΓ³ thể chΓ¨n shellcode qua biαΊΏn s (NX ko bαΊ­t -> cΓ³ thể exec code)vΓ  ghi Δ‘Γ¨ return address về shellcode address vα»«a chΓ¨n vΓ  lαΊ₯y được shell

calculate byte cαΊ§n ghi Δ‘Γ¨ :

offset lΓ  72. ĐÒy lΓ  sα»‘ byte cαΊ§n thiαΊΏt để ghi Δ‘Γ¨ return address (RIP).

-> chèn : len(shellcode + somebyte ) = 72 -> + address(shellcode=address leak)

cαΊ§n mở port thΓͺm trΓͺn server -> viαΊΏt script attack connect qua port nΓ y

mở port vα»›i socat

script :

-> shellcode run /bin/sh

script attack

-> truy cαΊ­p được user alex vΓ  cΓ³ flag thα»© 6

  • note : trΓͺn lΓ­ thuyαΊΏt lΓ  sαΊ½ nhΖ° thαΊΏ vΓ  cΓ³ thể thαΊ₯y 1 sα»‘ bΓ i writeup sαΊ½ lΓ m kiểu nhΖ° nΓ y nhΖ°ng mΓ  hiện tαΊ‘i mΓ¬nh giαΊ£i bΓ i nΓ y thΓ¬ mở port kiểu gΓ¬ cΕ©ng khΓ΄ng connect được nΓͺn phαΊ£i dΓΉng cΓ‘ch khΓ‘c

  • Ở Δ‘Γ’y check server cΓ i pwntools cho python2.7 -> sα»­a script attach vΓ o file /home/leak vΓ  curl file sang target machine -> chαΊ‘y trα»±c tiαΊΏp trΓͺn server

-> di chuyển file : mở python server ở mΓ‘y attack sau Δ‘Γ³ ở mΓ‘y target curl file về lΓ  được, tΓͺn file Δ‘αΊ·t tuα»³ Γ½

-> script sαΊ½ chαΊ‘y vα»›i python2

chuyển sang alex thΓ nh cΓ΄ng
giờ cΓ³ thể đọc file flag rα»“i -> tiện chyển cΓ‘c file crypto , exploit gΓ¬ kia về để lΓ m cΓ‘c bΖ°α»›c tiαΊΏp liΓͺn quan Δ‘αΊΏn crypto

NΓͺn tαΊ‘o ssh key để duy trΓ¬ connect vΓ¬ sαΊ½ rαΊ₯t nhanh mαΊ₯t connect Δ‘αΊΏn alex shell

-> gen 1 key trΓͺn attack machine , copy pub key vΓ o .ssh/authorized_keys

duy trΓ¬ connect sαΊ½ lΓ’u dΓ i hΖ‘n vΓ  di chuyển cΓ‘c file sαΊ½ dα»… dΓ ng hΖ‘n

7. Secret Message

sα»­ dα»₯ng scp -> chuyển hαΊΏt file về để dα»… phΓ’n tΓ­ch

sαΊ½ cαΊ§n decrypt message -> cΓ³ thể cΓ³ password file zip để mở file :

file crypt.py :

Xor đƑn giản không có gì đÑng chú ý

bruteforce thΓ΄i ( cΓ³ thể viαΊΏt script ) -> cαΊ§n key , tΓ¬m key

πŸ‘ bruteforce vα»›i xortool :

length 17 cΓ³ tỉ lệ khΓ‘ cao
gen mα»› sau bin vα»›i cΓ‘c char khαΊ£ thi

-> tαΊ‘o 1 cΓ‘i script vα»›i cαΊ£ plain text char Δ‘αΊ±ng sau

vΓ  crack file zip vα»›i john (zip2john để lαΊ₯y hash cα»§a file zip trΖ°α»›c sau Δ‘Γ³ crack vα»›i wordlist lΓ  cΓ‘c key vα»«a gen )

cΓ²n ở Δ‘Γ’y mΓ¬nh Δ‘Γ£ crack rα»“i

-> decrypt vα»›i key cΓ³ được :

cΓ³ flag thα»© 7 vΓ  thΓ΄ng tin về cΓ‘c port cho cΓ‘c chall tiαΊΏp theo ngoΓ i ra cΓ³ thΓͺm 2 file về pwn sau khi giαΊ£i nΓ©n , :) mΓ¬nh nghΔ© mΓ¬nh sαΊ½ Δ‘i hỏi thΓͺm về 2 bΓ i nΓ y lΓ  memo vΓ  membermanager member

8. Elasticity

service -> host detect and query cα»§a bΓͺn soc -> check port listen service

forward port về thôi ( 9300 , 9200 , forward cả về )

cαΊ§n kαΊΏt nα»‘i Δ‘αΊΏn mα»™t cluster cα»§a Elasticsearch.

Cluster cα»§a Elasticsearch: Elasticsearch lΓ  mα»™t hệ thα»‘ng tΓ¬m kiαΊΏm vΓ  phΓ’n tΓ­ch phΓ’n tΓ‘n. Mα»™t cluster lΓ  tαΊ­p hợp cΓ‘c nΓΊt (nodes) cα»§a Elasticsearch lΓ m việc cΓΉng nhau.

DΓΉng java hoαΊ·c python viαΊΏt script connect lΓͺn đều được

dΓΉng java :

complie chΖ°Ζ‘ng tΓ¬nh trΓͺn vΓ  sα»­ dα»₯ng search

-> truy xuαΊ₯t dc data vΓ  cΓ³ flag thα»© 8

9. Member Manager

Heap -> cΓ³ thể tham khαΊ£o tα»« bΓ i sau , cα»₯ thể cΓ³ thể mΓ¬nh sαΊ½ viΓͺt sau , sαΊ½ khΓ‘ lΓ  dΓ i

script attack :

connect exploit vΓ  cΓ³ được flag thα»© 9

10. More Secrets

tα»« member manager -> cΓ³ thΓ΄ng tin cα»§a user tony vΓ  liΓͺn quan Δ‘αΊΏn crypto

πŸ‘ mΓ¬nh hΖ‘i lười nΓͺn mΓ¬nh sαΊ½ để script ở Δ‘Γ’y, ko cΓ³ gΓ¬ nhiều chα»§ yαΊΏu lΓ  rsa :

cΓ‘c file cung cαΊ₯p :

run vΓ  cΓ³ được key sau Δ‘Γ³ decrypt vα»›i key Δ‘Γ£ cΓ³

vΓ  cΓ³ được flag thα»© 10

11. Memo

somewher on CTF i found this , tα»« 1 người bαΊ‘n Δ‘Γ£ giΓΊp tΓ΄i phαΊ§n pwn nΓ y

Last updated