Лаба по повышению привилегий в Linux
https://in.security/lin-security-practise-your-linux-privilege-escalation-foo/
#security #learning #thirdparty
https://in.security/lin-security-practise-your-linux-privilege-escalation-foo/
#security #learning #thirdparty
In.Security
Lin.security – practise your Linux privilege escalation foo
Have a go at our vulnerable Linux VM Lin.security, that provides mulitple ways to escalate privileges and get root.
Cleanup docker registry
Проверено для версии 2.6.2
1. добавить в конфиг registry эти строки и перезапустить:
2. получаем список тегов для репозитория и выбираем список на удаление
3. помечаем объекты на удаление через api
4. заходим внутрь контейнера и запускаем garbage-collector.
Итого наша задача - получить список тегов, выбрать нужные на удаление. На каждый тег получить sha256 манифеста (docker-content-digest в заголовке ответа), а затем пометить этот заголовок на удаление. К концу 3-го пункта никакие данные еще не удалены. Удаление происходит не вручную, а с помощью нативного сборщика мусора. согласно помеченным манифестам будут удалены выбранные теги.
#docker #registry
Проверено для версии 2.6.2
1. добавить в конфиг registry эти строки и перезапустить:
storage:
delete:
enabled: true
2. получаем список тегов для репозитория и выбираем список на удаление
curl -u <user>:<password> https://<registry_host>/v2/<repo_name>/tags/list
3. помечаем объекты на удаление через api
repo="REPO_PATH"
tag_list='TAG LIST separated by space'
user="USER"
pwd="PASSWORD"
registry_host="<registry_host>"
header="Accept: application/vnd.docker.distribution.manifest.v2+json"
for tag in ${tag_list}; do
digest=$(curl -I -u $user:$pwd -H "$header" "https://${registry_host}/v2/${repo}/manifests/${tag}" 2>/dev/null| awk '$1 == "docker-content-digest:" {print $2}'| tr -dc '[[:print:]]')
curl -XDELETE -u $user:$pwd -H "$header" "https://${registry_host}/v2/${repo}/manifests/${digest}"
done
4. заходим внутрь контейнера и запускаем garbage-collector.
registry garbage-collect /etc/docker/registry/config.yml
Итого наша задача - получить список тегов, выбрать нужные на удаление. На каждый тег получить sha256 манифеста (docker-content-digest в заголовке ответа), а затем пометить этот заголовок на удаление. К концу 3-го пункта никакие данные еще не удалены. Удаление происходит не вручную, а с помощью нативного сборщика мусора. согласно помеченным манифестам будут удалены выбранные теги.
#docker #registry
Curl resolve w\o dns
Иногда нужно протестировать какой-то домен здесь и сейчас (особенно когда он работает через прокси и\или https), лезть при этом делать dns неохото, прописывать в hosts - тоже долго, поскольку это можно сделать не отходя далеко от курла:
Иногда нужно протестировать какой-то домен здесь и сейчас (особенно когда он работает через прокси и\или https), лезть при этом делать dns неохото, прописывать в hosts - тоже долго, поскольку это можно сделать не отходя далеко от курла:
curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/#curl
.bashrc vs .bash_profile
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
Смотрим какое правило маршрутизации применится к ip адресу
ip r g x.x.x.x
Forwarded from GitHub'ненько
This media is not supported in your browser
VIEW IN TELEGRAM
A fully-modern text-based browser, rendering to TTY and browsers
#terminal
https://github.com/browsh-org/browsh
#terminal
https://github.com/browsh-org/browsh
wheezy to stretch update
При изменение репоса wheezy -> stretch и выполнении команды
Поможет доустановка пакетов:
#troubleshooting
При изменение репоса wheezy -> stretch и выполнении команды
apt-get update
может вылезти ошибка связанная с отсутствием ключей.W: There is no public key available for the following key IDs:
Поможет доустановка пакетов:
apt-get install debian-keyring debian-archive-keyring
#troubleshooting
Включаем coredump для ОС c systemd на борту
1. ставим пакет для управления - systemd-coredump
2. разрешаем дампить coredump процессам:
в файле /etc/systemd/system.conf правим
3. опционально разрешаем это для root:
в файле /etc/security/limits.d/core.conf
4. задаем поведение для демона, создающего дампы:
в файле /etc/sysctl.d/coredumps.conf
5. применение:
6. проверка:
в /var/lib/coredumps (или /var/tmp по-умолчанию) создастся coredump.
З.Ы. без каких либо настроек после установки пакета можно сразу управлять дампами через команду
#troubleshooting #coredump
1. ставим пакет для управления - systemd-coredump
2. разрешаем дампить coredump процессам:
в файле /etc/systemd/system.conf правим
DefaultLimitCORE=infinity
3. опционально разрешаем это для root:
в файле /etc/security/limits.d/core.conf
root hard core unlimited
root soft core unlimited
4. задаем поведение для демона, создающего дампы:
в файле /etc/sysctl.d/coredumps.conf
kernel.core_pattern = /var/lib/coredumps/core-%e-sig%s-user%u-group%g-pid%p-time%t
kernel.core_uses_pid = 1
fs.suid_dumpable = 2
5. применение:
systemctl daemon-reexec
или reboot
6. проверка:
kill -11 <PID>
в /var/lib/coredumps (или /var/tmp по-умолчанию) создастся coredump.
З.Ы. без каких либо настроек после установки пакета можно сразу управлять дампами через команду
coredumpctl list
и coredumpctl dump
#troubleshooting #coredump
перезапуск гнома
alt+F2 -> ввести букву r -> нажать enter
Окна при этом не будут закрыты. Аналог команды для терминала:
#troubleshooting
alt+F2 -> ввести букву r -> нажать enter
Окна при этом не будут закрыты. Аналог команды для терминала:
gnome-shell --replace
#troubleshooting
Forwarded from Кавычка (Bo0oM)
При внедрении собственных шаблонов в серверные шаблонизаторы (уязвимость SSTI) — эксплуатацию можно автоматизировать с помощью утилиты tplmap. Она и шаблонизатор подберет, и удобный шелл откроет для выполнения произвольного кода. Еще и плагин к Burp Suite имеет.
https://github.com/epinna/tplmap
https://github.com/epinna/tplmap
GitHub
GitHub - epinna/tplmap: Server-Side Template Injection and Code Injection Detection and Exploitation Tool
Server-Side Template Injection and Code Injection Detection and Exploitation Tool - epinna/tplmap
Kubernetes 1.10.x -> 1.11.x
Грабли! Грабли! Грабли! куда же без них...
Традиционно выкладываю свой опыт обновления тестового кластера на новую мажорную версию. Итак, прежде чем обновляться, читаем:
Тыц: https://github.com/kubernetes/kubernetes/issues/65863
и Тыц: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md
#kubernetes #troubleshooting
Грабли! Грабли! Грабли! куда же без них...
Традиционно выкладываю свой опыт обновления тестового кластера на новую мажорную версию. Итак, прежде чем обновляться, читаем:
Тыц: https://github.com/kubernetes/kubernetes/issues/65863
и Тыц: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md
#kubernetes #troubleshooting
GitHub
failed to load Kubelet config file /var/lib/kubelet/config.yaml after kubelet update · Issue #65863 · kubernetes/kubernetes
Is this a BUG REPORT or FEATURE REQUEST?: Uncomment only one, leave it on its own line: /kind bug What happened: /var/lib/kubelet/config.yaml got removed after kubelet update. What you expected to ...
Интересно, этот кусок говна, вообще способен нормально обновляться между мажорными версиями, а не ломать все нахер?...
Сегодня праздник у девчат, сегодня будут танцы
Поговаривают, что сегодня день благодарности системному администратору. Чувствуете радость? Веселье? Поверните голову налево - кивните челяди. Поверните направо - оцените с прищуром гору подарков. Осторожно! От такого головокружения можно свалиться с трона. Так себе сказка, правда? И оборудование в сказки не верит. И софт. И пользователи. Да и админы уже пошли не те. Стереотипные люди, которых узнавали по пиву и свитеру уже канули в историю. Сейчас то некоторые и звук модема не узнают и шлейф к 3,5" IDE диску не присоединят. Технологии довольно-таки сильно шагнули вперед. Появилось больше абстракций - надстроек над управлением системами, которые позволяют даже домохозяйкам думать что они - сисадмины. Но, остановись на секунду, и вот уже ты того и гляди станешь домохозяйкой, если не будешь постоянно и постоянно что-то изучать. Знания, которые у тебя были 5 лет назад на 30% уже сейчас не нужны. И вот уже вчерашний студент, который не тратил время на изучение ненужного сейчас материала начинает знать в каких-то областях уже больше тебя. IT одна из самых быстроразвивающихся отраслей и в ней постоянно нужно учиться и быть в тонусе. И хоть сегодня обычный день, я все равно рад за то что есть такие люди, которые не боятся и кабель проложить и конденсатор перепаять и модуль написать к любимому приложению. С праздником вас, всех заинтересованных в технологиях, с днем системного администратора!
#sysadminsday
Поговаривают, что сегодня день благодарности системному администратору. Чувствуете радость? Веселье? Поверните голову налево - кивните челяди. Поверните направо - оцените с прищуром гору подарков. Осторожно! От такого головокружения можно свалиться с трона. Так себе сказка, правда? И оборудование в сказки не верит. И софт. И пользователи. Да и админы уже пошли не те. Стереотипные люди, которых узнавали по пиву и свитеру уже канули в историю. Сейчас то некоторые и звук модема не узнают и шлейф к 3,5" IDE диску не присоединят. Технологии довольно-таки сильно шагнули вперед. Появилось больше абстракций - надстроек над управлением системами, которые позволяют даже домохозяйкам думать что они - сисадмины. Но, остановись на секунду, и вот уже ты того и гляди станешь домохозяйкой, если не будешь постоянно и постоянно что-то изучать. Знания, которые у тебя были 5 лет назад на 30% уже сейчас не нужны. И вот уже вчерашний студент, который не тратил время на изучение ненужного сейчас материала начинает знать в каких-то областях уже больше тебя. IT одна из самых быстроразвивающихся отраслей и в ней постоянно нужно учиться и быть в тонусе. И хоть сегодня обычный день, я все равно рад за то что есть такие люди, которые не боятся и кабель проложить и конденсатор перепаять и модуль написать к любимому приложению. С праздником вас, всех заинтересованных в технологиях, с днем системного администратора!
#sysadminsday
Получаем информацию о смонтированных rbd на нодах куба
Запускать на ноде куба. Этот скрипт полезен, если у вас дохлый мастер, иначе все это куда проще достается из апишки.
Результат:
т.е. отсюда можно узнать какому конкретно контейнеру какой конкретно image соответствует. Это полезно когда у вас динамический контроллер и сдохший мастер - чтобы забрать данные с запущенных подов.
#ceph #kubernetes #troubleshooting
Запускать на ноде куба. Этот скрипт полезен, если у вас дохлый мастер, иначе все это куда проще достается из апишки.
#!/bin/bash
IFS=$'\n'
for i in $(docker ps); do
ID=$(echo $i | awk '{print $1}');
for j in $(docker inspect $ID | grep "volumes/kubernetes.io~rbd"|grep -v "Source"); do
NAME=$(docker inspect $ID | grep "Hostname\"")
external_mpath=$(echo $j | awk -F\: '{print $1}' | grep -o '/var/lib.*')
internal_mpath=$(echo $j | awk -F\: '{print $2}')
rbd=$(mount | grep $external_mpath | awk '{print $1}')
dnumber=$(echo $rbd | egrep -o "[0-9]+")
image=$(cat /sys/bus/rbd/devices/${dnumber}/name)
echo ""
echo "name: $NAME"
echo "rbd: $rbd"
echo "mount path: $internal_mpath"
echo "image: $image"
done
done
Результат:
name: "Hostname": "mongodb-database-865cfb8d6f-lgfnl",
rbd: /dev/rbd8
mount path: /data/db",
image: kubernetes-dynamic-pvc-af3f3636-635d-11e8-9801-0a580af4013f
т.е. отсюда можно узнать какому конкретно контейнеру какой конкретно image соответствует. Это полезно когда у вас динамический контроллер и сдохший мастер - чтобы забрать данные с запущенных подов.
#ceph #kubernetes #troubleshooting
apt update error
Ошибка:
#troubleshooting #apt
Ошибка:
Err:1 http://archive.ubuntu.com/ubuntu xenial InReleaseНа самом деле проблема не о том, о чём написано в ошибке - проблема в записи в директорию /tmp.
Couldn't create tempfiles for splitting up /var/lib/apt/lists/partial/archive.ubuntu.com_ubuntu_dists_xenial_InRelease
Could not execute 'apt-key' to verify signature (is gnupg installed?)
#troubleshooting #apt
GIT отделить ветку в отдельный репозиторий
вариант 1:
вариант 2:
#git
вариант 1:
git push url://to/new/repository.git branch-to-move:new-branch-name
вариант 2:
git clone -b newbranch CurrentRepo NewRepo
#git
Forwarded from mindsellers
Полноценное логирование действий пользователей в консоли
Все, конечно, знают о ~/.bash_history. Равно как и о том, что его нужно за собой чистить, особенно, если занимаешься на чужой системе чем-то интересным. Недавно мне стало интересно, как же хранить реальные логи действий, да желательно с привязкой к тому, кто реально хулиганил на системе(мало ли, у кого гипотетически есть sudo) и ко времени.
В интернетах наткнулся на проект snoopy logger. Потестил, и выяснил, что штука вполне неплохая, лог пишет исправно, ставится или скриптами от разработчиков или из репозиториев (в Убунтовских есть).
Не вижу смысла в дальнейших подробностях - заходим и ставим!
https://github.com/a2o/snoopy
#linux #bash
Все, конечно, знают о ~/.bash_history. Равно как и о том, что его нужно за собой чистить, особенно, если занимаешься на чужой системе чем-то интересным. Недавно мне стало интересно, как же хранить реальные логи действий, да желательно с привязкой к тому, кто реально хулиганил на системе(мало ли, у кого гипотетически есть sudo) и ко времени.
В интернетах наткнулся на проект snoopy logger. Потестил, и выяснил, что штука вполне неплохая, лог пишет исправно, ставится или скриптами от разработчиков или из репозиториев (в Убунтовских есть).
Не вижу смысла в дальнейших подробностях - заходим и ставим!
https://github.com/a2o/snoopy
#linux #bash
GitHub
GitHub - a2o/snoopy: Snoopy Command Logger is a small library that logs all program executions on your Linux/BSD system.
Snoopy Command Logger is a small library that logs all program executions on your Linux/BSD system. - a2o/snoopy
В добавление к предыдущему посту от @CatSchrodinger
>>>>
Касательно snoopy - часто используют auditd и для логирования команд лайна пользователя нужно в /etc/audit/audit.rules добавить строку: -a exit,always -F arch=b64 -S execve
Правда, будут проблемы с логированием последовательного/каскадного выполнения команд - выполнение каждой команды запишется отдельной строкой в лог.
>>>>
Касательно snoopy - часто используют auditd и для логирования команд лайна пользователя нужно в /etc/audit/audit.rules добавить строку: -a exit,always -F arch=b64 -S execve
Правда, будут проблемы с логированием последовательного/каскадного выполнения команд - выполнение каждой команды запишется отдельной строкой в лог.
mouse3 и буфер обмена в linux
Довольно-таки удобно в linux использовать второй буфер обмена. Чтобы им воспользоваться достаточно нужный текст всего-навсего выделить. чтобы вставить текст куда-либо - нужно нажать на колесико или приложить к тачпаду 3 пальца. также к сожалению не все пользуются выделением "слова" по двойному клику. Например в консоли, чтобы выделить и скопировать какое-то слово достаточно просто дважды кликнуть по нему. а затем вставить в нужное местос помощью mouse3 (колесико или 3 пальца).
В данном контексте слово - набор символов отделенное с обоих сторон пробелами.
Итого:
Выделить: дважды кликнуть по слову mouse1 (или тапнуть два раза по тачбару одним пальцем)
Скопировать:
1й буфер обмена: то что выделено - уже находится в нем
2й буфер обмена: ctrl+c | shift+ctlr+c (в терминале) / пкм - скопировать
Вставить:
1й буфер обмена: mouse3 | тап 3 пальцами по тач паду
2й буфер обмена: ctrl+v | shift+ctlr+v (в терминале) / пкм - вставить
Не единичны случаи когда нужно скопировать несколько вещей. тогда один блок вы выделяете и копируете как обычно, а второй - выделяете и... все. он уже в буфере обмена.
З.Ы. порядок занесения текста в буфер обмена важен! сначала выделить - ctrl+c (по сути здесь текст находится уже в двух буферах обмена!) потом просто выдлить текст для помещения его во второй буфер обмена.
З.З.Ы. эта фишка со вторым буфером обмена по mouse3 работает везде, а не только в терминале.
И на сладкое. Не все знают, что также по mouse3 можно в браузере открывать ссылки в новом окне. типа не обязательно каждый раз по ней кликать пкм - открыть в новом окне. mouse3 делает это за вас.
#usefulls
Довольно-таки удобно в linux использовать второй буфер обмена. Чтобы им воспользоваться достаточно нужный текст всего-навсего выделить. чтобы вставить текст куда-либо - нужно нажать на колесико или приложить к тачпаду 3 пальца. также к сожалению не все пользуются выделением "слова" по двойному клику. Например в консоли, чтобы выделить и скопировать какое-то слово достаточно просто дважды кликнуть по нему. а затем вставить в нужное местос помощью mouse3 (колесико или 3 пальца).
В данном контексте слово - набор символов отделенное с обоих сторон пробелами.
Итого:
Выделить: дважды кликнуть по слову mouse1 (или тапнуть два раза по тачбару одним пальцем)
Скопировать:
1й буфер обмена: то что выделено - уже находится в нем
2й буфер обмена: ctrl+c | shift+ctlr+c (в терминале) / пкм - скопировать
Вставить:
1й буфер обмена: mouse3 | тап 3 пальцами по тач паду
2й буфер обмена: ctrl+v | shift+ctlr+v (в терминале) / пкм - вставить
Не единичны случаи когда нужно скопировать несколько вещей. тогда один блок вы выделяете и копируете как обычно, а второй - выделяете и... все. он уже в буфере обмена.
З.Ы. порядок занесения текста в буфер обмена важен! сначала выделить - ctrl+c (по сути здесь текст находится уже в двух буферах обмена!) потом просто выдлить текст для помещения его во второй буфер обмена.
З.З.Ы. эта фишка со вторым буфером обмена по mouse3 работает везде, а не только в терминале.
И на сладкое. Не все знают, что также по mouse3 можно в браузере открывать ссылки в новом окне. типа не обязательно каждый раз по ней кликать пкм - открыть в новом окне. mouse3 делает это за вас.
#usefulls
bash использование grep как условия для if
хотелось бы составить такую конструкцию:
Проблема в том, что grep выдает на stdout строку, которую он нашел. и тогда на if подается набор каких-то отфильтрованных символов. шо бы таки этого избежать, можно просто использовать с грепом ключ --quiet. тогда if реагирует на код возврата - нашел - не нашел - true & false. как раз то что нужно для условия.
#bash_tips_and_tricks
хотелось бы составить такую конструкцию:
если бла-бла-бла (вывод) | grep <expression> то выполнить <cmd>
Проблема в том, что grep выдает на stdout строку, которую он нашел. и тогда на if подается набор каких-то отфильтрованных символов. шо бы таки этого избежать, можно просто использовать с грепом ключ --quiet. тогда if реагирует на код возврата - нашел - не нашел - true & false. как раз то что нужно для условия.
#bash_tips_and_tricks
Подстава с centos:6 и docker
https://github.com/CentOS/sig-cloud-instance-images/issues/103
В итоге bash запустить там не удастся.
https://github.com/CentOS/sig-cloud-instance-images/issues/103
В итоге bash запустить там не удастся.
GitHub
centos:6 image segfaults on newer Linux kernels with Spectre V1 mitigation · Issue #103 · CentOS/sig-cloud-instance-images
Running a docker run --rm -it centos:6 bash fails with exit status 139 (i.e. bash exits with SIGSEGV) on Linux kernel 4.15.9. Downgrading to 4.14.15 (which is vulnerable to Spectre V1) gets rid of ...