Parsing json failed майнинг

Module parse failed: Unexpected token m in JSON at position 0 while parsing near ‘module.exports = «<\. ' #64

Comments

jgcmarins commented Feb 12, 2019

  • Operating System:
    macOS Mojave: 10.14
  • Node Version:
    v10.15.1
  • NPM Version:
    6.4.1
  • webpack Version:
    4.29.3
  • raw-loader Version:
    1.0.0

Expected Behavior

To load load this json file:

Actual Behavior

How Do We Reproduce?

The text was updated successfully, but these errors were encountered:

alexander-akait commented Feb 12, 2019

Use raw-loader. /my-awesome-project/app.json (exclude first ! )

jgcmarins commented Feb 12, 2019

swapnildalvi2002 commented Dec 5, 2019

Any solution on this I am also facing same issue
when use raw-loader!
var enUs = require( ‘raw-loader. /../data/translations/en-US.json’ );
ERROR:
\SyntaxError: Unexpected token e in JSON at position 0 while parsing near ‘export default «<\n

And when use json-loader!
var enUs = require( ‘json-loader. /../data/translations/en-US.json’ );
ERROR
SyntaxError: Unexpected token m in JSON at position 0 while parsing near ‘module.exports = <"m

RezaZR commented Apr 24, 2020 •

Any solution on this I am also facing same issue
when use raw-loader!
var enUs = require( ‘raw-loader. /../data/translations/en-US.json’ );
ERROR:
\SyntaxError: Unexpected token e in JSON at position 0 while parsing near ‘export default «<\n

And when use json-loader!
var enUs = require( ‘json-loader. /../data/translations/en-US.json’ );
ERROR
SyntaxError: Unexpected token m in JSON at position 0 while parsing near ‘module.exports = <"m

I’m having the same issue here. Any solution?

Источник

HTB Time. Захватываем машину с Linux через уязвимость в парсере JSON

Содержание статьи

warning

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

Разведка

Ад­рес машины — 10.10.10.214, я всег­да добав­ляю их в / etc/ hosts , что­бы обра­щать­ся по име­ни.

Ска­ниру­ем пор­ты при помощи Nmap. Коман­да ниже про­ведет ска­ниро­вание в два эта­па — сна­чала общее, затем по най­ден­ным пор­там — со скрип­тами.

На­ходим два откры­тых пор­та: 22 (служ­ба SSH) и 80 (веб‑сер­вер Apache). На SSH нам пока что ловить нечего, поэто­му сра­зу отправ­ляем­ся «про­бивать» веб.

Точка входа

И на пер­вой же стра­нице нас встре­чает поле вво­да с под­писью ONLINE JSON BEAUTIFIER & VALIDATOR, из чего дела­ем вывод, что сайт пар­сит и выводит текст в фор­мате JSON.

Глав­ная стра­ница сай­та http://time.htb

При поис­ке точ­ки вхо­да луч­ше тес­тировать все поля вво­да на обра­бот­ку «нежела­тель­ных» сим­волов. Они могут выпол­нять роль слу­жеб­ных для той или иной тех­нологии, и поэто­му, если прог­раммист не позабо­тил­ся о спе­циаль­ной обра­бот­ке, они могут вызывать ошиб­ки или дру­гие сбои в при­ложе­нии. Я про­вел неболь­шой тест — скор­мил одну и ту же строч­ку валида­торам раз­ных типов. Ответ получил­ся раз­ным, а это зна­чит, что обра­бот­ка поль­зователь­ско­го вво­да про­исхо­дит по‑раз­ному.

Ре­акция двух типов валида­торов на стро­ку qwe

Во вто­ром слу­чае мы получа­ем пол­ноцен­ный текст ошиб­ки:

Validation failed: Unhandled Java exception: com.fasterxml.jackson.core. JsonParseException: Unrecognized token ‘qwe’: was expecting (‘true’, ‘false’ or ‘null’)

Ско­рее, это свя­зано с тем, что при­ложе­ние еще не доведе­но до ума, поэто­му и при­сутс­тву­ет помет­ка Beta. Имен­но сюда нам и нуж­но давить. Так как перед нами пар­сер JSON, давай пос­мотрим, как он реаги­рует на слу­жеб­ные пос­ледова­тель­нос­ти‑типы [ ] и < >. В ответ на такие зап­росы мы тоже получим раз­ные ошиб­ки для раз­ных пос­ледова­тель­нос­тей.

Ре­акция валида­тора

Validation failed: Unhandled Java exception: com.fasterxml.jackson.databind.exc. MismatchedInputException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class java.lang.Object

Validation failed: Unhandled Java exception: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id ‘qwe’ as a subtype of [simple type, class java.lang.Object]: no such class found

Ана­лиз оши­бок полезен тем, что помога­ет опре­делить исполь­зуемую тех­нологию. Это рас­ширя­ет наше пред­став­ление о том, как внут­ри устро­ено при­ложе­ние. В пер­вом и во вто­ром слу­чае исклю­чение генери­рует Java, а пакет называ­ется com. fasterxml. jackson. databind. exc . Отлично, мы опре­дели­ли, что там внут­ри! Оста­лось поис­кать в интерне­те уяз­вимос­ти, которые уже наш­ли в этой прог­рамме.

Для популяр­ных тех­нологий есть хорошо докумен­тирован­ные экс­пло­иты, к тому же не в одном вари­анте. В нашем слу­чае дос­таточ­но зап­роса jackson databind vulnerability , и Google находит уяз­вимость, которая может пре­дос­тавить уда­лен­ное выпол­нение кода (RCE). Так­же получа­ем ее иден­тифика­тор (2019-12384) в базе дан­ных обще­извес­тных уяз­вимос­тей информа­цион­ной безопас­ности (CVE).

По­иск задоку­мен­тирован­ных уяз­вимос­тей в тех­нологии Jackson Databind

Для уяз­вимос­тей с CVE на GitHub нес­ложно най­ти экс­пло­ит. Пов­торя­ем зап­рос и ищем готовый код. Пер­вая же ссыл­ка ведет нас к пол­ному опи­санию про­цес­са экс­плу­ата­ции.

По­иск экс­пло­итов для CVE-2019-12384

Закрепление

Выб­ранная нами уяз­вимость зак­люча­ется в том, что зло­умыш­ленник может исполь­зовать десери­али­зацию для уда­лен­ного выпол­нения кода. Дело в том, что внут­ри пакета рекур­сивно вызыва­ются все сет­теры с клю­чом, содер­жащим­ся внут­ри подобъ­екта, а имен­но setUrl( String url) . Пос­ле это­го эта­па пол­ный объ­ект сно­ва сери­али­зует­ся в объ­ект JSON. При этом все поля сери­али­зуют­ся нап­рямую, если гет­тер не опре­делен, или через явный гет­тер. Ког­да вызыва­ется getConnection( ) , соз­дает­ся база дан­ных. Но мы можем соз­дать соеди­нение с уда­лен­ной базой дан­ных.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

mongoexport — issue with JSON query (extended JSON — Invalid JSON input)

I have started learning MongoDB recently. Today the instructor taught us the mongoexport command. While practicing the same, I face a typical issue which none of the other batchmates including the instructor faced. I use MongoDB version 4.2.0 on my Windows 10 machine.

If I use mongoexport for my collection without any -q parameter to specify any filtering condition, it works fine.

However, whenever I specify the JSON query as -q (or —query) it gives an error as follows.

The same error persists in all the different flavors I had attempted with for the query.

I had even attempted with a different query condition on the ’empId’ as -q <'empId':'1001'>But no luck. I keep getting the same error.

As per one of the suggestions given in the StackOverflow website, I tried with the following option but getting a different error.

The error is : ‘query ‘[39 123 101 109 112 73 100 58 49 48 48 49 125 39]’ is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface <>‘.

I am really not sure what is missing here ? Tried with a bit of Googling and also gone through the official MongoDB documentation of the mongoexport — but no luck.

The employee collection in my system looks like the follows with 3 documents.

Update

As suggested by @NikosM, I have saved the query in a .json file (query.json) and tried the same mongoexport command with the new approach. Still, no luck. Same Marshal error.

Any help on this will be highly appreciated.

Источник

Почему rest_framework не хочет парсить json?

Есть функция, которая принимает json

Код запущен на серваке на порту 8080 и прописан адрес такого вида h t t p://example:8080
И прикол в том что, если отправлять запрос непосредственно с сайта(на кнопку повесил адрес метода, то все работает и json парсится), а если я отправляю запрос через pycharm или postman, получаю такую ошибку

В чем может быть проблема?

  • Вопрос задан более трёх лет назад
  • 408 просмотров

from rest_framework.parsers import JSONParser

@csrf_exempt
def user_update(request):
if request.method == ‘POST’:
try:
data = JSONParser().parse(request)
token = data[‘token’]
first_name = data[‘first_name’]
last_name = data[‘last_name’]
photo = data[‘photo’]
user = UserProfile.objects.get(token=token)
user.first_name = first_name
user.last_name = last_name
user.photo = photo
user.confirmed = True
user.save()

return JSONResponse( <
‘success’: user.confirmed,
‘first_name’: user.first_name,
‘last_name’: user.last_name,
‘photo’: user.photo
>)
except KeyError:
return JSONResponse( <
‘success’: False,
‘code’: ’99’,
‘notice’: ‘Invalid token’
>)

Вот, как описал выше работает с сайта, а с утилит парсинг валится(

Источник

Hack The Box. Прохождение JSON. Уязвимость в Json.Net и LPE через SeImpersonatePrivilege

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье эксплуатируем уязвимость в Json.Net и посмотрим, как повысить свои привилегии до SYSTEM, если мы имеем право SeImpersonatePrivilege.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ 🙂

Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Разведка

Данная машина имеет IP адрес 10.10.10.158, который я добавляю в /etc/hosts.

Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.

Далее нужно собрать больше информации об известных портах. Для того используем nmap с параметром -А.

Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.

Зайдем посмотреть, что на вебе. В итоге загружается страница, и потом только нас перебрасывает на страницу авторизации.

Можно было бы это обойти, но admin:admin позволяют нам зайти.

На самом сайте ничего интересного нет, и в попытках найти хоть что-то, цепляемся за куки.

То есть значение Password — это MD5 от пароля admin.

Далее ничего интересного. Открыв Burp и перехватив запрос, можно обнаружить интересный HTTP-заголовок.

И на данном этапе я завис, пока мне не подсказали “поломать значение”. Очевидно, что в таких случаях нужно добиваться ошибок и смотреть реакцию API в трех состояниях: верно, неверно и ошибка. Но я почему-то это упустил.

Entry point

И далее было обнаружено, что если в странном заголовке HTTP будут передаваться поломанные данные (удалить часть символов), то сервер выдает ошибки. Ниже приведены данные, которые возвращает сервер при нормальном значении заголовка и при удалении от одного до четырех символов.

Интересную ошибку мы получаем в последнем случае. Так как происходит десереалиация объекта JSON, мы можем проэксплуатировать это с помощью ysoserial. Будем использовать гаджет ObjectDataProvider для Json.Net и выполним команду ping для проверки предположения уязвимости.

Теперь включим tcpdump с фильтром протокола ICMP, чтобы отлавливать ping.

При перехвате запроса меняем заголовок.

И получаем тот пинг, который заказывали.

Теперь нужно проделать то же самое с нагрузкой метерпретер. Для начала сгенерируем нагрузку и откроем листенер.

Теперь откроем локальный SMB сервер с которого будет запускаться нагрузка.

Теперь снова сериализуем нужные данные, в качестве команды запускаем нашу нагрузку с нашего сервера.

Видим успешное подключение к серверу SMB и успешно загруженную сессию метерпретера.

И читаем файл пользователя.

Первым делом смотрим информацию о пользователе, под которым мы работаем.

У пользователя включена привилегия SeImpersonatePrivilege (право «Олицетворять клиента после проверки подлинности»). Как говорит Microsoft:

Присвоение пользователю права «Олицетворять клиента после проверки подлинности» разрешает программам, запущенным от имени данного пользователя, олицетворять клиента. Использование данного параметра предотвращает олицетворение неавторизованными серверами клиентов, подключающихся к этим серверам с помощью процедур RPC или именованных каналов.

Дело в том, что мы можем поднять свои права до SYSTEM. Полное исследование можно глянуть тут. Данной уязвимости подвержены следующие привилегии:

  • SeImpersonatePrivilege
  • SeAssignPrimaryPrivilege
  • SeTcbPrivilege
  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilege
  • SeTakeOwnershipPrivilege
  • SeDebugPrivilege

Давайте сгенерируем еще одну нагрузку и запустим для нее листенер.

Для эксплуатации будем использовать Juicy Potato. Но в качестве параметра нужно указать CLSID учетной записи для целевой системы, его возьмем также с репозитория. Но сначала глянем, что за система.

И теперь смотрим CLSID.

Загрузим файлы на целевой хост.

Теперь запускаем Juicy Potato и указываем ему с помощью чего будет создан процесс (CreateProcessWithTokenW или CreateProcessAsUser, параметр -t), файл процесса (-p), порт для прослушивания (-l), и CLSID (-c).

Процесс успешно создан, и мы видим созданную сессию метерпретер.

И получаем учетную запись SYSTEM.

Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.

Источник

Читайте также:  Налогообложение прибыли предприятия с иностранными инвестициями
Оцените статью