Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
QLinspector — Поиск цепочек гаджетов Java/C# с помощью CodeQL | Kitploit
Инструменты/GitHubGitHub/synacktiv/qlinspector
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияРазработка Полезной Нагрузки
GitHubsynacktiv/qlinspector

QLinspector

Поиск цепочек гаджетов Java/C# с помощью CodeQL

Репозиторий
1882212 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

QLinspector

Поиск Java/C# гаджет-цепочек с помощью CodeQL. Дополнительная информация в нашей статье

Установка

Клонируйте репозиторий:

root@kitploit:~
$ git clone https://github.com/synacktiv/QLinspector.git

Поиск гаджетов:

root@kitploit:~
$ codeql database analyze log4j --format=sarif-latest --output=log4j.sarif --search-path=./QLinspector/ synacktiv/qlinspector-java-queries

Запросы

QLinspector.ql

Основной CodeQL-запрос, который можно использовать для поиска гаджет-цепочек.

Вот пример с цепочкой гаджетов AspectJ:

aspectj

Выполнение приведённого выше запроса иногда может возвращать много ложных срабатываний. Чтобы их отфильтровать, был добавлен класс GadgetSanitizer. Вы можете добавлять условия для фильтрации :

DataFlow::Node
root@kitploit:~
/**
 * placeholder for adding sanitizing steps
*/
class GadgetSanitizer extends DataFlow::Node {
  GadgetSanitizer() {
    this.getEnclosingCallable().hasName("")
  }
}

QLinspectorOld.ql

Старый запрос, который был разработан изначально. Этот запрос не использует taint-модель CodeQL, поэтому он может возвращать другие результаты.

BeanFactoryGadgetFinder.ql

Запрос, который можно использовать для поиска новых гаджет-цепочек на основе org.apache.naming.factory.BeanFactory. Класс BeanFactory позволяет создать экземпляр произвольного класса с конструктором по умолчанию и вызывать любой публичный метод с одним параметром типа String.

Дополнительная информация в этом блог-посте: https://www.veracode.com/blog/research/exploiting-jndi-injections-java

CommonsBeanutilsGadgetFinder.ql

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

Дополнительная информация здесь:

  • https://www.praetorian.com/blog/relution-remote-code-execution-java-deserialization-vulnerability/
  • https://mogwailabs.de/en/blog/2023/04/look-mama-no-templatesimpl/

ObjectFactoryFinder.ql

Запрос, который можно использовать для поиска альтернатив org.apache.naming.factory.BeanFactory. Это может быть полезно при эксплуатации JNDI.

Дополнительная информация в этом блог-посте: https://www.veracode.com/blog/research/exploiting-jndi-injections-java

Ресурсы

  • https://www.synacktiv.com/publications/finding-gadgets-like-its-2015-part-1.html
  • https://www.synacktiv.com/publications/finding-gadgets-like-its-2015-part-2.html
  • https://www.synacktiv.com/publications/finding-gadgets-like-its-2022.html
  • https://www.synacktiv.com/publications/java-deserialization-tricks
  • https://www.praetorian.com/blog/relution-remote-code-execution-java-deserialization-vulnerability/
  • https://www.veracode.com/blog/research/exploiting-jndi-injections-java
  • https://mogwailabs.de/en/blog/2023/04/look-mama-no-templatesimpl/
  • https://testbnull.medium.com/return-of-the-rhino-analysis-of-mozillarhino-gadgetchain-also-the-writeup-of-hitb-linkextractor-a2074b4ae624
  • https://www.buaq.net/go-53869.html
  • https://b1ue.cn/archives/529.html
Скачать инструмент