HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 07.04.2016, 18:14
Unknown
Новичок
Регистрация: 21.06.2005
Сообщений: 1
Провел на форуме:
0

Репутация: 0
По умолчанию

Добрый день. Возник такой вопрос: на некотором сайте присутствует выдача кое-каких полей в формате JSON, эти поля редактируемы юзером. При этом не происходит никакой замены спецсимволов, за исключением экранирования слэшей и двойных кавычек. Можно ли как-то обойти экранирование двойных кавычек, чтобы подать ввод вроде такого

Код:
test"};prompt(document.domain);
и попробовать реализовать XSS? В данный момент такой ввод воспринимается сервером как

Код:
"text":"test\"};prompt(document.domain);"
 
Ответить с цитированием

  #2  
Старый 07.04.2016, 18:22
pas9x
Постоянный
Регистрация: 13.10.2012
Сообщений: 423
Провел на форуме:
97867

Репутация: 52
По умолчанию

Если вывод попадает в ... и не экранируются угловые скобки то можно добавить в строку закрывающий тег скрипта, т.е. . Для примера оригинальный скрипт:

Код:
var str = "сюда попадают данные угловые скобки в которых не преобразуются в html-мнемоники";
Добавляем в строку alert(123);// и получаем уже два скрипта:

Код:
var str = "alert(123);//";
Таким образом первый скрипт не выполнится из-за синтаксической ошибки а второй выполнится.
 
Ответить с цитированием

  #3  
Старый 07.04.2016, 18:28
Unknown
Новичок
Регистрация: 21.06.2005
Сообщений: 1
Провел на форуме:
0

Репутация: 0
По умолчанию

Цитата:
Сообщение от pas9x  

Если вывод попадает в ... и не экранируются угловые скобки то можно добавить в строку закрывающий тег скрипта, т.е. . Для примера оригинальный скрипт:
Код:
var str = "сюда попадают данные угловые скобки в которых не преобразуются в html-мнемоники";
Добавляем в строку alert(123);// и получаем уже два скрипта:
Код:
var str = "alert(123);//";
Таким образом первый скрипт не выполнится из-за синтаксической ошибки а второй выполнится.
Угловые скобки не экранируются, но экранируется слэш в закрывающем тэге, из-за этого так сделать тоже не получится.
 
Ответить с цитированием

  #4  
Старый 07.04.2016, 18:39
pas9x
Постоянный
Регистрация: 13.10.2012
Сообщений: 423
Провел на форуме:
97867

Репутация: 52
По умолчанию

Цитата:
Сообщение от shotya  

Угловые скобки не экранируются, но экранируется слэш в закрывающем тэге, из-за этого так сделать тоже не получится.
Не путай слеш и бекслеш. При json-кодировании обычно экранируется бэкслеш а не обычный слеш. Но если экранируется именно слеш то да, ничего сделать уже нельзя.
 
Ответить с цитированием

  #5  
Старый 07.04.2016, 18:49
faza02
Banned
Регистрация: 21.11.2007
Сообщений: 181
Провел на форуме:
1066435

Репутация: 1013
По умолчанию

а если самому заэкранировать? а на нульбайт как реагирует?
 
Ответить с цитированием

  #6  
Старый 07.04.2016, 19:00
Unknown
Новичок
Регистрация: 21.06.2005
Сообщений: 1
Провел на форуме:
0

Репутация: 0
По умолчанию

Цитата:
Сообщение от yarbabin  

а если самому заэкранировать? а на нульбайт как реагирует?
Экранируется бэкслешом, если самому ввести бэкслеш он тоже заэкранируется.

Код:
{"text":""
На нуллбайт (%00) реагирует как на обычный ввод.
 
Ответить с цитированием

  #7  
Старый 07.04.2016, 19:04
t0ma5
Постоянный
Регистрация: 10.02.2012
Сообщений: 830
Провел на форуме:
300820

Репутация: 90


По умолчанию

я бы ещё проверил как реагирует на backspace %08

может там чего стереть можно

а так не очень понятно в какой код попадают ваши данные

ну то есть маловато

Код:
test"};prompt(document.domain);
контекст нужен
 
Ответить с цитированием

  #8  
Старый 08.04.2016, 11:40
Unknown
Новичок
Регистрация: 21.06.2005
Сообщений: 1
Провел на форуме:
0

Репутация: 0
По умолчанию

Цитата:
Сообщение от t0ma5  

я бы ещё проверил как реагирует на backspace %08
может там чего стереть можно
а так не очень понятно в какой код попадают ваши данные
ну то есть маловато
Код:
test"};prompt(document.domain);
контекст нужен
Код:
data = { тут большой вложенный JSON ... {"text" : "
test\"};prompt(document.domain);"} ... };
Контекст примерно такой, ввод пользователя был

Код:
"};prompt(document.domain);
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.