Tag: sécurité’

Authentification NTLM en PHP

 - by admin

Pour le développement d’un intranet pour mon job, j’utilisais jusqu’à présent un script d’authentification NTLM afin que les utilisateurs soient automatiquement connectés sans devoir entrer ni login ni mot de passe. Jusqu’à ce que Microsoft (et mes très chers administrateurs réseaux) force l’installation d’une mise à jour de sécurité pour toutes les versions d’Internet Explorer ce qui rendis mon code totalement inopérant (IE doit représenter 99% des employés… il y a même des versions 6 à mon grand désespoir…)

Après quelques recherches, j’ai (enfin) trouvé un bout de code qui semble très bien fonctionné, qui retourne le nom de l’utilisateur, le domaine sur lequel il est, ainsi que le nom de sa machine:

[php]
$headers = apache_request_headers();

if (!isset($headers['Authorization'])){
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: NTLM’);
exit;
}

$auth = $headers['Authorization'];

if (substr($auth,0,5) == ‘NTLM ‘) {
$msg = base64_decode(substr($auth, 5));
if (substr($msg, 0, 8 ) != "NTLMSSP\x00")
die(‘error header not recognised’);

if ($msg[8] == "\x01") {
$msg2 = "NTLMSSP\x00\x02"."\x00\x00\x00\x00". // target name len/alloc
"\x00\x00\x00\x00". // target name offset
"\x01\x02\x81\x01". // flags
"\x00\x00\x00\x00\x00\x00\x00\x00". // challenge
"\x00\x00\x00\x00\x00\x00\x00\x00". // context
"\x00\x00\x00\x00\x30\x00\x00\x00"; // target info len/alloc/offset

header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: NTLM ‘.trim(base64_encode($msg2)));
exit;
}
else if ($msg[8] == "\x03") {
function get_msg_str($msg, $start, $unicode = true) {
$len = (ord($msg[$start+1]) * 256) + ord($msg[$start]);
$off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]);
if ($unicode)
return str_replace("",  », substr($msg, $off, $len));
else
return substr($msg, $off, $len);
}
$user = get_msg_str($msg, 36);
$domain = get_msg_str($msg, 28);
$workstation = get_msg_str($msg, 44);

print "You are $user from $domain/$workstation";
// result: You are maiis from DOMAIN/MYPC001
}
}
[/php]

Cette méthode est compatible avec Internet Explorer, Firefox et Opera.

Spécifications du NTLM (en anglais)

[source]

Twitter Hacké !

 - by admin

Korben revient sur le piratage de divers comptes email ou admin liés à Twitter. Le hackeur, qui n’est pas un vandale mais un “pur” qui agit par pédagogie ou pour alerter sur les failles de sécurité, diffuse tout un tas de captures d’écran qui exposent des stratégies ou des infos privées. Donc, plus que jamais, attention aux mots de passe, aux questions de récupération de mots de passe, etc…

Lien vers l’article sur Korben.info

Continue reading “Twitter Hacké !” »

Redirection "En maintenance"

 - by admin

Comment rediriger les visiteurs vers une page « en maintenance » lorsqu’on déménage un site afin d’éviter que des commandes soient passées ou autre… ? La solution avec ce htaccess:


RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^11.111.111.111
RewriteCond %{REQUEST_URI} !^/maintenance.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

En prenant soin de renseigner sa propre adresse IP pour pouvoir tout de même tester votre site.