Digest auth — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м (Описание HTTP Authorization Header)
м (Полезные ссылки)
 
(не показано 6 промежуточных версий этого же участника)
Строка 10: Строка 10:
  
  
'''nonce''' - случайно сгенерированный хеш md5($_SERVER[‘REMOTE_ADDR’] . ‘:’ . time() . ‘:случайная_строка’);
+
'''nonce''' - случайно сгенерированный хеш - по стандарту md5($_SERVER[‘REMOTE_ADDR’] . ‘:’ . time() . ‘:случайная_строка’);
  
  
Строка 16: Строка 16:
  
  
'''response''' -
+
'''response'''
md5(md5($auth_params[‘username’] . ‘:’ . $auth_params[‘realm’] . ‘:’ . $pass) . ‘:’ . $auth_params[‘nonce’] . ‘:’ . md5($_SERVER[‘REQUEST_METHOD’] . ‘:’ . $_SERVER[‘REQUEST_URI’]));
 
  
'''opaque''' -  
+
<syntaxhighlight lang="python" line="1">
 +
md5(
 +
md5(
 +
username +":"+ realm + ":" + pass
 +
)
 +
 
 +
+ ":" + nonce + ":" +
 +
 
 +
md5(
 +
REQUEST_METHOD+ ":" + REQUEST_URI
 +
)
 +
);
 +
</syntaxhighlight>
 +
 
 +
'''opaque''' - строка, предоставленная сервером, которая должна дублироваться в запросе от клиента. Предпочитаемо base64 или hexademical.
  
  
Строка 25: Строка 38:
  
  
'''nc''' -  
+
'''nc''' - номер запроса клиента из текущей сессии. Пример: 00000002
  
  
'''cnonce''' -
+
'''cnonce''' - строка, генерируемая клиентом перед каждым запросом.
  
 
==Brutforce==
 
==Brutforce==
Строка 68: Строка 81:
  
 
[https://ru.wikipedia.org/wiki/%D0%94%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F#.D0.91.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.BD.D0.B0.D1.8F_.D1.80.D0.B5.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F официальная вики страница]
 
[https://ru.wikipedia.org/wiki/%D0%94%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F#.D0.91.D1.80.D0.B0.D1.83.D0.B7.D0.B5.D1.80.D0.BD.D0.B0.D1.8F_.D1.80.D0.B5.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F официальная вики страница]
 +
 +
[https://tools.ietf.org/html/rfc2617 полное описание RFC]
 +
 +
[https://xakep.ru/2005/07/04/27203/ статья журнала Хакер]
 +
 +
[http://www.archival.ru/node/317 описание параметров]

Текущая версия на 08:00, 8 ноября 2016

Дайджест-аутентификация доступа


Описание HTTP Authorization Header

username - юзернейм авторизованного пользователя


realm - сообщение (вероятнее всего содержимое страницы)


nonce - случайно сгенерированный хеш - по стандарту md5($_SERVER[‘REMOTE_ADDR’] . ‘:’ . time() . ‘:случайная_строка’);


uri - URI страницы авторизации


response

 1 md5(
 2 	md5(
 3 		username +":"+ realm + ":" + pass
 4 	) 
 5 
 6 	+ ":" + nonce + ":" +
 7 
 8 	md5(
 9 		REQUEST_METHOD+ ":" + REQUEST_URI
10 	)
11 );

opaque - строка, предоставленная сервером, которая должна дублироваться в запросе от клиента. Предпочитаемо base64 или hexademical.


qop - метод вычисления. Может быть равен auth, auth-int или не определен.


nc - номер запроса клиента из текущей сессии. Пример: 00000002


cnonce - строка, генерируемая клиентом перед каждым запросом.

Brutforce

Скрипт для брутфорса пароля зная куки:


 1 ############################################################################
 2 method="GET"
 3 uri = "/login.php"
 4 username = "factoreal"
 5 realm = "this page for admin only, go out now!"
 6 nonce = "554aed8c0b2d8"
 7 nc = "00000001"
 8 cnonce = "d6d1a0a39a93b4c3"
 9 qop = "auth"
10 response="d9b58c347f96195884ce27036f3c9546"
11 ############################################################################
12 import hashlib
13 password = open('passwords.txt').read().splitlines()
14 h2 = hashlib.md5(method+":"+uri).hexdigest()
15 for i in range(len(password)):
16     h1 = hashlib.md5(username+":"+realm+":" + password[i]).hexdigest()
17     result = hashlib.md5(h1 + ":"+nonce+":"+nc+":"+cnonce+":"+qop+":" + h2).hexdigest()
18     if result == response:
19         print "[*] Password found: " + password[i]
20         exit()


Райтапы

ASIS Quals CTF 2015: Strange Authen


Полезные ссылки

официальная вики страница

полное описание RFC

статья журнала Хакер

описание параметров