Bug bounties da inizio 2024

cosa succede se per un po di tempo non trovi nulla o trovi solo piccole vulnerabilita’ che pagano poco? non ho ben capito se lavori totalmente in autonomia o se sei parte di un azienda.

nel caso tu fossi totalmente indipendente immagino 2 delle challenge che una persona come te puo’ avere sono:

  • gestirsi i soldi per compensare i periodi dove guadagni meno perche’ non trovi vulnerabilita’ che pagano bene
  • scegliere bene dove dedicare il proprio tempo in modo da non puntare solo a vulnerabilita’ che pagano tanto essendo probabilmente piu rare ma avere un giusto mix di qualcosa di facile da trovare che paga poco + fare qualche tentativo piu grosso?

Ho un day job (misto tra un po’ di dev work, devops (Kubernetes) e red teaming interno) con stipendio fisso, quindi sono coperto perche’ di capitare capitano periodi dove non trovo niente per qualche settimana oppure trovo solo roba piccola, anche se adesso e’ piu’ raro. Con bug bounties e’ dura all’inizio fino a quando cominci a ricevere inviti per private programs, perche’ in questi sono le aziende con i suggerimenti della platform (tipo HackerOne) a selezionare the ethical hackers che vogliono. Se sei fortunato e raggiungi un buon livello di “impact” con quello che trovi, dopo un po’ gli inviti cominciano ad arrivare. Io ne ricevo ogni settimana. Ho piu’ private programs a disposizione che tempo per lavorarci sopra :smiley:

Soltanto oggi ne ho ricevuti 2-3. Fare collaborazione non mi piace. L’ho fatto qualche volta e ci ho rimesso, nel senso che io trovavo le vulns ma dovevo dividere la reward con altri che non aiutavano molto. Ma in generare mi piace fare da solo.

Scegliere il programma adatto e’ abbastanza difficile. In genere do’ la priorita’ a programs iniziati da poco perche’ c’e’ piu’ probabilita’ di trovare problemi.

2 Likes

questi mi sembrano errori basici, far parsare dei file che possono essere modificati arbitrariamente :vface:

Il problema principale e’ che consentono ad un attacker di fare path traversal. Queste vulnerabilita’ sono abbastanza comuni. La raccomandazione e’ di usare sempre una allowlist per i path consenti ed evitare path traversal completamente se possibile.

In generale, le applicazioni PHP tendono ad essere piu’ vulnerabili di altre basate su frameworks come Rails per esempio, che ti copre da un gran numero di problemi automaticamente.

ho casi diretti in cui i dev mi hanno risposto “ma perchè devo controllare anche questo dato che mi manda il front end? l’abbiamo fatto noi…” quando ho chiesto che vengano fatti i controlli sui dati che arrivano al BE, e il motivo della risposta non è la mancanza di tempo, budget ridotto o altro che lo possa giustificare.

1 Like

3 Likes

si direi che assomiglia alla reazione che ho avuto, considerando anche la seniority di chi ha dato quella risposta…

Come si comincia se non si è più freschi di università?

1 Like

Ti suggerisco di cominciare con la Portswigger Web Academy. E’ gratuita e ti da’ una ottima foundation con labs fatti bene. Una volta che hai passato tutti quei labs, ti suggerisco di continuare con TryHackMe e HackTheBox come secondo step. Una volta fatta pratica con questi, un passo successivo e’ quello di completare le CTFs (capture the flag) su e.g. HackerOne. Potresti anche fare una certification per esempio con OffSec. A questo punto potresti gia’ iniziare con bug bounties almeno con vulnerabilita’ semplici. Per beginners consiglio sempre di cercare vulnerabilita’ di broken access control e IDOR (insecure direct object reference), perche’ TUTTE le apps hanno questo tipo di vulnerabilita’ e sono piuttosto facili da trovare.

Oggi ho trovato soltanto una vulnerabilita’, ma una cool. In realta’ ho copiato un attacco fatto a OpenAI di recente e basato su un problema con alcune CDN, in questo caso Cloudflare. :slight_smile: Quindi non una idea originale ma utile. Quando fai BB e’ importante seguire i trend e le news perche’ cosi’ si imparano methodi nuovi.

Spiegazione per gli interessati: l’applicazione target salva in Cloudflare cache tutto quello che sta sotto /static, segno che gli admin hanno configurato una page rule per mettere tutto quello che e’ in /static in cache per performance. Questo viene fatto spesso quando si vuole mixare contenuto dinamico con contenuto statico sotto lo stesso hostname, invece di usare un hostname separato per static assets. Nel mio caso, l’applicazione serve dynamic content che bypassa la cache a meno che quel content sia in /static. Il trucco si basa su path traversal.

Se visito lo URL https://domain.com/static//../path-to-risorsa-riservata?cache-buster=blah, Cloudflare correttamente si accorge che sto facendo path traversal e che il contenuto richiesto in realta’ non e’ sotto /static, e per questo motivo lo tratta come dynamic content e quindi non lo mette in cache.

Il problema e’ che se pero’ invece di “/…/” metto lo stesso ma URL-encoded, cioe’ “%2F…%2F”, Cloudflare non fa decoding di %2F, quindi pensa che il path sia in /static e percio’ salva il contenuto in CDN cache. Spiego il significato del param cache-buster in un attimo.

L’exploit consiste nell’usare path traversal con quello URL-encoding per far si’ che Cloudflare salvi in cache il response di una pagina per un altro user che normalmente non dovrebbe essere salvata in cache, nel mio caso il path completo della API e’ /api/v1/me/tokens. Se visito https://domain.com/api/v1/me/tokens, il response in JSON contiene i miei API tokens e il response non viene salvato in cache, come atteso.

Ma se visito https://domain.com/static/%2F..%2Fapi/v1/me/tokens?cache-buster=1, per il motivo spiegato prima Cloudflare mette in contenuto in cache, il che significa che se dopo visito di nuovo lo stesso URL, il response di prima viene restituito dalla cache. Fin qua ci siamo? :slight_smile:

Se in qualche modo forzo una vittima che e’ loggata sulla target app a visitare quello URL, il risultato e’ che la lista dei loro tokens viene salvata in cache per lo URL che ho fatto usare. Quindi per me, come attacker, e’ sufficiente visitare lo stesso URL in seguito per vedere i tokens della vittima :slight_smile:

cache-buster e’ semplicemente un parametro che deve avere un valore diverso per ogni vittima, cosi’ da mettere in cache tokens diversi per diverse vittime.

Quindi l’unica cosa che devo fare e’ far visitare lo speciale URL che ho preparato ad una vittima che potrebbe essere loggata nella app, e ci sono molti modi per fare questo. Tutto qui :slight_smile: Ovviamente poi con i loro API tokens posso fare quello che voglio sul loro account e/o risorse che quei tokens possono gestire.

Se siete interessati a questo tipo di update continuo, senno why bother :D Fatemi sapere se siete interessati.

12 Likes

ma sono versioni contemporanee del vecchio Bandit/Leviathan/Natas e affini?

Sono labs piu’ completi, e nel caso di Portswigger Web Academy non sono soltanto labs, c’e’ anche una marea di materiale che ti insegna le varie vulnerabilita’ e come fare exploit.

oddio sì ho quotato il blocco ma mi riferivo a TryHackMe e HackTheBox.

La roba che ho menzionato è di almeno 10 anni fa…

Si, definitivamente più moderni :)

super interessante il drill down sulle vuln, ti prego continua :lode:

OK, continuo se interessa :)

2 Likes

SkyLinx, veramente veramente interessante.

vogliamo sentire i colpi più grossi o i buchi più clamorosi

ovviamente più sono grandi e conosciute le aziende più vogliamo sapere (anche se ovviamente non ci aspettiamo che tu faccia i nomi)

Grazie mille, ora mi ci tuffo poi per mettermi alla prova buco il forum per riabilitare il post counter (ma prima me lo gonfio che con il nuovo account ho briciole).

certo pure questa roba di far passare i caratteri encoded è sempre la stessa solfa da anni e anni :asd:
come pure il path traversal, ora he ho capito cos’è :asd:

l’encoding lo usai per fare code injection su Volunia :sisi:

certo poi son cose che devi trovare e saperle sfruttare, sta lì il difficile, gg

da profano penso che il difficile sia non farsi beccare :asd:

in Italia pensa ti becchi una denuncia pure se fai il white hat e fai private disclosure :asd: o come si chiama, insomma che li avvisi :sisi: