Sfondo
Sono stato contattato per aiutare un'azienda a mantenere il proprio server. Lavoro su alcuni progetti PHP minori, ma guardo anche sui problemi di prestazioni e di recente, scansionano i log per gli hacker.
Questi ragazzi hanno eseguito il loro server per un po 'di tempo e hanno quello che chiamerei un'applicazione legacy nelle ultime fasi. Usa virgolette, variabili globali (che consente a $id
di essere sovrascritto da $_GET['id']
), usa .htaccess come loro unica sicurezza in alcuni casi, tu dai il nome. Un incubo per la sicurezza e la programmazione.
Siamo stati hackerati in passato, principalmente con iniezioni SQL, che eseguivano comandi SLEEP(99999999)
e fungevano da attacco DOS. Fortunatamente non hanno eseguito "piccoli tavoli da poker",
XKCD:
Quindi ho riscritto le loro dichiarazioni SQL vulnerabili da mysql_query()
(non mysqli) alle transazioni DOP. Sto anche analizzando le query per SLEEP
e UNION
, che non usiamo ma le iniezioni hanno. Fin qui, tutto bene.
Ultimo numero
Recentemente ci è stato detto che i record stanno cambiando nel DB per gli utenti, come i loro indirizzi e-mail a quelli presumibilmente fatti da spammer.
Ho notato che le loro colonne non avevano una colonna last_modified
, quindi non eravamo nemmeno in grado di sapere quando venivano cambiate, per non parlare di chi. Ho aggiunto quella colonna, ma questo è appena un primo passo.
Quando stavo osservando questo tavolo, ho notato che le password non erano salate e nemmeno hash, ma salvate come testo normale.
Comunicazione client
Come posso affrontarli per l'intera situazione, come un appaltatore, senza agitare le braccia come un pazzo? Qualche consiglio? Stavo pensando ad un approccio calmo,
ISSUE #1 Synopsis Why this is an issue What can happen if this is not fixed Suggested fix ISSUE #2 Synopsis Why this is an issue What can happen if this is not fixed Suggested fix