hacktricks/pentesting/pentesting-web/README.md

392 lines
26 KiB
Markdown
Raw Normal View History

# 80,443 - Pentesting Web Methodology
2020-09-26 15:31:26 +00:00
If you want to **know** about my **latest modifications**/**additions** or you have **any suggestion for HackTricks or PEASS**, ****join the [💬](https://emojipedia.org/speech-balloon/) ****[**PEASS & HackTricks telegram group here**](https://t.me/peass), or **follow me on Twitter** [🐦](https://emojipedia.org/bird/)[**@carlospolopm**](https://twitter.com/carlospolopm)**.**
2020-08-17 08:33:42 +00:00
If you want to **share some tricks with the community** you can also submit **pull requests** to ****[**https://github.com/carlospolop/hacktricks**](https://github.com/carlospolop/hacktricks) ****that will be reflected in this book.
Don't forget to **give ⭐ on the github** to motivate me to continue developing this book.
## Basic Info
The web service is the most **common and extensive service** and a lot of **different types of vulnerabilities** exists.
**Default port:** 80 \(HTTP\), 443\(HTTPS\)
```bash
PORT STATE SERVICE
80/tcp open http
443/tcp open ssl/https
```
```bash
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
```
## Methodology summary
> In this methodology we are going to suppose that you are going to a attack a domain \(or subdomain\) and only that. So, you should apply this methodology to each discovered domain, subdomain or IP with undetermined web server inside the scope.
* [ ] Start by **identifying** the **technologies** used by the web server. Look for **tricks** to keep in mind during the rest of the test if you can successfully identify the tech.
* [ ] Any **known vulnerability** of the version of the technology?
* [ ] Using any **well known tech**? Any **useful trick** to extract more information?
* [ ] Any **specialised scanner** to run \(like wpscan\)?
* [ ] Any **vulnerable cookie**? **JWT**?
* [ ] Check for **vulnerable proxies** being used \(_Test this in every new tech discovered in the webapp_\) :
* [ ] **hop-by-hop headers**
* [ ] **Request Smuggling**
* [ ] **Cache Poisoning/Cache Deception**
* [ ] Launch **general purposes scanners**. You never know if they are going to find something or if the are going to find some interesting information.
* [ ] Start with the **initial checks**: **robots**, **sitemap**, **404** error and **SSL/TLS scan** \(if HTTPS\).
* [ ] Start **spidering** the web page: It's time to **find** all the possible **files, folders** and **parameters being used.** Also, check for **special findings**.
* [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be spidered._
* [ ] **Directory Brute-Forcing**: Try to brute force all the discovered folders searching for new **files** and **directories**.
* [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._
* [ ] **Backups checking**: Test if you can find **backups** of **discovered files** appending common backup extensions.
* [ ] **Brute-Force parameters**: Try to **find hidden parameters**.
* [ ] Once you have **identified** all the possible **endpoints** accepting **user input**, check for all kind of **vulnerabilities** related to it.
* [ ] This is by far the **most complex part of pentesting web**, and **depending** of the **vulnerability** the pentester should know how to **discover** it. In **this book** you can find **explained** a lot of **web vulnerabilities** related to user input.
## Server Version \(Vulnerable?\)
### Identify
Check if there are **known vulnerabilities** for the server **version** that is running.
The **HTTP headers and cookies of the response** could be very useful to **identify** the **technologies** and/or **version** being used. **Nmap scan** can identify the server version, but it could also be useful the tools [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)or [**https://builtwith.com/**](https://builtwith.com/)**:**
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
```
Search ****for ****[**vulnerabilities of the web application** **version**](../../search-exploits.md)\*\*\*\*
2020-12-12 09:50:37 +00:00
**Check if any WAF**
* \*\*\*\*[**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)\*\*\*\*
* \*\*\*\*[**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)\*\*\*\*
* \*\*\*\*[**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)\*\*\*\*
### **Cookies**
As commented the cookies can be very useful to identify the technology in used \(if well known\) but if the used **cookies** are **custom**, they could be **vulnerable**. So if you find a **custom sensitive** cookie you should [**check it for vulnerabilities**](../../pentesting-web/hacking-with-cookies.md#hacking-cookies).
Also, the [**flags of the cookies**](../../pentesting-web/hacking-with-cookies.md#cookies-flags) can also be interesting from a security point of view.
### Web tech tricks
Some **tricks** for **finding vulnerabilities** in different well known **technologies** being used:
* [**IIS tricks**](iis-internet-information-services.md)\*\*\*\*
* [**PHP \(php has a lot of interesting tricks that could be exploited\)**](php-tricks-esp/)\*\*\*\*
* \*\*\*\*[**Nginx**](nginx.md)\*\*\*\*
* \*\*\*\*[**Python**](python.md)\*\*\*\*
* \*\*\*\*[**Flask**](flask.md)\*\*\*\*
* \*\*\*\*[**WebDav**](put-method-webdav.md)\*\*\*\*
* \*\*\*\*[**CGI**](cgi.md)\*\*\*\*
* [**Tomcat**](tomcat.md)\*\*\*\*
* \*\*\*\*[**Jenkins**](jenkins.md)\*\*\*\*
* \*\*\*\*[**JBOSS**](jboss.md)\*\*\*\*
* \*\*\*\*[**JIRA**](jira.md)
* [**JSP**](jsp.md)\*\*\*\*
* \*\*\*\*[**Wordpress**](wordpress.md)\*\*\*\*
* \*\*\*\*[**Drupal**](drupal.md)\*\*\*\*
* \*\*\*\*[**VMWare \(EXS, VCenter...\)**](vmware-esx-vcenter....md)\*\*\*\*
* \*\*\*\*[**GraphQL**](graphql.md)\*\*\*\*
2021-02-10 13:49:28 +00:00
If the **source code** of the application is available in **github**, apart of performing by **your own a White box test** of the application \(no guide available yet in hacktricks\) there is **some information** that could be **useful** for the current **Black-Box testing**:
* Is there a **Changelog or Readme or Version** file or anything with **version info accesible** via web?
* How and where are saved the **credentials**? Is there any \(accesible?\) **file** with credentials \(usernames or passwords\)?
* Are **passwords** in **plain text**, **encrypted** or which **hashing algorithm** is used?
* Is it using any **master key** for encrypting something? Which **algorithm** is used?
* Can you **access any of these files** exploiting some vulnerability?
* Is there any **interesting information in the github** \(solved and not solved\) **issues**? Or in **commit history** \(maybe some **password introduced inside an old commit**\)?
_Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._
If the web application is using any well known **tech/platform listed before** or **any other**, don't forget to **search on the Internet** new tricks \(and let me know!\).
## Proxies/Load balances vulnerabilities
You should look for these kind of vulnerabilities every time you find a **path** were a **different technology** is **running**. For example, if you find a **java** webapp and in `/wordpress` a **wordpress** is running.
* [**Abusing hop-by-hop headers**](../../pentesting-web/abusing-hop-by-hop-headers.md)\*\*\*\*
* \*\*\*\*[**Request Smuggling**](../../pentesting-web/http-request-smuggling.md)\*\*\*\*
* \*\*\*\*[**Cache Poisoning / Cache Deception**](../../pentesting-web/cache-deception.md)\*\*\*\*
2020-12-08 12:26:16 +00:00
* \*\*\*\*[**Uncovering CloudFlare**](uncovering-cloudflare.md)\*\*\*\*
## Automatic scanners
### General purpose automatic scanners
```bash
nikto -h <URL>
whatweb -a 4 <URL>
wapiti -u <URL>
W3af
```
### CMS scanners
If a CMS is used don't forget to **run a scanner**, maybe something juicy is found:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** websites for Security issues. \(GUI\)
[**VulnX**](https://github.com/anouarbensaad/vulnx)**: Joomla,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart
CMSMap**: [**\(W\)ordpress**](wordpress.md)**, \(J\)oomla,** [**\(D\)rupal**](drupal.md) **or \(M\)oodle**
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**, Joomla, Moodle, Silverstripe,** [**Wordpress**](wordpress.md)\*\*\*\*
```bash
cmsmap [-f W] -F -d <URL>
wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> At this point you should already have some information of the web server being used by the client \(if any data is given\) and some tricks to keep in mind during the test. If you are lucky you have even found a CMS and run some scanner.
## Step-by-step Web Application testing
> From this point we are going to start interacting with the web application.
### Initial checks
#### Default pages with interesting info:
* /robots.txt
* /sitemap.xml
* Some _404_ error - _Some interesting data could be presented here._
#### Check if you can upload files \([PUT verb, WebDav](put-method-webdav.md)\)
If you find that **WebDav** is **enabled** but you don't have enough permissions for **uploading files** in the root folder try to:
* **Brute Force** credentials
* **Upload files** via WebDav to the **rest** of **found folders** inside the web page. You may have permissions to upload files in other folders.
#### SSL/TLS vulnerabilites
Use [**testssl.sh**](https://github.com/drwetter/testssl.sh) to checks for **vulnerabilities** \(In Bug Bounty programs probably these kind of vulnerabilities won't be accepted\) and use [**a2sv** ](https://github.com/hahwul/a2sv)to recheck the vulnerabilities:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
## You can also use other tools, by testssl.sh at this momment is the best one (I think)
sslscan <host:port>
sslyze --regular <ip:port>
```
Information about SSL/TLS vulnerabilities:
* [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
* [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
### Spidering
2021-02-10 00:47:36 +00:00
Launch some kind of **spider** inside the web. The goal of the spider is to **find as much paths as possible** from the tested application. Therefore, web crawling and external sources should be used to find as much valid paths as possible.
* [**gospider**](https://github.com/jaeles-project/gospider) ****\(go\): ****HTML spider, LinkFinder in JS files and external sources \(Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com\).
* [**hakrawler**](https://github.com/hakluke/hakrawler) ****\(go\): HML spider, with LinkFider for JS files and Archive.org as external source.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) ****\(python\): HTML spider, also indicates "juicy files".
* [**evine** ](https://github.com/saeeddhqan/evine)\(go\): Interactive CLI HTML spider. It also searches in Archive.org
* \*\*\*\*[**meg**](https://github.com/tomnomnom/meg) \(go\): This tool isn't a spider but it can be useful. You can just indicate a file with hosts and a file with paths and meg will fetch each path on each host and save the response.
* \*\*\*\*[**urlgrab**](https://github.com/IAmStoxe/urlgrab) \(go\): HTML spider with JS rendering capabilities. However, it looks like it's unmaintained, the precompiled version is old and the current code doesn't compile
* [**gau**](https://github.com/lc/gau) ****\(go\): HTML spider that uses external providers \(wayback, otx, commoncrawl\)
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): This script will find URLs with parameter and will list them.
* \*\*\*\*[**galer**](https://github.com/dwisiswant0/galer) \(go\): HTML spider with JS rendering capabilities.
### Brute Force directories and files
Start **brute-forcing** from the root folder and be sure to brute-force **all** the **directories found** using **this method** and all the directories **discovered** by the **Spidering** \(you can do this brute-forcing **recursively** and appending at the beginning of the used wordlist the names of the found directories\).
Tools:
2021-02-10 00:47:36 +00:00
* **Dirb** / **Dirbuster** - Included in Kali, **old** \(and **slow**\) but functional. Allow auto-signed certificates and recursive search. Too slow compared with th other options.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) ****\(python\): It doesn't allow auto-signed certificates but **allows recursive** search.
* [**Gobuster**](https://github.com/OJ/gobuster) \(go\): It allows auto-signed certificates, it **doesn't** have **recursive** search.
2020-11-05 09:09:36 +00:00
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.**
2021-02-10 13:49:28 +00:00
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
2020-11-05 09:09:36 +00:00
* [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
**Recommended dictionaries:**
* \*\*\*\*[https://github.com/danielmiessler/RobotsDisallowed](https://github.com/danielmiessler/RobotsDisallowed) \(Very interesting\)
2021-02-10 13:49:28 +00:00
* [**Seclists**](https://github.com/danielmiessler/SecLists)
2021-02-10 00:47:36 +00:00
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) ****included dictionary
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
2021-02-10 00:47:36 +00:00
* [Assetnote wordlists](https://wordlists.assetnote.io/)
* _/usr/share/wordlists/dirb/common.txt_
* _/usr/share/wordlists/dirb/big.txt_
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._
2021-02-10 00:47:36 +00:00
### What to check on each file found
2021-02-10 00:47:36 +00:00
* \*\*\*\*[**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Find broken links inside HTMLs that may be prone to takeovers
* **File Backups**: Once you have found all the files, look for backups of all the executable files \("_.php_", "_.aspx_"...\). Common variations for naming a backup are: _file.ext~, \#file.ext\#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old_
* **Discover new parameters**: You can use tools like ****[**Arjun**](https://github.com/s0md3v/Arjun) **and** [**Parameth**](https://github.com/maK-/parameth) to discover hidden parameters. If you can, you could try to search **hidden parameters** on each executable web file.
* **Comments:** Check the comments of all the files, you can find **credentials** or **hidden functionality**.
* If you are playing **CTF**, a "common" trick is to **hide** **information** inside comments at the **right** of the **page** \(using **hundreds** of **spaces** so you don't see the data if you open the source code with the browser\). Other possibility is to use **several new lines** and **hide information** in a comment at the **bottom** of the web page.
* **API keys**: If you **find any API key** there is guide that indicates how to use API keys of different platforms: ****[**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/dxa4481/truffleHog/)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex)\*\*\*\*
* **S3 Buckets**: While spidering look if any **subdomain** or any **link** is related with some **S3 bucket**. In that case, [**check** the **permissions** of the bucket](buckets/).
### Special findings
**While** performing the **spidering** and **brute-forcing** you could find **interesting** **things** that you have to **notice**.
#### **Interesting files**
* Look for **links** to other files inside the **CSS** files.
* [If you find a _**.git**_ file some information can be extracted](git.md)
* If you find **API endpoints** you [should also test them](api-pentesting.md). These aren't files, but will probably "look like" them.
#### JS code
The **JS code** of a web application can be really interesting: It could contain **API keys**, **credentials**, other **endpoints**, and understanding it you could be able to **bypass security measures**.
It could be also very useful to **parse** the **JS files** in order to search for other **endpoints:** [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder)**,** [**JSScanner**](https://github.com/dark-warlord14/JSScanner) **\(wrap of LinkFinder\),** [**JSParser**](https://github.com/nahamsec/JSParser)**,** [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor)**.**
2020-07-20 08:44:17 +00:00
Another interesting approach could be **monitoring the JS files** with a tool like [**JSMon**](https://github.com/robre/jsmon) that checks for changes.
You should also **check** if the application is using any **outdated** and **vulnerable javascript library** with: [**RetireJS**](https://github.com/retirejs/retire.js/)\*\*\*\*
If the **javascript** code is **obfuscated**, these tools could be useful:
* **Javascript Deobfuscator and Unpacker** \([https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/)\)
* **Javascript Beautifier** \([http://jsbeautifier.org/](https://beautifier.io/)\)
* **BrainFuck deobfuscation** \(javascript with chars:"\[\]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/)\)
In several occasions you will need to **understand regular expressions** used, this will be useful: [https://regex101.com/](https://regex101.com/)
#### 403 Forbidden/Basic Authentication/401 Unauthorized \(bypass\)
* Try using **different verbs** to access the file: _GET, POST, INVENTED_
* If _/path_ is blocked, try using _**/**_**%2e/**path __\(if the access is blocked by a proxy, this could bypass the protection\). Try also _/**%252e**/path_ \(double URL encode\)
* Try Unicode bypass: _/**%ef%bc%8f**path_ \(The URL encoded chars are like "/"\) so when encoded back it will be _//path_ and maybe you will have already bypassed the _/path_ name check
2020-10-16 10:36:07 +00:00
* Try to **stress the server** sending common GET requests \([It worked for this guy wit Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)\).
2020-11-10 09:06:44 +00:00
* **Change the protocol**: from http to https, or for https to http
2020-12-15 09:13:49 +00:00
* **Change Host header** to some arbitrary value \([that worked here](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)\)
2020-08-25 08:38:04 +00:00
* **Other path bypasses**:
* site.com/secret &gt; HTTP 403 Forbidden
2020-09-21 10:07:08 +00:00
* site.com/SECRET &gt; HTTP 200 OK
2020-08-25 08:38:04 +00:00
* site.com/secret/ &gt; HTTP 200 OK
* site.com/secret/. &gt; HTTP 200 OK
* site.com//secret// &gt; HTTP 200 OK
* site.com/./secret/.. &gt; HTTP 200 OK
2020-09-21 10:07:08 +00:00
* site.com/secret.json &gt; HTTP 200 OK \(ruby\)
* **Other bypasses:**
* /v3/users\_data/1234 --&gt; 403 Forbidden
* /v1/users\_data/1234 --&gt; 200 OK
* {“id”:111} --&gt; 401 Unauthriozied
* {“id”:\[111\]} --&gt; 200 OK
* {“id”:111} --&gt; 401 Unauthriozied
* {“id”:{“id”:111}} --&gt; 200 OK
* {"user\_id":"&lt;legit\_id&gt;","user\_id":"&lt;victims\_id&gt;"} \(JSON Parameter Pollution\)
* user\_id=ATTACKER\_ID&user\_id=VICTIM\_ID \(Parameter Pollution\)
* Go to [https://archive.org/web/](https://archive.org/web/) and check if in the past that file was **worldwide accessible**.
* **Fuzz the page**: Try using HTTP Proxy **Headers**, HTTP Authentication Basic and NTLM brute-force \(with a few combinations only\) and other techniques. To do all of this I have created the tool [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass).
* `X-Originating-IP: 127.0.0.1`
* `X-Forwarded-For: 127.0.0.1`
* `X-Remote-IP: 127.0.0.1`
* `X-Remote-Addr: 127.0.0.1`
* `X-ProxyUser-Ip: 127.0.0.1`
* `X-Original-URL: 127.0.0.1`
* If the **path is protected** you can try to bypass the path protection using these other headers:
* `X-Original-URL: /admin/console`
* `X-Rewrite-URL: /admin/console`
* **Guess the password**: Test the following common credentials. Do you know something about the victim? Or the CTF challenge name?
* [**Brute force**](../../brute-force.md#http-brute)
{% code title="Common creds" %}
```text
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
```
{% endcode %}
#### 502 Proxy Error
If any page **responds** with that **code**, it's probably a **bad configured proxy**. ****If you send a HTTP request like: `GET https://google.com HTTP/1.1` \(with the host header and other common headers\), the **proxy** will try to **access** _**google.com**_ and you will have found a **SSRF**.
#### **NTLM Authentication - Info disclosure**
If the running server asking for authentication is **Windows** or you find a login asking for your **credentials** \(and asking for **domain** **name**\), you can provoke an **information disclosure**.
**Send** the **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` and due to how the **NTLM authentication works**, the server will respond with internal info \(IIS version, Windows version...\) inside the header "WWW-Authenticate".
You can **automate** this using the **nmap plugin** "_http-ntlm-info.nse_".
#### HTTP Redirect \(CTF\)
It is possible to **put content** inside a **Redirection**. This content **won't be shown to the user** \(as the browser will execute the redirection\) but something could be **hidden** in there.
## User input related vulnerabilities special mention
### **Bypass regular login \(POST or GET method\)**
If you find a login page, here you can find some techniques to try to bypass it:
* Check for **comments** inside the page \(scroll down and to the right?\)
* Check if you can **directly access the restricted pages**
* Check to **not send the parameters** \(do not send any or only 1\)
* Test manually [very common passwords](./#2-2-5-list-of-common-password-to-test-manually).
* Check for **default credentials**
* Check for **common combinations** \(root, admin, password, name of the tech, default user with one of these passwords\)
* Check the **PHP comparisons error:** _user\[\]=a&pwd=b_ , _user=a&pwd\[\]=b_ , _user\[\]=a&pwd\[\]=b_
* Create a dictionary using **Cewl**, **add** the **default** username and password \(if there is\) and try to brute-force it using all the words as **usernames and password**
* Try to **brute-force** using a bigger **dictionary \(**[**Brute force**](../../brute-force.md#http-post-form)**\)**
You should also check for:
* [**SQL Injection authentication bypass**](../../pentesting-web/sql-injection/#authentication-bypass)\*\*\*\*
* \*\*\*\*[**NoSQL Injection**](../../pentesting-web/nosql-injection.md)\*\*\*\*
* \*\*\*\*[**XPath Injection**](../../pentesting-web/xpath-injection.md)\*\*\*\*
* \*\*\*\*[**LDAP Injection**](../../pentesting-web/ldap-injection.md)\*\*\*\*
### Insert into/Create Object
Check for ****[**SQL INSERT INTO Injections.**](../../pentesting-web/sql-injection/#insert-statement)\*\*\*\*
### **Upload Files**
Check for this vulnerabilities:
2020-10-15 13:16:06 +00:00
* \*\*\*\*[**File Upload**](../../pentesting-web/file-upload/)\*\*\*\*
## **User input Web Vulnerabilities list**
2021-01-26 13:53:03 +00:00
* \*\*\*\*[**2FA Bypass**](../../pentesting-web/2fa-bypass.md)\*\*\*\*
* \*\*\*\*[**Captcha Bypass**](../../pentesting-web/captcha-bypass.md)\*\*\*\*
* \*\*\*\*[**Clickjacking**](../../pentesting-web/clickjacking.md)\*\*\*\*
* \*\*\*\*[**Client Side Template Injection \(CSTI\)**](../../pentesting-web/client-side-template-injection-csti.md)\*\*\*\*
* \*\*\*\*[**Command Injection**](../../pentesting-web/command-injection.md)\*\*\*\*
* \*\*\*\*[**Content Security Policy \(CSP\) Bypass**](../../pentesting-web/content-security-policy-csp-bypass.md)\*\*\*\*
* \*\*\*\*[**Cookies Hacking**](../../pentesting-web/hacking-with-cookies.md)\*\*\*\*
* \*\*\*\*[**CORS - Misconfigurations & Bypass**](../../pentesting-web/cors-bypass.md)\*\*\*\*
* \*\*\*\*[**CRLF Injection**](../../pentesting-web/crlf-0d-0a.md)\*\*\*\*
* \*\*\*\*[**CSRF \(Cross Site Request Forgery\)**](../../pentesting-web/csrf-cross-site-request-forgery.md)\*\*\*\*
* \*\*\*\*[**Dangling Markup - HTML scriptless injection**](../../pentesting-web/dangling-markup-html-scriptless-injection.md)\*\*\*\*
* \*\*\*\*[**Deserialization**](../../pentesting-web/deserialization/)\*\*\*\*
* \*\*\*\*[**Email Header Injection**](../../pentesting-web/email-header-injection.md)\*\*\*\*
2020-12-27 14:58:40 +00:00
* \*\*\*\*[**File Inclusion**](../../pentesting-web/file-inclusion/)\*\*\*\*
2020-10-15 13:16:06 +00:00
* \*\*\*\*[**File Upload**](../../pentesting-web/file-upload/)\*\*\*\*
* \*\*\*\*[**IDOR**](../../pentesting-web/idor.md)\*\*\*\*
* \*\*\*\*[**JWT Vulnerabilities**](../../pentesting-web/hacking-jwt-json-web-tokens.md)\*\*\*\*
* \*\*\*\*[**NoSQL Injection**](../../pentesting-web/nosql-injection.md)\*\*\*\*
* \*\*\*\*[**LDAP Injection**](../../pentesting-web/ldap-injection.md)\*\*\*\*
* \*\*\*\*[**Open Redirect**](../../pentesting-web/open-redirect.md)
* [**Race Condition**](../../pentesting-web/race-condition.md)\*\*\*\*
* \*\*\*\*[**SQL Injection**](../../pentesting-web/sql-injection/)\*\*\*\*
* \*\*\*\*[**SSRF \(Server Side Request Forgery\)**](../../pentesting-web/ssrf-server-side-request-forgery.md)\*\*\*\*
* \*\*\*\*[**SSTI \(Server Side Template Injection\)**](../../pentesting-web/ssti-server-side-template-injection.md)\*\*\*\*
* \*\*\*\*[**Unicode Normalization vulnerability**](../../pentesting-web/unicode-normalization-vulnerability.md)\*\*\*\*
* \*\*\*\*[**XPATH Injection**](../../pentesting-web/xpath-injection.md)\*\*\*\*
* \*\*\*\*[**XSLT Server Side Injection**](../../pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md)\*\*\*\*
* \*\*\*\*[**XXE \(XML External Entity\)**](../../pentesting-web/xxe-xee-xml-external-entity.md)\*\*\*\*
* \*\*\*\*[**XSS \(Cross Site Scripting\)**](../../pentesting-web/xss-cross-site-scripting/)\*\*\*\*
* \*\*\*\*[**XS-Search**](../../pentesting-web/xs-search.md)\*\*\*\*
2020-11-10 09:27:45 +00:00
**More references** for each Web Vulnerability: [https://cyberzombie.in/bug-bounty-methodology-techniques-tools-procedures/](https://cyberzombie.in/bug-bounty-methodology-techniques-tools-procedures/)
**Another checklist**: [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)