Potenziali problemi che consentono agli utenti di impostare qualsiasi URL come hook web

4

Sono ancora in fase di pianificazione, quindi questo potrebbe non essere pienamente sviluppato, ma sto lavorando a un progetto SaaS. Parte della quale consente agli utenti (clienti del mio SaaS) di configurare la mia API per controllare gli eventi e rispondere in modo preconfigurato. Una risposta è per la mia API (integrata in PHP) per dare il via a una richiesta HTTP POST a un URL fornito durante l'installazione, con i parametri forniti. È inteso che l'utente indirizza queste richieste al proprio server o ad altri sistemi interni e quindi è in grado di ascoltare tali richieste e integrarle con i propri sistemi interni di posta elettronica / monitoraggio / pagamento.

Tuttavia, sono un po 'preoccupato di dare libero accesso a questi utenti su chi hanno il mio server anche sulle richieste dei POST. Supponendo che io sanizzi l'input dell'URL e tutti i parametri e limiti il numero di richieste che può inviare, ci sono potenziali casi di utilizzo dannoso derivanti da un utente che attiva i POST dalla mia API?

    
posta Justin Harr 16.10.2017 - 20:24
fonte

2 risposte

1

Mi preoccuperei di fornire agli utenti una configurazione di endpoint arbitrario.

Potrebbe essere un'idea per convalidare il dominio prima del tempo.

Esempio: goodguy.com si iscrive, invia una email a [email protected] per eseguire la convalida del dominio, oppure dispone di un record DNS txt che è possibile interrogare per convalidare la proprietà del dominio.

Tutte le altre misure sono indispensabili, limitazione dei tassi, sanificazione ecc., ma dovresti davvero convalidare che l'utente ha il diritto di inviare richieste automatizzate al dominio.

is there any potential malicious use cases stemming from a user triggering POSTs from my API?

Un paio della parte superiore della mia testa:

  • Attacco di forza bruta molto lento, la limitazione della velocità non prenderebbe questo
  • Registrazione di account multipli, attacco DOS, i 1000 utenti falsi si registrano e danno fuoco a una complessa richiesta di post da qualche parte
  • Usando il tuo servizio come maschera per richieste malevoli, cioè invio un sacco di carichi dannosi da un server che controllo mentre spammare contemporaneamente lo stesso target dal tuo server, questo mette il tuo IP del server nei registri delle vittime insieme a me
risposta data 16.10.2017 - 20:43
fonte
1

Sì, questo è pericoloso. Ti stai aprendo a Falsità richiesta lato server (SSRF).

Se dai ai tuoi utenti la possibilità di inviare richieste POST a URI arbitrari: s dalla tua rete, possono raggiungere cose che non dovrebbero raggiungere. Che cosa succede se hai una sorta di server HTTP sensibile in esecuzione sulla tua rete, e qualcuno lo usa per inviare richieste ad esso? A seconda di quanto controllo hanno sul contenuto della richiesta, può essere più o meno problematico, ma in generale non è una buona idea.

Quindi, come ci si attenua? Si potrebbe provare a filtrare l'URI: s, ma questo è molto più difficile di quanto sembri, e non sono sicuro che mi baserei su di esso. Vedi questo per una discussione su alcune delle sfide. Un altro approccio consiste semplicemente nel proxy della richiesta attraverso un server esterno alla propria rete.

    
risposta data 17.10.2017 - 13:46
fonte

Leggi altre domande sui tag