[DEFCON17] Slides sur le Cross Site Scripting (XSS reminder)

Plop à tous

Un rapide lien today sur les XSS « favoris », je vais pas revenir sur les XSS, tout le monde sait ce que c’est ;), mais le ppt en question permet d’avoir une rapide vue d’ensemble des techniques (certaine plus avancée comme le  HPP – HTTP Parameter Pollution pour l’evasion d’IDS … moi qui était content du couple prelude/modsecurity ^^).

Bon bien sûr, le but de ce ppt n’était pas d’enseigner toutes les techniques, mais seulement d’informer pour permettre à son lecteur de faire ses propres recherches sur le domaine ;).

Sinon, les dernières diapos parlent d’elles-mêmes sur la sécurité (relative) qu’offrent les IDS dans le domaine du web, avec des règles comme :

utiliser ‘ or 2=2 — à la place de ‘ or 1=1 —
nommer les shells rofl.php à la place de c99.php
utiliser prompt(‘xss’) à la palce de alert(‘xss’)

C’est vrai que quand on regarde les filtres de modsecurity, il suffit de changer les noms ou les commandes balancés en paramètre et certaines attaques passent :s (je suis tout de même déçu par le modsecurity pour le HPP, un simple « join » du paramètre suffirait à bloquer l’attaque …).

Donc au lieu d’utiliser des sytèmes energivore pour sécuriser des sites web, il suffit de bien coder son site et comme ça on dort tranquille et on gagne en performance … (utopie quand tu nous tiens^^).

Utiliser Tor à la vitesse de la lumière ;)

Kikoo …
En suivant un peu la defcon, j’ai trouvé un tuto expliquant l’utilisation de tor pour masquer son identité lors de scan, pour plus de rapidité, l’auteur faisait sauter les deux premières nodes pour ce connecter directement à la dernière, permettant plusieurs choses :

  1. Choisir son ip de sortie (déjà possible avec des softs comme vidalia, tork, …)
  2. Choisir la rapidité « indirect » du service en réduisant grandement la latence (dû aux connections entre les nodes (résolution dns, établissement du chiffrement entre chaque node, …))
  3. Choisir la rapidité « direct » du service via l’utilisation des serveurs les plus puissant de la « tor status list« 

Je croyais pas trop en la rapidité de la chose, mais en choisissant l’ip : 192.251.226.206, ma connexion au net était quasiment instantannée!! enfin comme si j’avais pas de proxy quoi (ça vaut pas non plus mon VPN chez OVH mais bon;))

Donc, la manip’  (vive ubuntu!!!):

wget http://www.thoughtcrime.org/software/tortunnel/tortunnel-0.2.tar.gz
apt-get install libboost1.35-dev libssl-dev
tar -xvf tortunnel-0.2.tar.gz
cd tortunnel-0.2
./configure && make && ./torproxy 192.251.226.206

Il suffira ensuite de configurer votre navigateur pour utiliser le proxy sock à l’adresse 5060.
Le seul ennui : la connexion à google est impossible (comme pour toutes les sorties de tor d’ailleurs :s), ça permet de découvrir d’autres moteurs de recherche :p (cuil,bing, yahoo!!).

Bon bien sûr, on perd l’essentiel du réseau tor, à savoir « l’intraçabilité » (relative bien sûr), mais bon c’est pas comme si big brother existait ;).

Ce genre de soft pourrait détruire le réseau tor (en surchargeant inutilement les noeuds de sorties), donc utilisez-le avec parcimonie (c’est ma copine 😉 ^^ pas taper!!).

Partage et ecriture de fichiers sur protocole HTTP

Bijour,

Encore un truc inutile mais assez intéressant ^^. Tout le monde connait le protocole HTTP pour télécharger des pages web, voir des fichiers, mais on peut aussi écrire des fichiers sur le protocole HTTP via webDAV (supporté de base par windows … si c’est pas la classe ^^).

Bon bien sûr, il existe d’autre protocoles pour partager des fichiers (ftp, p2p, smb), mais webDAV a ses avantages :

  • Gestion de la concurrence des accès (plusieurs personnes ne pourront pas modifier le même fichier).
  • Possibilité d’utiliser des certificats SSL pour chiffrer les transferts (super utile!!).
  • Rapide et sécurisé (ça tourne sur un serveur apache) et ça permet d’éviter d’avoir d’autre ports ouvert sur sa machine (genre ftp, …).

Niveau configuration, y’a pas grand chose à faire, il suffit de mettre les lignes suivantes dans un fichier de conf d’apache :

    Alias /kikoosfiles /dossier/a/partager/
    
            Dav On
            AuthType Basic
            AuthName "Restricted Files"
            AuthUserFile /etc/apache2/paccess.htpasswd
            Require valid-user
   

Il faut juste créer le htpasswd :

htpasswd -c /etc/apache2/paccess.htpasswd votreLogin

On peut ensuite tester l’accès :

Sous linux :

webdavSous windows, il suffit d’ouvrir l’url comme dossier web (Alt+O) en donnant l’url.

Bien sûr, si vous avez le modsecurity, vos logs vont se remplir de pas mal de chose, il faut donc désactiver certaines vérifications faites par le modsecurity, ce qui donne la configuration suivante :

    Alias /kikoosfiles /dossier/a/partager/
    
            Dav On
            AuthType Basic
            AuthName "Restricted Files"
            AuthUserFile /etc/apache2/paccess.htpasswd
            Require valid-user
            SecRuleRemoveByMsg "Invalid HTTP Request Line"
            SecRuleRemoveByMsg "Method is not allowed by policy"
            SecRuleRemoveByMsg "Request Missing an Accept Header"
            SecRuleRemoveByMsg "HTTP header is restricted by policy"
   

Si vous avez un certificat ssl, vous saurez facilement comment le mettre en place pour chiffrer la connexion. Et hop, une connexion chiffrée sur http :

dav-ssl

Vivre dangeureusement sur ubuntu ou pas (visudo)

Bijour à vous …

Attention, l’execution de ces commandes peut se révéler dangeureuses voir suicidaire suivant vos connaissances dans le domaine.

Aujourd’hui un truc à la Jean-Kevin, suite à la lecture d’un shellcode de milw0rm (je m’occupe comme je peux :P) : la suppression du mot de passe au sudo sur Ubuntu (ou tout OS prenant embarquant le sudoku).

pour modifier la chose, une commande :

sudo visudo

Qui retourne ceci :

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Rapide explication :
les noms des utilisateurs s’écrivent directement, les groupes doivent être préfixé d’un %.
L’ajout de nouvelle règles se fait à la FIN du fichier.

Quelques règles sympa :
Suppression de la demande de mot de passe pour l’utilisateur kikoo :

kikoo ALL=(ALL) NOPASSWD: ALL

Ok, c’est un peu gros (si on est le seul à utiliser la machine, ça peut aller, mais faut bien faire gaffe au commande que l’on execute, car l’execution est DIRECTE, plus de demande de mot de passe).

Donc on peut affiner les règles :
Suppression de la demande de mot de passe lors de l’execution d’une commande specifiée :

%root ALL=NOPASSWD: /usr/bin/whoami

Et hop, un coup de sudo whoami renvoi root sans demander de mot de passe.
ça peut être utile pour le système de mise à jour d’ubuntu, ce qui donne :

%root ALL=NOPASSWD: /usr/bin/update-manager

On peut aussi faire des trucs assez sympa selon (le lien)
La suppression de l’accès à un interpreteur de commande pour certain utilisateur en mode root (genre interdire à sa petite-copine l’utilisation d’un terminal en mode root ^^).

Cmnd_Alias TOTAL=/bin/bash, /bin/sh
kikoo ALL=(ALL) ALL, !TOTAL

Ce qui donne :
kikoo@WillOwnDaWorld:~$ sudo bash
[sudo] password for kikoo:
Sorry, user kikoo is not allowed to execute ‘/bin/bash’ as root on WillOwnDaWorld.
kikoo@WillOwnDaWorld:~$

Et hop, amusez-vous bien 😉

Configurer un serveur SMTP et cacher sa bannière (Exim4)

Bijour à vous …

Today, la configuration d’un serveur de mail exim4 (le serveur smtp par défaut de Debian … ), à la base je voulais juste m’amuser à filer une astuce pour cacher la bannière du serveur (Il est fufu mon serveur smtp!!! Gaffe au backstab ;)), et pis, prendre des screenshots, c’est pas compliqué, donc ben vous aurez droits à la version complète du Grand LoupZeur … si c’est pas la lose ça :D. (Mon but est seulement de configurer le smtp, pas de truc anti-spam et …, y’a plein de tutos pour ça)

Sinon, quelques liens sur des tutos d’installation d’exim4 :

Pour l’installation, la démarche à suivre est simple …

apt-get install exim4
dpkg-reconfigure exim4-config

Pour un dédié j’ai choisit la config internet (comme j’ai une ip fixe, je n’ai pas besoin de smarthost):
config-internet
Ensuite, le nom de domaine utilisé :
fqdn-exim4
L’ip sur laquelle on écoute :
ip-exim4
Les domaines pour lesquelles on acceptes les mails (noté la séparation des domaines par 🙂 :
mail-destination-accepte
Les relais que l’on autorise à envoyer des mails (NE JAMAIS AUTORISER TOUT LES DOMAINES, c’est le principal vecteur de spam)
relay-autorise-exim4
et la même choses pour les ip (autorisé les ips local, si vous êtes dans un réseau local).
relay-ip
Les requêtes DNS (pour ma part j’ai mis non comme j’ai un serveur DNS local normalement, ça ne pose pas de problème, à part si le DNS tombe, tous les mails seront mis dans la queue … ça m’est arrivé suite à la « sécurisation » de mon serveur DNS 😉 j’ai oublié d’autoriser 127.0.0.1 à faire des requêtes DNS :p ololz le Jean-Kevin!!!! ).
dns-exim4
Le maildir (pour ma part, /var étant plus petit que /home, pour gagner de la place je l’ai mis dans le repertoire utilisateur).
le-maildir
et c’est la fin ^^, on demande le split config, c’est plus simple pour le noob comme moi de comprendre la configuration du soft :
split-config-exim4

Bon donc voilà, l’ennui, c’est que lorsque l’on se connecte en telnet sur le port 25 de mon serveur, exim donne directement le nom du logiciel et sa version (sacrilège!!!).

Après avoir cherché un petit moment … voici l’astuce du Père GG :
Ouvrir le fichier /etc/exim4/conf.d/main/02_exim4-config_options (avec un éditeur plein de charme genre vi ^^).
et modifier les dernières lignes :

MAIN_SMTP_BANNER = "${primary_hostname} ESMTP Exim ${version_number} (Debian package MAIN_PACKAGE_VERSION) ${tod_full}"
smtp_banner = $smtp_active_hostname ESMTP Exim $version_number $tod_full

pour quelles ressemblent à ceci :

MAIN_SMTP_BANNER = "${primary_hostname}"
smtp_banner = $smtp_active_hostname

Et désormais lors de la connexion en telnet à la bête, ça retourne seulement le nom de ma machine (comme c’est le seul truc que les spammeurs/hackers connaissent déjà, on ne lui apprend donc rien) :

kikoo@WillOwnDaWorld:~$ telnet gaetan-grigis.eu 25
Trying mon.ip.a.moi...
Connected to gaetan-grigis.eu.
Escape character is '^]'.
220 r22686.ovh.net
quit
221 r22686.ovh.net closing connection
Connection closed by foreign host.

Et voilà, sinon, pour les petits désagrément, les stats de tentatives d’utilisation de mon serveur en tant que relais publique :
spam-exim4
En rouge, ce sont les mails bloqués qui n’appartiennent pas à mon domaine … je vais peut-être créer une liste d’ip à bannir ^^.

Et c’est la fin … go spam Da Worldz 😉