Tìm hiểu về khai thác nodejs và mongodb injection


Bài viết đưa ra một kĩ thuật đơn giản nhưng hiệu quả trong việc khai thác ứng dụng web hiện đại được viết trên nền NodeJS và MongoDB. Thực chất, kĩ thuật này khá giống SQL Injection (SQLi) nhưng đơn giản hơn nhiều do không cần hoàn thành những chuỗi kí tự phức tạp hay lạ thường.

Những ví dụ trong bài viết sử dụng ExpressJS. Đây là framework lập trình ứng dụng web phổ biến dành cho NodeJs.


Sơ lược về SQL Injection

Điều đầu tiên bạn cần học khi nghiên cứu về SQL Injection là làm thế nào để tạo ra một biểu thức TRUE. Ví dụ về câu truy vấn SQL dưới đây được sử dụng trong việc xác thực người dùng khi tên tài khoản và mật khẩu được gửi lên ứng dụng:

SELECT * FROM users WHERE username = '$username' AND password = '$password'

Nếu câu lệnh này không được chuẩn bị hay xử lý đúng khi tạo ra, tin tặc có thể đưa thêm

' or 1=1--

vào trường username nhằm tạo tạo một bypass login đơn giản nhất như sau:

SELECT * FROM users WHERE username = '' or 1=1--' AND password = ''

Hiện nay, kiểu tấn công cổ điển và biến thể của nó vẫn đang được sử dụng để xác định lỗ hổng trong xử lý câu lệnh SQL.

Sơ lược về MongoDB Injection

Dù SQL Injection vẫn là một kiểu tấn công ứng dụng web phổ biến, nhưng nó không còn phát tán rộng rãi như trước kia nữa. Rất nhiều ứng dụng web hiện nay lựa chọn các cơ chế lưu trữ đơn giản hơn như cung cấp cơ sở dữ liệu NoSQL như MongoDB. Cơ sở dữ liệu NoSQL không chỉ được phát triển theo hướng đơn giản hóa mà còn cải thiện bảo mật thông qua việc loại bỏ hoàn toàn ngôn ngữ SQL và phụ thuộc vào cơ chế truy vấn có cấu trúc đơn giản hơn như JSON và JavaScript.

Câu lệnh SQL ở ví dụ truy vấn chi tiết đăng nhập người dùng sẽ được viết như sau trong MongoDB:

db.users.find({username: username, password: password});

Chúng ta không còn phải xử lý với một ngôn ngữ truy vấn dưới dạng một chuỗi kí tự, do đó có thể cho rằng việc tiêm nhiễm chuỗi độc hại vào là không thể. Tuy nhiên, sét về tính bảo mật, vẫn còn rất nhiều yếu tốt khác có thể ảnh hưởng.

Ví dụ, giả sử tại trường username, hoặc tham số được truyền vào dưới dạng phân tích một đối tượng JSON. Nếu đầu vào ứng dụng là một tài liệu JSON, tin tặc có thể thực hiện bypass login tương tự như với SQL Injection với giá trị đầu vào như sau:

{
"username": {"$gt": ""},
"password": {"$gt": ""}
}

Code xử lý yêu cầu có dạng như sau:

app.post('/', function (req, res) {
db.users.find({username: req.body.username, password: req.body.password}, function (err, users) {
// TODO: handle the rest
});
});

Ở đoạn code ExpressJS xử lý trên, trường username và password không được kiểm duyệt để đảm bảo chúng là chuỗi kí tự. Do đó khi một tài liệu JSON được phân tích, những trường này có thể chứa bất kì chuỗi kí tự nào, và những chuỗi kí tự đó có thể được dùng để tạo ra một cấu trúc truy vấn khác. Trong MongoDB, trường $gt có nghĩa đặc biệt, được sử dụng trong so sánh lớn hơn. Do đó username và password từ cơ sở dữ liệu sẽ được so sánh với dữ liệu nhập vào là chuỗi kí tự trống “” và kết quả câu lệnh trả về là TRUE.

Request dùng để khai thác sẽ có dạng như sau:

POST http://target/ HTTP/1.1
Content-Type: application/json
{
"username": {"$gt": ""},
"password": {"$gt": ""}
}

Sử dụng khai thác kết hợp NodeJS và MongoDB

Ví dụ trên sử dụng cơ chế truyền tải nội dung kiểu JSON để giải thích về kiểu tấn công này trở nên dễ hiểu hơn. Tuy nhiên, JSON vẫn chưa phổ biến như url-encoded key-value hay còn gọi là urlencoding. Sử dụng phần thân và tham số truy vấn trong định dạng urlencoding liệu có an toàn?

Trong ExpressJS ta vẫn có thể bypass ví dụ trên thông qua một chuỗi truy vấn đơn giản như sau:

POST http://target/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
username[$gt]=&password[$gt]=

Chuỗi

username[$gt]=

là một cú pháp đặc biệt sử dụng trong module qs (sử dụng mặc định trong ExpressJS và phần mềm trung gian body-parser). Cú pháp này tương đương với việc tạo ra một JavaScript object/hash với một tham số $gt và không có giá trị. Thực chất, request trên sẽ trả về kết quả là một đối tượng JavaScript như sau:

{
"username": {"$gt": undefined},
"password": {"$gt": undefined}
}

Nếu so sánh với đối tượng sinh ra như trong ví dụ trước, ta sẽ thấy chúng hoàn toàn giống nhau.

CÁC VÍ DỤ MINH HỌA

Hai project sau được dùng để minh họa lỗ hổng trong thực tế. Project đầu tiên sử dụng kiểu giá trị urlencoded và project thứ hai sử dụng JSON. Bạn đọc có thể đọc thêm tệp tin README để có thêm thông tin.

Kiểm thử MongoDB Injection

Kết hợp hai công cụ kiểm tra tự động có tên Formfuzz và Jsonfuzz. Các công cụ sẽ tự động sinh ra request kiểm tra khai thác MongoDB.


Bình luận

Email của bạn sẽ không được hiển thị công khai.

  1. Получите максимальную отдачу от своих сайтов PBN
    PBN – самый эффективный метод построения ссылок Blackhat, когда-либо обнаруженный создателями ссылок. Тем не менее, алгоритм поиска Google не может точно определять сайты PBN.
    Но эффективность ссылок PBN зависит от качества сайтов PBN. Если сайт PBN имеет значительное количество обратных ссылок, то ссылки с этого сайта будут более эффективными, чем сайт PBN без каких-либо обратных ссылок.
    Ссылки могут быть лучшим способом предоставить ссылки на ваши сайты PBN. Ссылки на профили на форумах увеличат ссылочный вес PBN-сайтов. Даже обратные ссылки помогут сайту PBN выйти из песочницы Google.
    Обращайтесь: https://t.me/PromoPult

    =============================================================

    Успешные Профили Аккаунты. Ресурсы разноязычные. Разные движки.
    Сделать заказ: https://t.me/PromoPult

  2. биткоин btc кошелек

    Bitcoin (BTC) Кошелек. Скачать целевой кошелек с Bitcoin (BTC) поддержка и самые лучшие блокчейнами. Лишь вы руководите своими средствами. Получать, отправлять, хранить и обмениваться криптовалютой прямо в мобильный интерфейс. Купите Биткоин и Биткоин с Trust Кошелек . Купите Биткоин и другую криптовалюту с вашим Trust Кошелек.. Вы имеете возможность приобрести криптовалюту (BTC/ETH/TRX/XRP/LTC) на сумму от 50 до 20 000 долларов США посредством кредитной карты/дебетовой карты в безопасном режиме из Trust Кошелек. приложения.
    биткоин кошелек личный кабинет

  3. гражданский кодекс рф статья 257

    Здравствуйте.
    Не так давно я взял большой кредит. Всё было нормально, пока не появились сложные времена.
    У меня возникла проблема с возвратом кредита.
    Пришлось немало пообивать пороги различных юридичесикх организаций.
    Мне повезло. Я нашёл её…Ту самую, которая вызвалась решить все мои проблемы.
    Мне нужна была услуга как уволиться директору по собственному желанию
    .
    Сперва я рассказал всё на сайте, где меня бесплатно проконсультировали.
    После заключения договора с данной фирмой, сотрудники консультировали меня по всем вопросам
    и вели полное сопровождение на протяжении всего процесса.
    Всё очень организованно и профессионально сделали сотрудники этой юридической фирмы.
    Все мои проблемы были решены за короткий срок.

    Молодцы! Просто нет слов, настолько все четко сделано, честно говоря неожиданно. Такое качество за такие сроки!
    Большое вам спасибо.

    Рекомендую!
    статья 421 гражданского кодекса рф

    Консультации по телефонам:

    Москва, Московская область 8 (499) 350-55-06 доб. 238
    Санкт-Петербург, Ленинградская область 8 (812) 309-06-71 доб. 793
    Федеральный номер 8 (800) 555-67-55 доб. 779
    Краснодарский край 8 (861) 203-64-41 доб. 767
    Свердловская область 8 (343) 318-28-46 доб. 776
    Воронежская область 8 (473) 204-54-67 доб. 765
    Новосибирская область 8 (383) 280-46-81 доб. 764
    Нижегородская область 8 (831) 429-17-72 доб. 771
    Волгоградская область 8 (844) 278-04-56 доб. 769
    Республика Башкортостан 8 (347) 214-53-29 доб. 764
    Красноярский край 8 (391) 204-65-59 доб. 767
    Ростовская область 8 (863) 303-61-49 доб. 771
    Ульяновская область 8 (842) 224-21-78 доб. 764
    Челябинская область 8 (351) 202-13-44 доб. 770
    Ставропольский край 8 (865) 220-71-53 доб. 751

  4. coinbase в ожидании

    Кошелек-обменник Trustee — бери и продавай крипту анонимно на карту от 0,2% Trustee Wallet – идеальный кошелек для продажи и покупки криптовалют с любой банковской карты Visa/MasterСard. Отечественные преимущества – анонимность, самые низкие комиссии от 0,2% и лучший курс на рынке. Узнайте как это работает – свайпайте вниз! Обменник с функцией хранения крипты. Функциональность и надёжность в одном приложении! Smart-алгоритм. Доверьте выбор курса нам. Smart алгоритм определяет лучший курс на рынке, что позволяет минимизировать Ваши затраты при проведении операций. Поддержка нескольких кошельков. Вы имеете возможность создавать неограниченное количество кошельков для различных целей: трейдинга, хранения и личных расходов с разбивкой по категориям и неповторимыми названиями, а также импортировать другие кошельки. Транзакция в два клика. Отправляйте криптовалюты легким движением руки – мы побеспокоились, дабы все элементы управления были на своих местах.
    coinbase перевод

  5. Футболка

    http://merchprint.ru/muzhskiye-tolstovki/tolstovka-bezdomnyy-bog-2030007 – Свитшот
    Старая цена – 3199
    Новая цена – 1899

  6. Хочу посоветовать данную юридическую компанию, как добросовестного и надежного партнера, готового идти навстречу клиентам.
    Особенно меня порадовала отличительная черта сотрудников компании – оперативность в работе и готовность быстро
    реагировать на форс-мажорные обстоятельства, возникшие у заказчиков и приспосабливаться к ним. Убедился в этом лично, когда понадобилась услуга Услуги по банкротству юридических лиц в Москве.

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

  7. https://t.me/PromoPult – Парсинг данных
    Формы обратной связи — более 3 500 000 ссылок. Для различных целей
    https://t.me/XrumerSeo – Order promotion

  8. п»ї
    Как использовать компьютер с умом? Заставьте его добывать криптовалюту! CryptoTab Браузер — это самый быстрый способ начать ваш путь в мире майнинга. Браузер уже готов к использованию — просто скачайте и установите! http://bit.ly/2TPy2dj

    https://cryptotabbrowser.com/landing/42/5703690

    https://clck.ru/QAzZ6

    =Crypto=

  9. п»ї
    Я пользуюсь CryptoTab Браузером — и вам советую! С ним вы сможете получать BTC, просто посещая любимые сайты или просматривая видео на YouTube. CryptoTab быстр, надежен и обладает удобным интерфейсом. https://cryptotabbrowser.com/5703690

    https://cryptotabbrowser.com/landing/43/5703690

    https://clck.ru/QB24E

    =Crypto=

  10. БИЗНЕС-ПЛАН

    Наша команда выручает студентов с 2015 года. В процессе борьбы с невероятно сложными предметами и хитрыми преподавателям мы смогли помочь более чем 5000 клиентам.

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

    Мы беремся за все предметы и все типы работ. Также мы с радостью выполним доработки уже готовой работы или напишем самые трудные разделы. Наша цель – это максимально упростить обучение в ВУЗе и сделать его спокойным.

    Мы работаем без офиса, хоть и имеем официальную регистрацию. Это дает нам возможность избежать лишних затрат и как результат наши цены доступные для всех студентов.

    Быстрое развитие компании связано с большим процентов довольных клиентов, которые рекомендуют нас своим одногруппникам и знакомым из других университетов.

    С начала 2015 года мы запустили систему вознаграждений за такие рекомендации и уже выплатили 200000 рублей. Эти деньги могут были использованы для заказы новых работ.

    Мы продолжаем развиваться и оказывать услуги высокого уровня. Надеемся, что вы оцените наши старания!
    ЧЕРТЕЖИ

  11. https://t.me/student_diplom – РЕШЕНИЕ ЗАДАЧ

    Как оформить заказ
    1) Заполните форму заказа на нашем сайте

    Нажмите на кнопку «Заказать работу»
    Авторизуйтесь через Вконтакте или заполните ваши контактные данные в открывшейся форме.На указанные вами контакты придет уведомления о цене вашего заказа, вопросы менеджера и другая полезная информация.
    Дайте максимально развернутую информацию о Вашем заказе, сроках выполнения и прикрепите файлы, если они есть.
    2) Внесите предоплату 50 процентов, чтобы мы приступили к выполнению.

    3) Следите за вашим заказом. Вы можете следить за статусом вашего заказ в личном кабинете. Также согласовывать все детали выполнения работы с Вашим автором.

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

    5) Сдайте работу на отлично!
    ОТВЕТЫ НА БИЛЕТЫ

  12. Закажите кредитную карту сейчас — бесплатно доставим завтра!
    Выгодно приобретай кредитную карту:
    3 месяца без % на любые операции
    Получить карту: https://bit.ly/32MeHhT
    Наша лучшая кредитная карта:

    Бесплатная доставка – Оставьте заявку на карту сегодня, и мы бесплатно доставим её уже завтра.
    Получить карту с выгодой https://bit.ly/32MeHhT

  13. Заявка на кредитную карту 3 месяца без %
    Выгодно приобретай кредитную карту:

    500 000 ? лимит по карте
    Получить карту: https://bit.ly/32MeHhT
    Наша лучшая кредитная карта:
    Возобновляемый беспроцентный период – Ваши 3 месяца без процентов начнутся заново на следующий день после того, как вы вернёте на карту потраченные деньги. И так снова и снова.
    Получить карту с выгодой https://bit.ly/32MeHhT

  14. Получите максимальную отдачу от своих сайтов PBN
    PBN – самый эффективный метод построения ссылок Blackhat, когда-либо обнаруженный создателями ссылок. Тем не менее, алгоритм поиска Google не может точно определять сайты PBN.
    Но эффективность ссылок PBN зависит от качества сайтов PBN. Если сайт PBN имеет значительное количество обратных ссылок, то ссылки с этого сайта будут более эффективными, чем сайт PBN без каких-либо обратных ссылок.
    Ссылки могут быть лучшим способом предоставить ссылки на ваши сайты PBN. Ссылки на профили на форумах увеличат ссылочный вес PBN-сайтов. Даже обратные ссылки помогут сайту PBN выйти из песочницы Google.
    Обращайтесь: https://t.me/seo_promo

  15. http://bit.ly/2sdUrWH – ОТВЕТЫ НА БИЛЕТЫ

    Наша команда выручает студентов с 2015 года. В процессе борьбы с невероятно сложными предметами и хитрыми преподавателям мы смогли помочь более чем 5000 клиентам.

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

    Мы беремся за все предметы и все типы работ. Также мы с радостью выполним доработки уже готовой работы или напишем самые трудные разделы. Наша цель – это максимально упростить обучение в ВУЗе и сделать его спокойным.

    Мы работаем без офиса, хоть и имеем официальную регистрацию. Это дает нам возможность избежать лишних затрат и как результат наши цены доступные для всех студентов.

    Быстрое развитие компании связано с большим процентов довольных клиентов, которые рекомендуют нас своим одногруппникам и знакомым из других университетов.

    С начала 2015 года мы запустили систему вознаграждений за такие рекомендации и уже выплатили 200000 рублей. Эти деньги могут были использованы для заказы новых работ.

    Мы продолжаем развиваться и оказывать услуги высокого уровня. Надеемся, что вы оцените наши старания!
    ЭССЕ

  16. Увеличение ссылочного веса пресс-релиза: https://t.me/seo_promo
    Пресс-релиз – это еще один отличный способ наладить ссылки и рекламировать свой бренд, не тратя слишком много денег.
    Все еще небольшие и крупные бренды используют пресс-релизы в своей маркетинговой кампании. Но ссылки из пресс-релиза не такие уж и сильные.
    Важный факт: в пресс-релизах нет ссылок, как в вашем блоге . Если вы можете дать ссылки на свой пресс-релиз, это увеличит ссылочный вес пресс-релиза.
    В конечном итоге это увеличит ссылочный вес на странице с деньгами. Вы можете предоставить на форуме ссылки на пресс-релиз. Ссылки на форумы могут увеличить ссылочный вес пресс-релиза.
    В этом случае мы можем вам помочь.
    мы можем создать огромное количество ссылок на профили форума для пресс-релиза. Без сомнения, ссылки увеличат ссылочный вес пресс-релизов.

  17. Заявка на кредитную карту 100 дней без %
    Выгодно приобретай кредитную карту:

    500 000 ? лимит по карте
    Получить карту: https://bit.ly/32MeHhT
    Наша лучшая кредитная карта:

    Закрываем невыгодные кредитки – Закрывайте кредитки других банков бесплатным и моментальным переводом и экономьте на платежах в беспроцентный период.
    Для перевода не нужно никуда ходить — всё можно сделать в приложении или интернет-банке.
    Получить карту с выгодой https://bit.ly/32MeHhT

  18. Активный корсет GenuTrain стабилизирует сустав, оказывает обезбаливающее действие и способствует более быстрой реабилитации и восстановления подвижности колена. Ортез предназначен для активной поддержки коленного сустава, его действие проявляется во время движений. При этом создается компрессия и происходит массаж мягких тканей за счет материала анатомической вязки и интегрированной кольцевидной вставки Омега.
    Купить со скидкой здесь: https://bit.ly/33NnBei

  19. Футболка

    http://merchprint.ru/zhenskiye-futbolki/futbolka-bring-me-the-horizon-1841308 – Футболка
    Старая цена – 1499
    Новая цена – 999

  20. Заявка на кредитную карту 100 дней без %
    Выгодно приобретай кредитную карту:

    500 000 ? лимит по карте
    Получить карту: https://bit.ly/3ccGnPX
    Наша лучшая кредитная карта:
    Возобновляемый беспроцентный период – Ваши 100 дней без процентов начнутся заново на следующий день после того, как вы вернёте на карту потраченные деньги. И так снова и снова.
    Получить карту с выгодой https://bit.ly/3ccGnPX

  21. Только самые лучшие и эффективные методы и способы продвижения
    https://t.me/seo_promo – Создание ссылок

  22. https://bit.ly/2FyoGOs – 100ГАРАНТИРОВАННЫЙ СПОСОБ РАЗВЕСТИ ДЕВУШКУ НА СЕКС