Свят Логин
Как можно аутентифицироваться:
SQL injection
2FA или Двухфакторная аутентификация
SQL injection
OWASP Testing Guide
1. Testing for Credentials Transported over an Encrypted Channel
2. Testing for Default Credentials
3. Testing for Weak Lock Out Mechanism
4. Testing for Bypassing Authentication Schema
5. Testing for Browser Cache Weaknesses
6. Testing for Weak Password Policy
7. Testing for Weak Security Question Answer
8. Testing for Weak Password Change or Reset Functionalities
9. Testing for Weaker Authentication in Alternative Channel
SQL injection
SQL injection
Что проверить
POST http://www.example.com:443/login.do HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404
Accept: text/xml,application/xml,application/xhtml+xml,text/html
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Referer: https://www.example.com/homepage
Cookie: SERVTIMSESSIONID=s2JyLkvDJ9ZhX3yr5BJ3DFLkdphH0QNSJ3VQB6pLhjkW6F
User=test&Pass=test&portal=ExamplePortal
SQL injection
2. Testing for Default Credentials
SQL injection
Что проверить
Пароль Кол-во
123456 120511
12345 48452
password 39448
DEFAULT 34275
123456789 26620
qwerty 20778
12345678 14172
abc123 10869
pussy 10683
1234567 9468
Топ паролей
Топ паролей
Brute force
email or username
Password
Authorization
User
Pass
SQL injection
3. Testing for Weak Lock Out Mechanism
SQL injection
Риски, которые стоит учитывать:
�1. Каков риск подбора пароля для приложения?
2. Достаточно ли CAPTCHA для снижения этого риска?
3. Используется ли механизм блокировки на стороне клиента?
4. Каков порог срабатывания блокировки?
SQL injection
3. Testing for Weak Lock Out Mechanism
Если 1 юзер, то будь аккуратен)))
SQL injection
4 Testing for Bypassing Authentication Schema
SQL injection
Direct page request (Прямой запрос страницы)
SQL injection
Parameter modification (Модификация параметра)
SQL injection
SQL-инъекция
SQL injection
5 Testing for Browser Cache Weaknesses
SQL injection
Что проверить
-- Cache-Control: no-cache
SQL injection
Хранения кеша
- Mozilla Firefox:
-- Unix/Linux: ~/.cache/mozilla/firefox/
-- Windows: C:\Users\<user_name>\AppData\Local\Mozilla\Firefox\Profiles\<profile-id>\Cache2\
- Internet Explorer:
-- C:\Users\<user_name>\AppData\Local\Microsoft\Windows\INetCache\
- Chrome:
-- Windows: C:\Users\<user_name>\AppData\Local\Google\Chrome\User Data\Default\Cache
-- Unix/Linux: ~/.cache/google-chrome
SQL injection
6 Testing for Weak Password Policy
SQL injection
Что проверить
1. Какие символы разрешено и запрещено использовать в пароле?
2. Как часто пользователь может менять свой пароль?
3. Когда пользователь должен изменить свой пароль?
4. Как часто пользователь может повторно использовать пароль?
5. Насколько следующий пароль должен отличаться от последнего пароля?
6. Какова минимальная и максимальная длина пароля?
7. Запрещается ли пользователю использовать свое имя в качестве пароля?
SQL injection
7 Testing for Weak Security Question Answer
SQL injection
Что проверить
Плохие:
- Ответы могут быть известны близким, например «Какая девичья фамилия?
- Ответы можно легко угадать, например, «Какой твой любимый цвет?»
- Ответы могут быть общедоступными, например "Какой твой любимый фильм?" - ответ можно легко найти на странице профиля пользователя в социальной сети.
Хороший:
Как называется ваша первая игрушка?
SQL injection
8 Testing for Weak Password Change or Reset Functionalities
SQL injection
Что проверить
1. Есть ли пользователи, кроме администраторов, которые могут изменять или сбрасывать пароли для учетных записей, кроме своих собственных, конечно же))
2. Найти, нету ли в смене или сброса паролей уязвимость для CSRF.
3. Понять какая информация требуется для сброса пароля?
4. Как сообщается пользователю про сброс пароля?
5. Сброшенный новый пароль генерируются случайным образом?
6. Требует ли функция подтверждения для сброса пароля перед изменением?
7. Требуется ли старый пароль для завершения изменения?
SQL injection
9 Testing for Weaker Authentication in Alternative Channel
SQL injection
Что проверить
Есть сайт:
http://www.example.com
Есть аутентификация, с использованием Transport Layer Security:
https://www.example.com/myaccount/
А есть аутентификация для мобильного веба, без Transport Layer Security:
http://m.example.com/myaccount/
SQL injection
Что проверить
Понять первичный механизм
Определить другие каналы
-- файл robots.txt, sitemap.xml и тд.
-- поиск в логах HTTP проксях «mobile», «mobile app»,«auth»,« sso» и тд
-- поиск разных веб-сайтов одной организации или с одинаковым доменном
SQL injection
OWASP Testing Guide
1 Testing Directory Traversal File Include
2 Testing for Bypassing Authorization Schema
3 Testing for Privilege Escalation
4 Testing for Insecure Direct Object References
SQL injection
1 Testing Directory Traversal File Include
Обращение к серверу через урл
http://example.com/getUserProfile.jsp?item=../../../../etc/passwd
Обращение к серверу через куки
Cookie: USER=1826cc8f:PSTYLE=../../../../etc/passwd
SQL injection
2 Testing for Bypassing Authorization Schema
SQL i
Векторы атаки вертикальный
Web App
Admin
User
Manager
web_app.com/
admin/
SQL i
Векторы атаки горизонтальный
http://web_app.com/user_info
?user=1
Юзер 1
Юзер 2
http://web_app.com/user_info
?user=2
Аноним
SQL injection
3 Testing for Privilege Escalation
SQL injection
Манипулирование группой пользователей
POST /user/viewOrder.jsp HTTP/1.1
Host: www.example.com
...
groupID=grp001&orderID=0001
SQL injection
Манипулирование профилем пользователя
HTTP/1.1 200 OK
Server: Netscape-Enterprise/6.0
Date: Wed, 1 Apr 2006 13:51:20 GMT
Set-Cookie: USER=aW78ryrGrTWs4MnOd32Fs51yDqp; path=/; domain=www.example.com
Set-Cookie: SESSION=k+KmKeHXTgDi1J5fT7Zz; path=/; domain= www.example.com
Cache-Control: no-cache
Pragma: No-cache
Content-length: 247
Content-Type: text/html
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Connection: close
<form name="autoriz" method="POST" action = "visual.jsp">
<input type="hidden" name="profile" value="SysAdmin">\
<body onload="document.forms.autoriz.submit()">
</td>
SQL injection
4 Testing for Insecure Direct Object References
SQL injection
Случай, когда значение параметра используется непосредственно для выполнения операции в системе
http://foo.bar/changepassword?user=someuser
SQL injection
Случай, когда значение параметра используется для получения записи из базы данных
http://foo.bar/somepage?invoice=12345
SQL injection
IAM - Identity Access Management
SQL injection
Где поиграться?
SQL injection
Где взять сумасшедшие данные
Спасибо за внимание!