Большинство моих друзей спрашивают меня, как Nessus может показать, что служба уязвима, если нет общедоступной PoC или эксплойта (например: ms16–047). Итак, я пишу эту статью, которая может помочь вам понять интересующую вас уязвимость.

В качестве примера ниже я выбираю раскрытие информации заголовка Etag в качестве примера. Как видите, Nessus может извлекать номер Inode и размер файла со значением Etag, я предполагаю, что вы не знаете, что такое Etag.

Вы можете найти файл nasl, используя команду locate и grep, как показано ниже. Путь к плагину по умолчанию будет /opt/nessus/lib/nessus/plugins/ . Вы можете найти большинство плагинов здесь. Вы также можете найти интересующий вас плагин.

После открытия файла заголовок Etag идентифицируется регулярным выражением. В строке 87 он подсчитывает max_index Etag после разделения. Если count равен 3 , скрипт nessus будет выполняться.

В строке 97 мы видим, что первая часть разделения (etag[0]) — это значение Inode, вторая часть — размер файла, а третья — Mtime, поэтому мы знаем, как вычисляется Etag. Inode и размер файла в шестнадцатеричном формате нам просто нужно перейти на десятичный на основе кода, который мы изучили.

В этой части показана логика расчета Mtime, но нас это не интересует.

Строка 169–179 выводит отображаемый результат.

Спасибо~ :D