Sploitus

Exploit for copy-fail-python

kitploit · 2026-08-27

Exploit Code

MARKDOWN55 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CYBER-JOKER-COPY-FAIL-PYTHON
# copyfail_su.py

Python-порт badsectorlabs/copyfail-go (CVE-2026-31431). Только для Linux; требуется Python 3.10+ (`os.splice`).

## Как это получает root (важно)

Этот инструмент **не** использует трюк с page-cache для `/etc/passwd`.

  * Он перезаписывает **page cache setuid-бинарника`su`** встроенным шеллкодом (те же payload'ы, что и в Go `main.go`), а затем **выполняет`su`**.
  * Повышение привилегий происходит за счёт запуска **повреждённого кэшированного образа** `su` как setuid-root программы, а не за счёт того, чтобы заставить `getpwnam()` думать, что ваш UID равен `0` через `/etc/passwd`.



Другие публичные Python-PoC для той же CVE могут патчить **`/etc/passwd`** в page cache и затем предлагать вам выполнить `su <user>`. Это **другой целевой файл и другой последующий шаг** , чем в этом скрипте.

## Использование

Только для авторизованного тестирования — используйте только на хостах, которыми вы владеете или на проверку которых у вас есть явное разрешение.

root@kitploit:~
    
    
    chmod +x copyfail_su.py
    
    # Поток в интерактивном стиле (та же идея, что и copyfail-go без --exec)
    ./copyfail_su.py --backup /tmp/su.bak
    
    # Запуск другой программы с повышенными привилегиями (передаёт путь как argv для su; использует payload exec-argv1)
    ./copyfail_su.py --backup /tmp/su.bak --exec /full/path/to/binary
    

После успешного запуска восстановите настоящий `su`.

## Восстановление без `--backup`

PoC повреждает **page cache** для `/usr/bin/su`. Не считайте файл на диске надёжным, пока не проверите его или не переустановите.

  1. **Переустановите пакет, которому принадлежит`/usr/bin/su`** (сначала найдите его, затем переустановите):

     * **Семейство RPM:** `rpm -qf /usr/bin/su`, затем `sudo dnf reinstall shadow-utils` (используйте имя пакета из вывода).
     * **Debian/Ubuntu:** `dpkg -S /usr/bin/su`, затем `sudo apt install --reinstall <package>`.
  2. **Проверка:** `sudo rpm -V <package>` на предмет неожиданных изменений в `/usr/bin/su`, или `debsums` в системах на базе Debian.

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

  4. **Если вы не можете переустановить от root:** загрузка в режиме восстановления, Live USB или замена `/usr/bin/su` из заведомо рабочего образа того же дистрибутива/версии/архитектуры; убедитесь, что владелец **`root:root`** и режим  ().




## Ссылки

  * copyfail-go
  * copy.fail