defsolveJS(self, jsEnv, js): если js2py.eval_js('(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[ !+[]+!+[]]+[+[]])+[])[+!+[]]') == '1': print («Пожалуйста, обновите ваш js2py https://github.com/PiotrDabkowski/Js2Py, применив обходной путь».) js = jsunfuck (js) атоб (ы): вернуть base64.b64decode('{}'.format(s)).decode('utf-8') js2py.disable_pyimport() контекст = js2py.EvalJs({'atob': atob}) результат = context.eval('{}{}'.format(jsEnv, js)) вернуть результат 9<>]*?)<\/div>', тело, re.МУЛЬТИЛАЙН | ре.ДОТАЛЛ ) innerHTML = innerHTML.group(2).replace("'", r"\'") если innerHTML иначе "" js = jsunfuck(jsEnv.format(domain=domain, innerHTML=innerHTML, js=js)) атоб (ы): вернуть base64.b64decode('{}'.format(s)).decode('utf-8') js2py.disable_pyimport() контекст = js2py.EvalJs({'atob': atob}) результат = контекст.eval(js) кроме исключения: logging.error("Ошибка выполнения Cloudflare IUAM Javascript. {}".format(BUG_REPORT)) поднимать пытаться: поплавок (результат) кроме исключения: поднять ValueError("Запрос Cloudflare IUAM вернул неожиданный ответ. {}".format(BUG_REPORT)) вернуть результат
Обход WAF для выполнения XSS. Недавно я охотился за некоторыми XSS и… | by kleiton0x7e
Опубликовано в·
Чтение: 4 мин.·
28 мая 2020 г.Недавно я искал XSS и наткнулся на веб-сайт (давайте назовем его веб-сайтом. com из соображений конфиденциальности) где у него была форма входа администратора в каталоге /admin .
Панель администратора на сайте website.com/adminИнстинктивно я попытался ввести случайные учетные данные, чтобы посмотреть, какой ответ я получу.
/admin/index.php?msg=Invalid%20Email%20and%20Password/admin/index.php?msg=Неверный адрес электронной почты и пароль
Это URL-адрес, на который меня перенаправили, по умолчанию это очень плохая идея отображать сообщение об ошибке, но это реализация, которую я часто вижу на разных веб-сайтах.
Любое значение ?msg= может быть отражено на веб-сайте, поэтому давайте попробуем изменить его, чтобы лучше понять.
То, что я пробовал, было website.com/admin/index.php?msg=Hello World
?msg=Hello World было отраженоТеперь мы видим, что каждый ввод, который мы вводим, отражается в этом тексте с красным шрифтом.
Что, если я попытаюсь внедрить некоторые теги HTML?
Внедрение HTML?msg=
Hello World
Мы успешно внедрили HTML, теперь пришло время добавить код Javascript.
Я перепробовал более 50 основных полезных данных XSS, надеясь, что XSS появится во всплывающем окне:
?msg=
?msg=
?msg= ?msg=
Вы поняли, что я переборщил все типы XSS. Все они были заблокированы сервером, похоже, за кулисами работает WAF:
Вредоносных запросов XSS, заблокированных WAFВведя более 50 полезных нагрузок XSS, я пришел к выводу, что WAF действительно фильтрует:
Каждая полезная нагрузка с
была моей следующей полезной нагрузкой, она была отражена, но без XSS 🙁
Похоже, что XSS по изображению — неправильный путь, поэтому я продолжал перечислять больше, так как он отражается, но внутри него ничего не выполняется.Вскоре я понял, что не был отфильтрован, поэтому я продолжал следовать этому пути. Так как alert() заблокирован, я пытаюсь подтвердить(), так как это сработало.