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

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м (Описание HTTP Authorization Header)
м (Описание HTTP Authorization Header)
Строка 22: Строка 22:
 
md5(
 
md5(
 
username +":"+ realm + ":" + pass
 
username +":"+ realm + ":" + pass
)  
+
)  
 
+ ":" + nonce + ":" +
 
+ ":" + nonce + ":" +
 
md5(
 
md5(
 
REQUEST_METHOD+ ":" + REQUEST_URI
 
REQUEST_METHOD+ ":" + REQUEST_URI
)
+
)
);
+
);
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Версия 17:25, 7 ноября 2016

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


Описание HTTP Authorization Header

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


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


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


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


response

md5(
	md5(
		username +":"+ realm + ":" + pass
	) 
	+ ":" + nonce + ":" +
	md5(
		REQUEST_METHOD+ ":" + REQUEST_URI
	)
);

opaque -


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


nc -


cnonce -

Brutforce

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


############################################################################
method="GET"
uri = "/login.php"
username = "factoreal"
realm = "this page for admin only, go out now!"
nonce = "554aed8c0b2d8"
nc = "00000001"
cnonce = "d6d1a0a39a93b4c3"
qop = "auth"
response="d9b58c347f96195884ce27036f3c9546"
############################################################################
import hashlib
password = open('passwords.txt').read().splitlines()
h2 = hashlib.md5(method+":"+uri).hexdigest()
for i in range(len(password)):
    h1 = hashlib.md5(username+":"+realm+":" + password[i]).hexdigest()
    result = hashlib.md5(h1 + ":"+nonce+":"+nc+":"+cnonce+":"+qop+":" + h2).hexdigest()
    if result == response:
        print "[*] Password found: " + password[i]
        exit()


Райтапы

ASIS Quals CTF 2015: Strange Authen


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

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