Tag Archives: websec

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 🙂