Jump to content
Dragos

[RST] CTF #1 - content & source codes

Recommended Posts

  • Moderators

Crypto

- Biletul criptat https://github.com/RSTCon/ctf-rst-crypto/tree/main/Biletul criptat

- Strabunicul lui Cezar https://github.com/RSTCon/ctf-rst-crypto/tree/main/Strabunicul lui Cezar

- Asteroidul https://github.com/RSTCon/ctf-rst-crypto/tree/main/Asteroidul

- Steagnul corupt https://github.com/RSTCon/ctf-rst-crypto/tree/main/Steagul corupt

 

Diverse

- Animalul https://github.com/RSTCon/ctf-rst-diverse/tree/main/Animalul

- Poza https://github.com/RSTCon/ctf-rst-diverse/tree/main/Poza

 

Forensics

- Traficant https://github.com/RSTCon/ctf-rst-forensics/tree/main/Traficant

- RST https://github.com/RSTCon/ctf-rst-forensics/tree/main/RST

 

Networking

- Reteaua https://github.com/RSTCon/ctf-rst-networking/tree/main/Reteaua

- Server https://github.com/RSTCon/ctf-rst-networking/tree/main/Server

 

Reversing

- Crackpass https://github.com/RSTCon/ctf-rst-reversing-crackpass

- NoFlag https://github.com/RSTCon/ctf-rst-reversing-noflag

 

Stegano

- Hecsagon https://github.com/RSTCon/ctf-rst-stegano/tree/main/Hecsagon

- Sigla https://github.com/RSTCon/ctf-rst-stegano/tree/main/Sigla

- Valuri https://github.com/RSTCon/ctf-rst-stegano/tree/main/Valuri

- Stegano II https://github.com/RSTCon/ctf-rst-stegano/tree/main/Stegano II

 

Web

- API https://github.com/RSTCon/ctf-rst-web-api

- Elevi https://github.com/RSTCon/ctf-rst-web-elevi

- Admin https://github.com/RSTCon/ctf-rst-web-admin

- SMS-uri https://github.com/RSTCon/ctf-rst-web-sms-uri

- Onboarding https://github.com/RSTCon/ctf-rst-web-onboarding

 

Challenge-urile au fost create de membrii forumului @YKelyan, @Nytro si @Dragos.

  • Like 1
  • Upvote 1
Link to comment
Share on other sites

M-am uitat un pic peste astea de la Web, mai exact pe API si Admin pentru ca pe astea am incercat sa le fac la CTF.

Poate sunt eu mai boomer, dar nu vad rostu' la astfel de "concursuri". Mi se pare super lame, no offense. La admin, ca sa castigi, trebuia sa postezi si "isadmin"..really? Nu stiu daca testele astea sunt doar childish sau complet useless si time wasters. Posibil toate variantele.

Nu va suparati pe mine. Apreciez initiativa de a face ceva pentru comunitate, de a anima un pic atmosfera, dar tipul asta de exercitii nu le inteleg.

 

EDIT: pentru mine, ca noob, cel mai mare challenge a fost sa-mi dau seama ce naiba trebuie facut pe site-ul ala. Am intrat si era o lista de "titluri" fara noima. Dau click pe "Admin", vad "Doar adminii au acces la flag!" si zic "fuck it, de ce rahat l-au mai pus daca noi nu avem acces la el".. A trebuit sa mai intru pe cateva sa-mi dau seama ca flag-ul trebuie aflat folosind globuri de cristal (altfel n-aveai cum pentru ca cele incercate de mine n-aveau logica) si apoi introdus in inputul ala.

 

EDIT #2: dau cu hate pentru ca eu n-am reusit sa rezolv nici unul :(

Edited by Wav3
Link to comment
Share on other sites

1 hour ago, Wav3 said:

M-am uitat un pic peste astea de la Web, mai exact pe API si Admin pentru ca pe astea am incercat sa le fac la CTF.

Poate sunt eu mai boomer, dar nu vad rostu' la astfel de "concursuri". Mi se pare super lame, no offense. La admin, ca sa castigi, trebuia sa postezi si "isadmin"..really? Nu stiu daca testele astea sunt doar childish sau complet useless si time wasters. Posibil toate variantele.

Nu va suparati pe mine. Apreciez initiativa de a face ceva pentru comunitate, de a anima un pic atmosfera, dar tipul asta de exercitii nu le inteleg.

 

EDIT: pentru mine, ca noob, cel mai mare challenge a fost sa-mi dau seama ce naiba trebuie facut pe site-ul ala. Am intrat si era o lista de "titluri" fara noima. Dau click pe "Admin", vad "Doar adminii au acces la flag!" si zic "fuck it, de ce rahat l-au mai pus daca noi nu avem acces la el".. A trebuit sa mai intru pe cateva sa-mi dau seama ca flag-ul trebuie aflat folosind globuri de cristal (altfel n-aveai cum pentru ca cele incercate de mine n-aveau logica) si apoi introdus in inputul ala.

 

EDIT #2: dau cu hate pentru ca eu n-am reusit sa rezolv nici unul :(

 

Challengeul cu isadmin nu este chiar scos din burta. In cel putin 2 situatii se putea descoperi acel parametru:

 

1. content fuzzing - intr-un pentest/bug bounty nu faci content discovery doar pe fisiere si foldere cu dirbuster ca acum 15 ani. Faci content discovery si pe parametri GET, POST, cookies, headers si altele. Nu sunt rare situatiile in care gasesti ceva interesant, un parametru care se reflecta si scoti un XSS, un header care iti permite cache poisoning sau un cookie care iti ofera ceva permisiuni suplimentare. Da, poate nu mai gasesti "isadmin=true" ca acum 10 ani prin minunatele "Insecure Cookie Handling", dar poate ajungi intr-o interfata de development, endpoint-uri interne plus alte surprize. 

2. mass assignment - desi nu e _exact_ cazul aici, challenge-ul simuleaza indeaproape vulnerabilitatile de tip mass assignment, unde "nimerirea" unui astfel de parametru te poate duce la privilege escalation (ca in cazul de fata), account takeover (manipulare user ID). Vezi aici mai multe detalii: https://cheatsheetseries.owasp.org/cheatsheets/Mass_Assignment_Cheat_Sheet.html

 

Edit: Exercitiile astea, chiar daca nu sunt la ordinea zilei in rapoartele de pentest, sunt derivate din lucruri intalnite. "Chinuiala" sa le descoperi iti ofera rezilienta, sentimentul de "ce nu am verificat", mindsetul de "try harder", care sunt folositoare in viata de zi cu zi. 

 

  • Upvote 4
Link to comment
Share on other sites

Dap, ideea cu Admin a fost de Mass Assignment. Exemplu: https://ropesec.com/articles/mass-assignment/ (dar sunt multe altele)

Mass Assignment e o vulnerabilitate, din pacate, mai putin cunoscuta dar destul de periculoasa si mai ales destul de comuna. In practica, developerii, ca sa faca lucrurile mai usor fac un "bind" intre ce vine de la frontend si un obiect de pe backened (e.g. User). Obiectul de pe server contine de multe ori mai multe proprietati decat necesare si le ignora daca sunt NULL, dar daca nu sunt, le poate seta printr-un query din care ia brut, toate proprietatile care vin din frontend. Asta e destul de usor de facut si scapa de multa munca manuala de a lua fiecare field in parte, mai ales cand acestea se mai schimba.

In plus, e o vulnerabilitate pe care am intalnit-o in practica de mai multe ori. Si altii au intalnit-o des. Si e destul de urata.

In practica e uneori mai simplu, poti vedea pe undeva mai multe proprietati ale celui obiect (e.g. pe GET /user) dar pe PATCH/PUT /user sa fie doar firstname de exemplu. M-am gandit sa fac asta, dar astfel ar fi fost prea usor. Daca puneam in request isadmin=0 dura 30 de secunde challenge-ul.

Scopul acestui exercitiu a fost explicit de a prezenta aceasta vulnerabilitate. Sper ca are sens.

Ma bucur sa vad astfel de comentarii. Pot exista de asemenea astfel de discutii si referitoare la celelalte exercitii (e.g. Server sau Reteaua) dar va asigur ca si ele au avut un scop si ca sunt probleme practice, care se intampla in viata de zi cu zi. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...