Category Archives: IT

Security Espresso – Challenge for def.camp tickets

I found the flag pretty easy but, sadly, out of 9 other people that solved it .. random.org did not like me that much :))

Here is a writeup for the challenge.

It all started with a FB post and a promise I made with myself .. never go to paid security conferences if I don’t get there by free  : and here it was .. a simple form:

First thing, first was to test with a random email and password so I can catch errors and so on. The first error was about a wrong username so I took the emails present on the same page and tried them until I found the correct one, then started hydra to brute force it (well, I haven’t seen the hints so I tried it with another dictionary at first).

hydra -l contact@security.security -P rockyou.txt 45.76.95.148 -s 5000 http-post-form “/:email=^USER^&password=^PASS^&submit=fdf:F=Wrong password!” -vV -t 32 -f

After getting access to the system, there was a hint in the text itself so I tried to see a point so I can increase the level from 0 to 10 to see what happens. There were no endpoints so … hmm .. looked in the cookies, found one that was looking like an md5 string so I used a “decrypt” website and it was “0” … LOL, all I had to do was to md5(“10”) then replace the cookie content and that was all 🙂

 

CTF : 2018 : ReplyCTF : Web : CAPTCHAFLAG

Datele problemei:

M-am uitat in codul sursa si am vazut :
<!– HACKED VUVkYWRtTnRNR2RaVjA0d1lWYzVkVkJUU1hWTWVVa3JVRWRzZFdOSVZqQkpTRkkxWTBkVk9VbHVUakZaYlRGd1pFTkpaMkp0Um5SYVZEQnBZME5KWjJSdFJuTmtWMVU1U1cxNGRtSkRTV2RRYW5kMllWYzFkMlJZVVNzPQ== –>

Cand vad “=” imi sare gandul automat la base64 .. am folosit de 3 ori un decoder pentru el si am dat de stringul initial:

<form action=”./”><input type=”submit” name=”p” value=”lol” ></input> 

Am apelat URL-ul ?p=lol si am observat ca cele 3 imagini cu numere se schimba .. sunt intre 1 si 15 si .. in codul sursa se observa ca tot base64 e numele lor 🙂

Le-am luat pe toate 15 in ordine crescatoare si a reiesit stringul ..
Q29tZSBvbiBpdCBIHRvIG92ZXJjb214gY29uZ3JhdHVsYXRpb25zLCB5b3UndmUgZm91bmQgdGhlIGZpcnN0IGZsYWc6CntGTEc6MVRzNEwwTmdXNHlUMDdoM1QwcDFmWTBVVzRuTjRSMGNLblIwTEx9Ck5vdyB3aWxsIHlvdSBiZSBhYmxlIHRvIG92ZXJjb21lIHRoZSBuZXh0IGxldmVsPyA7KQ==

Pus tot pe base64decode.org ..
Come on it Hݙ\^ congratulations, you’ve found the first flag:
{FLG:1Ts4L0NgW4yT07h3T0p1fY0UW4nN4R0cKnR0LL}
Now will you be able to overcome the next level? 😉

Yuppy .. we have the flag 🙂 That was all folks!

Browsing (mai) sigur – Cum sa ai propriul tau VPN

Acum ceva timp am vorbit despre serviciile de VPN aici: https://www.nekhbet.ro/2018/09/21/vpn-panaceul-securitatii.html .

Ok, la ce e necesar propriul meu serviciu de VPN daca tot nu e 100% sigur? Pai nimic nu e 100% sigur dar avantajele sa avem propriul nostru serviciu de VPN sunt:

  • te poti conecta securizat de pe orice tip de conexiune (chiar si daca e un WiFi open (fara parola) sau e dintr-un bar/loc necunoscut)
  • ai un alt IP decat cel de acasa (la unele lucruri e util, la altele ba .. asta intr-un articol viitor “Cum sa fi (mai) invizibil pe internet”)
  • logurile nu le mai are nimeni, doar tu .. depinde de tine ce faci cu ele 🙂 (folosind un serviciu de VPN externalizat nu ai nicio certitudine ca tin sau nu loguri, desi legal/logic vorbind .. e cam improbabil sa nu le tina)
  • mult mai ieftin, pe https://www.hetzner.com/cloud e 2.5 euro / luna cel mai ieftin VPS (virtual private server, pe el va fi instalat serverul nostru de VPN)

PS: Nimeni nu poate garanta niciodata ca daca faci tampenii nu vei fi prins :). “Extrem de putin probabil” e diferit de “niciodata”.

Ok, daca esti convins .. o sa pun pas cu pas ce trebuie facut pentru hetzner. Pentru alte servicii pasii ar trebui sa fie cam la fel, dati-mi un mesaj daca aveti nevoie de ajutor cu ceva.

  1. Cumparare VPS LOL .. cel mai ieftin e si cel mai bun in cazul nostru .. un server de VPS nu are nevoie de cerinte mari si traficul de 20TB e .. sa zicem asa .. 660 GB / zi :)) pentru tot blocul de 10 etaje cu mai multe scari suficient. Eu, ca preferinta, am ales Ubuntu latest, in momentul asta e 18.04.
  2. Te conectezi la el cu Putty (windows guys) sau terminalul din linux
    ssh root@IP
    unde IP e IP-ul alocat VPS-ului tau.
  3. Ok, suntem pe el .. urmatoarele 2 comenzi sa ajungem la zi cu actualizarile de sistem
    apt update
    apt upgrade
  4. Avem de ales intre mai multe servere de VPN, dar OpenVPN pare solutia ideala. Pentru instalare urmati acest tutorial: https://www.cyberciti.biz/faq/howto-setup-openvpn-server-on-ubuntu-linux-14-04-or-16-04-lts/ , cu exceptia ca la “Find your public IP address” noi stim deja adresa IP de pe interfata externa 🙂 . Recomand alegerea “TCP” ca protocol, e putin mai incet dar mult mai sigur ca si integritate a datelor si a “Google” ca si resolver de DNS. De fapt .. daca nu va intereseaza in detaliu, tot tutorialul de mai sus inseamna doar 3 comenzi (rulati una cate una):
    wget https://git.io/vpn -O openvpn-install.sh
    bash openvpn-install.sh
    rm openvpn-install.sh
  5. Asta a fost tot, serverul e instalat. Felicitari!
  6. Mai trebuie sa ne configuram si pe local (client, adica calculatorul/deviceul de acasa) sa ne conectam la serverul de VPN 🙂
    Instalarea s-a incheiat printre ultimele linii cu ceva de genul:
    “Your client configuration is available at: /root/client.ovpn”
    Asa ca trebuie sa copiem acest fisier pe calculatorul/device-ul client: ori prin WinSCP (pentru cei cu Windows) ori cu “scp” pentru cei cu Linux.
    scp root@IP:/root/client.ovpn ./
    Acum sa configuram clientul in sinea lui, reteta pentru Linux/Ubuntu/Debian:
    sudo su (doar daca nu suntem deja root, daca suntem deja e redundanta si nu face nimic)
    apt install openvpn resolvconf
    daca comanda de mai sus da orice eroare: apt install -f si apoi iarasi
    apt install openvpn resolvconf
    Acum avem instalat clientul de openvpn si ii rescriem configurarile cu fisierul nostru de pe server:
    cp client.ovpn /etc/openvpn/client.conf
    E aproape gata 🙂 Porniti serviciul /etc/init.d/openvpn start
    Dati un restart si … deschideti browserul in incognito mode/private browsing (chrome sau firefox) si https://www.whatismyip.com/ , ar trebui sa apareti ca nemti sau finlandezi :)Orice sugestie e binevenita 🙂

WebSec – Same-Origin Policy (SOP)

Este un concept important din modelul de securitate al aplicatiilor web. Adica .. un browser permite scripturilor dintr-o pagina X sa acceseze datele dintr-o pagina Y DOAR daca ambele au aceiasi origine (hostname, port, protocol).

Exemplu de ce s-ar intampla daca nu ar exista SOP .. intri pe acest site, da? Eu scriu un script care ar face un request POST la facebook.com si in numele tau as scrie “Vedeti site-ul lui Sorin!”. Ar fi misto nu? :))

Binenteles .. SOP se aplica doar requesturilor din scripturi si fonturilor. Fisierele “statice” (imagini, media, CSS, alte scripturi JS incarcate prin <script> etc) sunt exceptate.

Din cauza acestor restrictii au aparut metode valide pentru a face bypass:

  • “document.domain” property din javascript
  • Cross-Origin Resource Sharing (CORS)
  • Cross-document messaging via “postMessage” din javascript, un exemplu frumos: http://jsfiddle.net/bmknight/A7YfK/
  • JSONP
  • WebSockets

Despre ele in urmatoarele articole 🙂

Bibliografie:
https://en.wikipedia.org/wiki/Same-origin_policy
https://tools.ietf.org/html/rfc6454

WebSec – Cookies

Cateva lucruri/concepte:

  • Acces cookieuri

Sa definim niste termeni:
Avem domain.com – domeniul de baza/root
test1.domain.com si test2.domain.com – subdomenii nivel 1 ale domain.com
a.test1.domain.com – subdomeniu nivel 2 al test1.domain.com

1. Un cookie setat pe domeniul principal domain.com este accesibil TUTUROR subdomenilor sale, indiferent de nivel
2. Un cookie setat pe test1.domain.com este accesibil TUTUROR subdomenilor sale, indiferent de nivel (ca mai sus) DAR nu este accesibil celorlalte subdomenii de pe acelasi nivel cu el insusi (deci test2.domain.com nu poate citi acest cookie).
3. O aplicatie poate seta cookieuri: (sub)domeniului pe care ruleaza, tuturor subdomeniilor sale SI parintelui sau.
Deci: de pe test1.domain.com putem seta cookieuri: test1.domain.com, domain.com si a.test1.domain.com

 

  • Flaguri
  1. secure … accesibile doar prin https
  2. http-only .. inaccesibile din limbaje client-side (javascript)

CTF – Pregatire sistem

M-am tot gandit (in timp ce mergeam pe strada :)) ) si cred ca, solutia ideala momentan, este o masina virtuala. De ce? Pai … o poti muta de pe un laptop pe altul foarte usor, instalezi virtualbox, copiezi fisierul si asta e tot + poti face backup/restore extrem de usor (e un singur fisier totul, nu?).

Ca sistem de operare am ales Lubuntu (https://lubuntu.net/downloads/) .. mult mai putine resurse necesare decat Ubuntu. De ce nu o versiune mai de “doamne-ajuta”? Pai .. sunt pline de tot felul de tool-uri inutile mie (sunt interesat de partea de web, nu RE, crypto and so on) + multe alte motive ce tin de incredere.

Ca browsere folosesc Chrome/ium pentru partea de browsing normala si Firefox pentru a-l folosi cu Burp (https://portswigger.net/burp/communitydownload) + Firebug. 2 browsere sunt mai ok pentru ca nu mai stai sa tot activezi/dezactivezi setarile de proxy + nu-mi place sa am add-onuri (stiu, sunt add-onuri pentru enable/disable proxy-uri).

O sa tot adaug chestii instalate cu fiecare CTF la care particip, in functie de nevoi, nu doar asa sa am cat mai multe tool-uri 😛

!!! Orice sugestie e mai mult decat binevenita !!!

Securitatea web (WebSec)

Cred ca sunt pasionat de asa ceva de prea multi ani si nu am facut prea multe lucruri concrete pe partea asta. Da, m-am mai jucat la CTF-uri, pocked some random websites and so on dar .. nimic structurat cu adevarat. Mi-am propus ca de azi incolo sa fac minim un challenge pe saptamana si sa scriu aici cum l-am rezolvat. La inceput o sa fie banale dar, cu timpul, sper sa progresez incat partea de web din CTF-uri sa fie rezolvabila 🙂

VPN – Panaceul securitatii?

Sa incepem cu inceputul … ce este acest VPN? Simplu .. o retea privata virtuala.
Adica (spus simplu)? Adica avem un dispozitiv A in reteaua X si un altul B in reteaua Y. Daca folosim un VPN dispozitivul A poate comunica cu dispozitivul B ca si cum ambele ar fi fizic in reteaua Y (sau X, depinde cine/unde face conexiunea).

Practic .. eu sunt freelancer, lucrez cu clienti care au anumite servicii deschise doar in reteaua lor interna. Ok? Dar eu lucrez de acasa sau din cafenele sau din alte locuri, nu de la birou si am nevoie de acele servicii. Solutia pentru a ma conecta la ele se numeste VPN 🙂 Laptopul meu devine parte din reteaua lor interna din cauza asta si eu pot accesa totul ca si cum as fi in cladirea lor.

Pana aici totul e OK .. VPN-ul isi face treaba perfect (bine, bine .. nu exista perfectiune, .. isi face treaba BINE).

Dar asta a fost introducerea :)) Problema principala e ca sunt o multime de servicii VPN care toate promit MINCIUNI frumoase legate de securitate. O sa pun la screenshoturi la primele 2 rezultate ce apar pe google (toti mint, ma refer la cei ce au in marketing “security”!!)

 

De ce am scris ca ei mint? La nivel conceptual, in sensul serviciilor de mai sus, VPN-ul e de fapt la fel de bun ca orice proxy GRATUIT de pe hidemyass sau alte siteuri de gen. Care e diferenta intre un proxy gratis si un VPN pe bani atunci? Niciuna! Ahh ba da .. ramai cu 10 usd/luna in buzunar in plus :))

Am cautat pe net pentru acest articol mai multe cazuri cand providerii de minciuni servicii VPN au dat-o in bara public dar am dat de acest articol https://gist.github.com/joepie91/5a9909939e6ce7d09e29 pe care il sustin 100% asa ca nu are rost sa pierd vremea traducandu-l in romana cand toata lumea stie engleza deja 🙂
CITITI-L CU ATENTIE !

Bibliografie:
– https://computer.howstuffworks.com/vpn3.htm (de aici am luat prima poza)
– https://en.wikipedia.org/wiki/Virtual_private_network
– https://ro.wikipedia.org/wiki/Re%C8%9Bea_privat%C4%83_virtual%C4%83