PDA

Просмотр полной версии : cookie enj


exT1ma4ka
21.07.2013, 17:49
доброго времени суток, господа.

итак, мы имеем сайт, имеем куки в следующем виде: base64---рандомный хэш(?) из 40 символов с каждым обновлением страницы разный и имеем желание ломать.

если сделать декод base64, выходит следующее (некоторые данные по понятным причинам замазал):


Code:
{"user":{"source":"new","photo":"\/avatar\/s\/аватар","activities":null,"photo_medium":"\/avatar\/m\/аватар","rating":"0","last_name":"фамилия","email":"мыло","confirm":"0","photo_big":"\/avatar\/o\/аватар","updated":"дата","about":"привет","id":"цифра","birthday":"др","comments_count":"0","gender":null,"likes_count":"0","admin":"0","location":"город","my_comments_count":"667","ban":"0","subscribe":"1","deleted":"0","actived":"время","banned_to":null,"created":"дата создания","shop":"0","hidden":"0","first_name":"имя"},"token":"уникальный токен, генерирующийся один раз при каждом входе на сайт (не меняется, пока не выйдешь) "}

мы видим что тут очень много переменных, в том числе как и интересующая нас "admin: 0". казалось бы подменить и опааа. но стоит изменить любую одну букву\цифру, - как сессия становится недействительной и вылетаешь с пользователя.

вот тогда ты и начинаешь думать о второй части, которая после кода base64 - этом самом хэше. сказать что он уникальный ? - нет, я повторял одну и туже (исправную) сессию много раз и всё работало, выходит - каждый раз она хоть и меняется (ключ после base64), но если повторять её, работа не слетает. сдаётся нам что ключ не такой уж и уникальный.

выглядит в полном виде сессия так:


Code:
eyJ1c2VyIjp7InNvdXJjZSI6Im5ldyIsInBob3RvIjoiXC9hdm F0YXJcL3NcL9Cw0LLQsNGC0LDRgCIsImFjdGl2aXRpZXMiOm51 bGwsInBob3RvX21lZGl1bSI6IlwvYXZhdGFyXC9tXC/QsNCy0LDRgtCw0YAiLCJyYXRpbmciOiIwIiwibGFzdF9uYW1lI joi0YTQsNC80LjQu9C40Y8iLCJlbWFpbCI6ItC80YvQu9C+Iiw iY29uZmlybSI6IjAiLCJwaG90b19iaWciOiJcL2F2YXRhclwvb 1wv0LDQstCw0YLQsNGAIiwidXBkYXRlZCI6ItC00LDRgtCwIiw iYWJvdXQiOiLQv9GA0LjQstC10YIiLCJpZCI6ItGG0LjRhNGA0 LAiLCJiaXJ0aGRheSI6ItC00YAiLCJjb21tZW50c19jb3VudCI 6IjAiLCJnZW5kZXIiOm51bGwsImxpa2VzX2NvdW50IjoiMCIsI mFkbWluIjoiMCIsImxvY2F0aW9uIjoi0LPQvtGA0L7QtCIsIm1 5X2NvbW1lbnRzX2NvdW50IjoiMjIiLCJiYW4iOiIwIiwic3Vic 2NyaWJlIjoiMSIsImRlbGV0ZWQiOiIwIiwiYWN0aXZlZCI6ItC y0YDQtdC80Y8iLCJiYW5uZWRfdG8iOm51bGwsImNyZWF0ZWQiO iLQtNCw0YLQsCDRgdC+0LfQtNCw0L3QuNGPIiwic2hvcCI6IjA iLCJoaWRkZW4iOiIwIiwiZmlyc3RfbmFtZSI6ItC40LzRjyJ9L CJ0b2tlbiI6ItGD0L3QuNC60LDQu9GM0L3Ri9C5INGC0L7QutC 10L0sINCz0LXQvdC10YDQuNGA0YPRjtGJ0LjQudGB0Y8g0L7Qt NC40L0g0YDQsNC3INC/0YDQuCDQutCw0LbQtNC+0Lwg0LLRhdC+0LTQtSDQvdCwINGB0L DQudGCICjQvdC1INC80LXQvdGP0LXRgtGB0Y8sINC/0L7QutCwINC90LUg0LLRi9C50LTQtdGI0YwpICJ9---ab4g8j0k4lo12vb56mn098rt5bu42cao65m23eg6

после трёх чёрточек и есть этот "хэш" из 40 символов (переменную выдумал, для примера).

итак, Джентльмены, - в какую сторону думать ?

InDuStRieS
21.07.2013, 17:53
думаю в правую сторону,бро!

А вообще забудь это.

exT1ma4ka
21.07.2013, 18:00
InDuStRieS said:
думаю в правую сторону,бро!
А вообще забудь это.


мне нужны не слова, а обоснования. почему мне следует забыть об этом ?

InDuStRieS
21.07.2013, 18:03
exT1ma4ka said:
мне нужны не слова, а обоснования. почему мне следует забыть об этом ?


Потомучто тебе нужно учить основы.

Тут нету cookie enj.

exT1ma4ka
21.07.2013, 18:09
хмм.. если есть переменные, и они считываются сайтом, - выходит их можно подменить. если нельзя, - можно попробовать провести sql inj прямо через сессию на этих переменных, т.к очевидно что они обращаются к базе. в чём я не прав ?

InDuStRieS
21.07.2013, 18:14
exT1ma4ka said:
хмм.. если есть переменные, и они считываются сайтом, - выходит их можно подменить. если нельзя, - можно попробовать провести sql inj прямо через сессию на этих переменных, т.к очевидно что они обращаются к базе. в чём я не прав ?


Тебе уже я ответил.

exT1ma4ka
21.07.2013, 18:18
InDuStRieS said:
Тебе уже я ответил.


- пап, можно я пойду поиграю ?

- нет, забудь про это

- но почему ? игрушки ведь есть

- ты не сможешь поиграть, я тебе уже ответил

из такого разряда.

InDuStRieS
21.07.2013, 18:20
exT1ma4ka said:
- пап, можно я пойду поиграю ?
- нет, забудь про это
- но почему ? игрушки ведь есть
- ты не сможешь поиграть, я тебе уже ответил
из такого разряда.


Так будешь с отцом разговаривать.

На сайте отсутсвует уязвимость данного рода.

Чтобы её применить должен быть кривой код,а не то что ты написал исходя из своих фантазий

exT1ma4ka
21.07.2013, 18:23
InDuStRieS said:
На сайте отсутсвует уязвимость данного рода.


я не упомянул сайт.. откуда такие познания ?

InDuStRieS
21.07.2013, 18:24
exT1ma4ka said:
я не упомянул сайт.. откуда такие познания ?


***** из опыта,****!ИЗ ОПЫТА!

Тролль.

InDuStRieS
21.07.2013, 18:52
Понимаешь,exT1ma4ka!Что бы тут была уязвимость,надо поставить ковычку и при обновлении страницы должны быть sql ошибка,которая скажет о налиции уязвимости.

То что ты делаешь вообще к уязвимостям не относится

С Уважением,InDuStRieS!

exT1ma4ka
21.07.2013, 21:26
ты по-моему не понимаешь в чём дело. инъекция в куки, так ? справа - ключ, слева - сама сессия в base64. ключ является проверкой сессии на корректность (отсутствие левых элементов, кавычек, итд). когда ключ не совпадает - сессия не пашет. ты говоришь о чём-то другом.

ставлю вопрос так: каким алгоритмом может быть произведена проверка сессии через хэш ? 40 символов - Sha 1, но я не могу получить туже сумму при переводе чистой сессии или же base64 кода в неё. что-то тут не так.

Unknown
21.07.2013, 21:54
Возможно (в самом простом случае), некоторые поля из левой части проходят объединение, и результат такой вот конкатенации обсчитывается в хэш, который является проверкой, не подкрутил ли чего юзер в куках (его мы и видим в правой части). Вся проблема - узнать, какие параметры и каким образом между собой комбинируются. Тут есть величайшее множество возможных реализаций, которые наверняка можно узнать, лишь докопавшись до исходников сайта. В самом элементарном варианте, который я описал, узнать, какие переменные используются при генерации хэша, можно так:

1. Меняем переменную, запоминаем, что поменяли. Хэш оставляем прежним.

2. Отправляем кук на сервер.

3. Вернул ошибку - переменная участвует в "формировании" хэша, нет - тестим следующую.

Но здесь всё может пойти прахом (даже если мы узнаем, какие переменные проходят конкатенацию, а какие - нет), если потом они как-то модифицируются (например, между ними ставится тире, и от полученной строки считается хэш)... В общем, самый верный вариант - копать исходники, как ни крути.

Если где-то сморозил глупость - сильно не бейте, просто высказал свои мысли, на практике ничем таким никогда заниматься не приходилось.

Также думаю, что затея с куками слишком уж трудоёмкая, и стоит поискать более "классические" дырки типа sql-inj, инклудов или XSS'ок...

InDuStRieS
21.07.2013, 22:10
жжете

Поняша,тут и есть sql inj,только в куках)

Но тут не уязвимо

exT1ma4ka
21.07.2013, 22:22
H3L1X, тесты проводились, боюсь вся строка участвует в формировании хэша. даже когда переставляешь переменные местами - всё рушится.