roHgoH для e6JLu c непонятным софтом

Discussion in 'Песочница' started by ckpunmkug, 29 Oct 2024.

  1. ckpunmkug

    ckpunmkug Member

    Joined:
    20 Mar 2017
    Messages:
    73
    Likes Received:
    72
    Reputations:
    10
    Лично я, использую debian на десктопе и иногда хочется пощупать то чего нет в репозитории, но ссыкотно. Как быть? Изолируем файловую систему с помощью chroot, а что бы прога не вылезла в сеть будем использовать ip netns.

    Докер или виртуальная машина - ламерский вариант ибо нет познания могущества ОСь. На VPS с 512 ОЗУ виртуалбокс не по поднимаешь. Короче, хакеры вникают, остальные мимо.

    Иногда есть желание покопаться в репозитариях kali, поэтому в качестве изолированной системы будем использовать её. А первым подопытным будет wso, потому что: "Куда без него, легендарного?".

    Поехали!
    Code:
    sudo bash
    mkdir /kali
    apt install debootstrap
    Начинаем установку и cпустя 10 секунд нажимаем Ctrl-C
    Code:
    debootstrap kali-rolling /kali http://http.kali.org/kali
    Видим надпись.
    Code:
    Cannot check Release signature; keyring file not available /usr/share/keyrings/kali-archive-keyring.gpg
    Вбиваем в утку site:kali.org kali-archive-keyring

    Переходим сюда https://http.kali.org/pool/main/k/kali-archive-keyring/ И видим ключики.

    Качаем.
    Code:
    wget -O /tmp/kali-archive-keyring_2024.1_all.deb https://http.kali.org/pool/main/k/kali-archive-keyring/kali-archive-keyring_2024.1_all.deb
    Ставим.
    Code:
    dpkg -i /tmp/kali-archive-keyring_2024.1_all.deb
    Запускаем ещё раз и cпустя 10 секунд нажимаем Ctrl-C
    Code:
    debootstrap kali-rolling /kali http://http.kali.org/kali
    Находим.
    Code:
    I: Valid Release signature (key id 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6)
    Теперь можно найти зеркало, что бы быстрее качало https://http.kali.org/README?mirrorlist

    Теперь едем до конца.
    Code:
    debootstrap kali-rolling /kali https://mirrors.dotsrc.org/kali/
    После того как Кали встала, следует подключить виртуальные файловые системы, что бы работа chroot была без глюков.

    Подключаем.
    Code:
    mount -B /dev /kali/dev
    mount -t devpts none /kali/dev/pts
    mount -t proc none /kali/proc
    mount -t sysfs none /kali/sys
    
    chroot /kali
    Дома!

    Code:
    apt update
    apt upgrade
    apt install screen vim git php-cli net-tools
    Создадим домашнюю директорию самому не привелигированному пользователю.
    Code:
    mkdir /nonexistent
    chown nobody:nogroup /nonexistent
    chmod 700 /nonexistent
    Становимся никем.
    Code:
    su -P -s /bin/sh -l nobody -c bash
    Теперь можно качать всякую дрянь с github
    Code:
    git clone https://github.com/MegaBedder/wsoshell.git
    Но воздержимся от запуска, вдруг в сеть полезет и как начнёт данные передавать, запилим сетевой изолятор.

    Выйдем в родительскую систему и создадим новое сетевое пространство.
    Code:
    ip netns add isolator
    Войдём в это сетевое пространство.
    Code:
    ip netns exec isolator chroot /kali screen
    Поглядим на сетевухи.
    Code:
    ifconfig -a
    Настроим loopback.
    Code:
    ifconfig lo up 127.0.0.1/24
    Становимся никем.
    Code:
    su -P -s /bin/sh -l nobody -c bash
    Запускаем wso.
    Code:
    php -S 127.0.0.1:8080 -t /nonexistent/wsoshell/
    Теперь надо как-то увидеть это. Для этого запустим браузер внутри изолятора с помощью скрипта.
    /usr/local/bin/isolated_firefox
    Code:
    #!/bin/sh
    FILE=`/usr/bin/realpath $0`
    UID=`/usr/bin/id -r -u`
    if test $UID -eq 0
    then
        export USER="${1}"
        export DISPLAY="${2}"
        export XAUTHORITY="${3}"
        export PROFILE_DIR="${4}"
        ip netns exec isolator su -s /bin/sh -w DISPLAY,XAUTHORITY -l ${USER} -c "firefox --profile ${PROFILE_DIR}"
    else
        PROFILE_DIR="${HOME}/.config/ilamp_firefox"
        if test ! -d ${PROFILE_DIR}
        then
            mkdir -p ${PROFILE_DIR}
        fi
        pkexec ${FILE} ${USER} ${DISPLAY} ${XAUTHORITY} ${PROFILE_DIR}
    fi
    Если в системе нету pkexec, то
    Code:
    apt install pkexec
    Запускаем скрипт из под обычного пользователя.
    Code:
    /usr/local/bin/isolated_firefox
    Переходим на http://127.0.0.1:8080/wso2.5.1.php и облом. Смотрим что BblcpaJL php.
    Code:
    [500]: GET /wso2.5.1.php - Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /nonexistent/wsoshell/wso2.5.1.php:20
    Stack trace:
    #0 {main}
      thrown in /nonexistent/wsoshell/wso2.5.1.php on line 20
    Ну что же e6JLR началась. Как пользоваться screen и vim учить не буду.

    Открываем исходник.
    Code:
    cd /nonexistent/wsoshell/
    cp wso2.5.1.php wso2.5.1.php.orig
    vim /nonexistent/wsoshell/wso2.5.1.php
    Ошибка говорит что вызывается не существующая функция. Закоментируем 20 строчку и посмотрим что дальше. На 23 таже фигня, повторяем только закоментируем весь if, смотрим. ХА! Всего делов.

    Для тех у кого не получилось.
    diff ./wso2.5.1.php.orig wso2.5.1.php
    Code:
    20c20
    < @set_magic_quotes_runtime(0);
    ---
    > #@set_magic_quotes_runtime(0);
    23c23
    < if(get_magic_quotes_gpc()) {
    ---
    > /*if(get_magic_quotes_gpc()) {
    29c29
    < }
    ---
    > }*/
    Осталось сделать так что бы изолятор запускался в автомате и было автоматическое монтирование виртуальных файловых систем.

    Запускать изолятор будет скрипт.
    /usr/local/sbin/isolator
    Code:
    #!/bin/sh
    
    start ()
    {
        /usr/bin/ip netns add isolator
        if test ${?} -ne 0
        then
            /usr/bin/logger -p user.err -t "isolator: can't create a new named network namespace"
            return 255
        fi
        /usr/bin/ip netns exec isolator /usr/sbin/ifconfig lo up 127.0.0.1/24
        if test ${?} -ne 0
        then
            /usr/bin/logger -p user.err -t "isolator: can't up loopback in named network namespace"
            return 255
        fi
        return 0
     
    }
    
    stop ()
    {
        /usr/bin/ip netns exec isolator /usr/sbin/ifconfig lo down
        if test ${?} -ne 0
        then
            /usr/bin/logger -p user.err -t "isolator: can't down loopback in named network namespace"
            return 255
        fi
        /usr/bin/ip netns delete isolator
        if test ${?} -ne 0
        then
            /usr/bin/logger -p user.err -t "isolator: can't delete named network namespace"
            return 255
        fi
        return 0
    }
    
    case "${1}" in
        start)
            start
            if test ${?} -ne 0
            then
                /usr/bin/logger -p user.err -t "isolator: can't start isolated network"
                exit 255
            else
                /usr/bin/systemd-notify --ready --status="isolated network creating complete"
                exit 0
            fi
            ;;
        stop)
            stop
            if test ${?} -ne 0
            then
                /usr/bin/logger -p user.err -t "isolator: can't correct stop isolated network"
                exit 255
            else
                /usr/bin/systemd-notify --ready --status="isolated network stoped"
                exit 0
            fi
            ;;
        *)
            /usr/bin/logger -p user.err -t "isolator: incorrect command line argument"
            exit 255
            ;;
    esac
    Пропишем запуск и остановку скрипта в systemd.
    /lib/systemd/system/isolator.service
    Code:
    [Unit]
    Description=Isolated network
    After=network.target
    
    [Service]
    Type=notify
    RemainAfterExit=yes
    ExecStart=/usr/local/sbin/isolator start
    ExecStop=/usr/local/sbin/isolator stop
    
    [Install]
    WantedBy=multi-user.target
    Активизируем запуск
    Code:
    systemctl enable isolator.service
    Пропишем монирование виртуальных файловых систем.
    /etc/fstab
    Code:
    /dev /kali/dev none defaults,bind 0 0
    devpts /kali/dev/pts devpts defaults 0 0
    proc /kali/proc proc defaults 0 0
    sysfs /kali/sys sysfs defaults 0 0
    Остались мелочи - удобный запуск.

    Удобный chroot.
    /usr/local/bin/netns
    Code:
    /usr/bin/ip netns exec isolator chroot /kali screen
    Code:
    chmod 755 /usr/local/bin/netns
    sudo netns
    Изолированный firefox в меню.
    /usr/share/applications/isolated_firefox.desktop
    Code:
    [Desktop Entry]
    Encoding=UTF-8
    Name=Isolated FireFox
    Exec=/usr/local/bin/isolated_firefox
    Icon=firefox-esr
    StartupNotify=true
    Terminal=false
    Type=Application
    Categories=Network;
    Game over!
     
    #1 ckpunmkug, 29 Oct 2024
    Last edited: 29 Oct 2024
    CyberTro1n and DartPhoenix like this.
  2. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,108
    Likes Received:
    8,490
    Reputations:
    25
    Chroot это если ты очень смелый и не боишься экспериментов над собцтвенной задницей :)
    В свое время было множество статей про побег из-под chroot. Вот так рандомно, например: https://www.stableit.blog/2013/08/chroot-chroot.html

    Если подопытный вздумает сопротивляться - может быть очень бо-бо. Если он использует уязвимости, мудрит с дровами, получает рута и прочее - chroot просто бесполезен.
    Какбэ да... для "нормального" софта - самое оно. Зачем городить виртуалку, если я вон щас тем же самым debootstrap из под арча получу Debian поиграться, поставлю заShitу и начну веселье.
    А можно же это еще делать в оперативке, чтоб оно летало как ненормальное ! :) Но это не полноценный rohgoh.

    ===========
    А так вообще - полезно, есессно :)
     
    CyberTro1n likes this.
  3. ckpunmkug

    ckpunmkug Member

    Joined:
    20 Mar 2017
    Messages:
    73
    Likes Received:
    72
    Reputations:
    10
    Побег из chroot имея root, таки да. Но здесь скрипт исполняется из под nobody.
    ЗЫ: Я слышал о случаях побега
    из VirtualBox https://www.exploit-db.com/exploits/45372
    из Docker https://www.exploit-db.com/exploits/47147
    А так что бы рута поднять на свежей системе надо зеродей иметь
    a Boo6LLLe roHgoH Ha cBo:EM xye He noMo]I[eT ecJLu Te6R 6e3 roHgoHa e6yT B ]I[ony
     
    #3 ckpunmkug, 29 Oct 2024
    Last edited: 29 Oct 2024
    CyberTro1n and DartPhoenix like this.
  4. A_n_d_r_e_i

    A_n_d_r_e_i Elder - Старейшина

    Joined:
    2 Sep 2009
    Messages:
    209
    Likes Received:
    279
    Reputations:
    32
    Маты запрещены.
     
  5. CyberTro1n

    CyberTro1n Elder - Старейшина

    Joined:
    20 Feb 2016
    Messages:
    1,075
    Likes Received:
    855
    Reputations:
    14
    Брысь!
     
    Spinus likes this.