├── .all-contributorsrc
├── .github
└── FUNDING.yml
├── API_Testing
├── Hidden_API_Functionality_Exposure.md
└── Reverse_Engineer_an_API.md
├── Account_Takeovers_Methodologies
└── Account_Takeovers_Methods.md
├── Application_Level_DoS
├── ALD_Methods.md
└── Password.txt
├── Authentication_Bypass
├── 2FA_Bypasses.md
├── OTP_Bypass.md
└── account_ban_bypass.md
├── BrokenLinkHijacking
└── BrokenLinkHijacking.md
├── Broken_Auth_And_Session_Management
└── Session_based_bugs.md
├── CMS
├── AEM.md
├── Drupal.md
├── Moodle.md
└── wordpress.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CORS
├── CORS.md
└── CORS_Bypasses.md
├── CSRF
├── CSRF.md
├── Cross_Site_Request_Forgery_Bypass.md
└── README.md
├── CVES
└── easycve.md
├── CheckList
├── Web-Application-Pentesting-checklist.md
├── Web_Application_Penetration_Testing_Checklist_by_Tushar_Verma.pdf
├── Web_Checklist_by_Chintan_Gurjar.pdf
├── Web_Penetration_Testing_Methodology@2x.png
└── mindmap.png
├── EXIF_Geo_Data_Not_Stripped
└── exif_geo.md
├── File_Upload
├── file_upload.md
└── old_file_upload_bypass.md
├── FindOriginIP
└── FindOrigin.md
├── GraphQL
└── GraphQL.md
├── HTML_Injection
└── HTML_Injection_on_password_reset_page.md
├── HTTP_Desync
└── http_desync.md
├── Host-Header
└── Host-Header.md
├── IDOR
├── IDOR-Old.md
└── IDOR.md
├── JIRA
└── README.md
├── JWT
├── JWT.md
└── OLD_JWT_ATTACK_Notes.md
├── LICENSE
├── MFA_Bypasses
├── 2FA_Bypass.md
└── README.md
├── Misconfigurations
├── Default_Credential_And_Admin_Panel.md
├── Docker.md
└── S3-Bucket_Misconfig.md
├── OAuth
├── OAuth 2.0 Hunting Methodology.md
└── README.md
├── Open_Redirection
├── Open_Redirection_Bypass.md
└── find_OpenRedirect_trick.md
├── Parameter_Pollution
└── Parameter_Pollution_in_social_sharing_buttons.md
├── Password_Reset_Functionality
├── Account_Takeover_By_Password_Reset_Functionality.md
├── Password_Reset_Flaws_by_Sm4rty.md
├── Password_Reset_Token_Leakage.md
├── README.md
└── Top_5_Password_Reset_Bugs
├── README.md
├── Race_Condition
└── race_conditions.md
├── Rate_limit
├── No Rate-Limit on Verify-PhoneNo.md
├── No Rate-limit on Invite User.md
├── No Rate-limit on Promo.md
├── No Rate-limit on Verify-email.md
├── No Rate-limit on forget-password.md
├── README.md
└── RateLimitBypass.md
├── Recon
├── Github_Dorking.md
├── Workflow.md
└── subdomain_enumeration.md
├── SAML
└── SAML.md
├── SQLi
└── SQL_Injection.md
├── SSRF
├── Blind_SSRF.md
├── SSRF-old.md
└── SSRF.md
├── SSTI
└── SSTI.md
├── SUMMARY.md
├── Sensitive_Info_Leaks
├── Github-dorks.md
├── Github_Recon_Method.md
├── Github_dorks_all.md
├── Google_Dorks.md
├── Shodan_cve_dorks.md
└── Version_Leak.md
├── Sign_Up_Functionality
├── Hunting_for_bugs_in_signup_feature.md
└── Signup_Mindmap.png
├── Status_Code_Bypass
├── 403Bypass.md
└── README.md
├── Subdomain_Takeover
├── Easy_Methods.md
├── Sub_or_top_level_domain_takeover.md
├── Subdomain_Takeover.md
├── cname.png
├── cname_buy.png
├── dns.png
└── subdomain_takeover.png
├── Tabnabbing
└── Tabnabbing.md
├── WAF_Bypasses
└── WAF_Bypass_Using_headers.md
├── Weak_Password_Policy
└── Weak_password_policy.md
├── Web_Source_Review
└── codereviewtips.md
├── XSS
├── Automated_XSS.md
├── Bypass_CSP.md
├── XSS_Bypass.md
├── Xss.md
└── post_message_xss.md
└── XXE
├── Billion_Laugh_Attack.md
└── XXE_Methods.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://www.buymeacoffee.com/kathanp19']
13 |
--------------------------------------------------------------------------------
/API_Testing/Hidden_API_Functionality_Exposure.md:
--------------------------------------------------------------------------------
1 | # Hidden API Functionality Exposure
2 | - Application programming interfaces (APIs) have become a critical part of almost every business. APIs are responsible for transferring information between systems within a company or to external companies. For example, when you log in to a website like Google or Facebook, an API processes your login credentials to verify they are correct.
3 |
4 | 1. Swagger UI Documentation
5 | 2. Dictionary Attack | Brute force
6 | 3. Common wordlist for API Enum :
7 | - https://wordlists.assetnote.io/
8 | - https://github.com/Net-hunter121/API-Wordlist
9 |
10 | ## Steps to Perform This Attack :
11 | ```
12 | Step 1 : Capture the request into Burp, Send the request to repeater and intruder tab.
13 | Step 2 : Add the endpoint into the intruder tab and add the payload from the word-list.
14 | Step 3 : First use dictionary attack with SecLists (https://github.com/danielmiessler/SecLists) on the Endpoint.
15 | Step 4 : Either use your customized list or use the ones which I have provided in the above step.
16 | Step 5 : Then simply start the attack, start checking for 200 status.
17 | Step 7 : Once there is HTTP 200 OK status, start the recursive scan on the same endpoint for juicy information like swagger doc and so on.
18 | step 8 : Other method is to change the API version and try bruteforcing the same endpoint
19 | Eg: Redacted.com/api/v1/{Endpoint} ----- Redacted.com/api/v2/{Endpoint}
20 | ```
21 | * Note: There will be minimum limits per request which will be assigned without API keys so make sure to utilize manual approach as much as you can, then the rest can be automated for scanning the vulnerability in API with automated tools.
22 |
23 | ## Contributor:
24 | - [N3T_hunt3r](https://twitter.com/N3T_hunt3r)
25 |
--------------------------------------------------------------------------------
/API_Testing/Reverse_Engineer_an_API.md:
--------------------------------------------------------------------------------
1 | # Reverse Engineer an API
2 |
3 |
4 | ## Tools to use
5 | 1. FoxyProxy
6 | 2. mitmweb
7 | 3. mitmproxy2swagger
8 | 4. https://editor.swagger.io/
9 | 5. Postman
10 |
11 | ## Steps to Reproduce
12 | 1. **Foxyproxy:** Turn on 8080 port using Foxy Proxy.(Label it anything you want)
13 | 2. **mitmweb:** Run `sudo mitmweb` and then go to mitm.it and install & import the certificate.
14 | 3. **Explore Website w/ API's functionalities:** Go to the website w/ api that you want to gather the API endpoints from and explore it's functionalities.
The mitmweb tool will capture it,
15 | afterwards you can download the captures as a flow file in mitmweb by clicking on file -> save all.
16 | 4. **mitmproxy2swagger:** Here we run `sudo mitmproxy2swagger -i flows -o spec.yml -p -f flow`. This will turn flows file to a yml file. Afterwards you need to remove the ignore: in the spec.yml and run
17 | `sudo mitmproxy2swagger -i flows -o spec.yml -p -f flow --examples`, --examples is added to enhance the documentation of the api endpoints.
18 | 5. **https://editor.swagger.io/:** Now you can import the clean spec.yml file and visualize the different endpoints.
19 | 6. **Postman:** You can also import the spec.yml in postman which will produce a well organized collection.
20 |
--------------------------------------------------------------------------------
/Account_Takeovers_Methodologies/Account_Takeovers_Methods.md:
--------------------------------------------------------------------------------
1 |
2 | ## Chaining Session Hijacking with XSS
3 | ```
4 | 1.I have added a session hijacking method in broken authentication and session management.
5 | 2.If you find that on target.
6 | 3.Try anyway to steal cookies on that target.
7 | 4.Here I am saying look for xss .
8 | 5.If you find xss you can steal the cookies of victim and using session hijacking you can takeover the account of victim.
9 | ```
10 | ## No Rate Limit On Login With Weak Password Policy
11 | ```
12 | So if you find that target have weak password policy, try to go for no rate limit attacks in poc shows by creating very weak password of your account.
13 |
14 | (May or may not be accepted)
15 | ```
16 | ## Password Reset Poisioning Leads To Token Theft
17 | ```
18 | 1.Go to password reset funtion.
19 | 2.Enter email and intercept the request.
20 | 3.Change host header to some other host i.e,
21 | Host:target.com
22 | Host:attacker.com
23 | also try to add some headers without changing host like
24 | X-Forwarded-Host: evil.com
25 | Referrer: https://evil.com
26 | 4.Forward this if you find that in next request attacker.com means you managed to successfully steal the token. :)
27 | ```
28 | ## Using Auth Bypass
29 | ```
30 | Check out Auth Bypass method, there is a method for OTP bypass via response manipulation, this can leads to account takeovers.
31 | 1.Enter the wrong auth code / Password
32 | 2.Capture a auth request in burpsuite and send it to repeater
33 | 3.Check for the resoponse
34 | 4.Change the respone by manipulating the following parameters
35 | {“code”:”invalid_credentials”} -> {“code”:”valid_credentials”}
36 | {“verify”:”false”} -> {“verify”:”true”}
37 |
38 |
39 | ```
40 | ## Try For CSRF On
41 | ```
42 | 1.Change Password function.
43 | 2.Email change
44 | 3.Change Security Question
45 | ```
46 | ## Token Leaks In Response
47 |
48 | * So there are multiple ways to do it but all are same.
49 |
50 | * So I will sharing my method that I have learnt here .
51 |
52 | * Endpoints:(Register,Forget Password)
53 |
54 | * Steps(For Registration):
55 | ```
56 | 1. For registeration intercept the signup request that contains the data you have entered.
57 | 2. Click on action -> do -> intercept the response to this request.
58 | 3. Click forward.
59 | 4. Check response if that contains any link, any token or OTP.
60 | ```
61 | ------------------------
62 | * Steps (For password reset):
63 | ```
64 | 1. Intercept the forget password option.
65 | 2. Click on action -> do -> intercept the response to this request.
66 | 3. Click forward.
67 | 4. Check response if that contains any link,any token or OTP.
68 | ```
69 |
70 | ## Reference:
71 | * Various Source From Google,Twitter,Medium
72 | * https://avanishpathak.medium.com/an-account-takeover-vulnerability-due-to-response-manipulation-e23fe629bd1
73 |
74 | ## Author
75 | * [@Virdoex_hunter](https://twitter.com/Virdoex_hunter)
76 | * [@v3daxt](https://twitter.com/v3daxt)
77 |
--------------------------------------------------------------------------------
/Application_Level_DoS/ALD_Methods.md:
--------------------------------------------------------------------------------
1 |
2 | ## 1. Email Bounce Issues
3 | - Check if Application has Invite Functionality
4 | - Try sending Invites to Invalid Email Accounts
5 | - Try to find Email Service Provider such as AWS SES , Hubspot , Campaign Monitor
6 | **Note: You can find Email Service Provider by checking Email Headers**
7 | * Once you have the Email Service Provider, Check there Hard Bounce Limits. Here are the limits for some of them:
8 |
9 | **1. Hubspot Hard bounces:** HubSpot's hard bounce limit is 5%. For reference, many ISPs prefer bounce rates to be under 2%.
10 |
11 | **2. AWS SES:** The rate of SES ranges from first 2-5% then 5-10%
12 |
13 | ***Impact: Once the Hard Bounce Limits are reached, Email Service Provider will block the Company which means, No Emails would be sent to the Users !***
14 |
15 | ## 2. Long Password DoS Attack
16 |
17 | - As the value of password is hashed and then stored in Databases. If there is no limit on the length of the Password, it can lead to consumption of resources for Hashing the Long Password.
18 |
19 | **How to test?**
20 |
21 | - Use a Password of length around 150-200 words to check the presense of Length Restriction
22 | - If there is no Restriction, Choose a longer password and keep a eye on Response Time
23 | - Check if the Application Crashes for few seconds
24 |
25 | **Where to test?**
26 |
27 | - Registration Password Field is usually restricted but the Length of Password on the Forgot Password Page and the Change Password (As Authenticated User) Functionality is usually missing.
28 |
29 |
30 | ## 3. Long String DOS
31 |
32 | * When you set some string so long so server cannot process it anymore it cause DOS sometime
33 |
34 | **How to test**
35 | ```
36 | Create app and put field like username or address or even profile picture name parameter ( second refrence ) like 1000 character of string .
37 | Search A's account from B's account either it will
38 | ```
39 | - Either it will keeping on searching for long time
40 | - Either the application will crash (500 - Error Code)
41 |
42 |
43 | ## Use Password From Password.txt
44 | ⚠️`it's not recommended using more than 5000 characters as password.`
45 | - Here is the [Password.txt](https://raw.githubusercontent.com/KathanP19/HowToHunt/master/Application_Level_DoS/Password.txt)
46 |
47 | ## 4. Permanent DOS to victim
48 | This is not Application Level DOS but a Permanent DOS to victim.
49 | In some website user get blocked after trying to loging in with wrong credidentials.We will untilize this feature as bug :D.
50 |
51 | **How to check**.
52 | - Go to login page of example.com.
53 | - Now enter valid account email and wrong password .
54 | - Try to login with these details for few times(at least 10-20 times).You can use repeater or intruder in burpsuite.
55 | - If your account get blocked, check the blocking time period.If the blocking time period is more than 30 min .You can report it.
56 |
57 | **Point to Remember**
58 | - Make sure there is no captcha during login because we cann't make any automated tool to loop the request.
59 | - Make sure Old session are expired after being blocked.
60 |
61 | **What is priority of this bug?**
62 | - If the user get permanently block after some wrong attempts this is considered as P2.
63 | - If the user get temporarly block this is considered as P3/P4.
64 |
65 | During report try to add impact by saying that you can permanently block user account by looping this request with some intervals.
66 |
67 |
68 | ## Reference :
69 | \- Email Bounce Issues
70 | * [https://medium.com/bugbountywriteup/an-unexpected-bounty-email-bounce-issues-b9f24a35eb68](https://medium.com/bugbountywriteup/an-unexpected-bounty-email-bounce-issues-b9f24a35eb68)
71 |
72 | \- Long Password DoS Attack
73 |
74 | - https://www.acunetix.com/vulnerabilities/web/long-password-denial-of-service/
75 | - https://hackerone.com/reports/738569
76 | - https://hackerone.com/reports/167351
77 |
78 | \- Long String DOS
79 | - [https://medium.com/@shahjerry33/long-string-dos-6ba8ceab3aa0](https://medium.com/@shahjerry33/long-string-dos-6ba8ceab3aa0)
80 | - https://hackerone.com/reports/764434
81 |
82 | \- Permanent DOS to victim
83 | - https://youtu.be/5drIMXCQuNw
84 |
85 | ## Author:
86 | * [Keshav Malik](https://twitter.com/g0t_rOoT_)
87 | * [Fani Malik](https://twitter.com/fanimalikhack)
88 |
89 |
--------------------------------------------------------------------------------
/Authentication_Bypass/2FA_Bypasses.md:
--------------------------------------------------------------------------------
1 | # **2FA Bypass Techniques**
2 |
3 | ## **Introduction**
4 | Two-Factor Authentication (2FA) is a security mechanism designed to add an extra layer of protection by requiring users to provide an additional verification code after entering their credentials. However, improper implementations of 2FA can introduce various security flaws that allow attackers to bypass authentication.
5 |
6 | This document outlines **common 2FA bypass techniques**, including **response manipulation, brute-force attacks, backup code abuse, and session hijacking**. Each method is detailed with examples and exploitation steps.
7 |
8 | For a **visual reference**, a **[2FA Bypass Mindmap](https://mm.tt/1736437018?t=SEeZOmvt01)** provides an overview of different attack vectors.
9 |
10 | ---
11 |
12 | ## **Common 2FA Bypass Techniques**
13 |
14 | ### **Index of Techniques**
15 | | # | **Technique** |
16 | |----|--------------|
17 | | **1** | Response Manipulation |
18 | | **2** | Status Code Manipulation |
19 | | **3** | 2FA Code Leakage in Response |
20 | | **4** | JavaScript File Analysis |
21 | | **5** | 2FA Code Reusability |
22 | | **6** | Lack of Brute-Force Protection |
23 | | **7** | Missing 2FA Code Integrity Validation |
24 | | **8** | CSRF on 2FA Disabling |
25 | | **9** | Password Reset Disables 2FA |
26 | | **10** | Backup Code Abuse |
27 | | **11** | Clickjacking on 2FA Disabling Page |
28 | | **12** | Enabling 2FA Without Expiring Active Sessions |
29 | | **13** | Bypass 2FA with `null` or `000000` |
30 |
31 | ---
32 |
33 | ## **1. Response Manipulation**
34 | Some 2FA implementations return a JSON response indicating whether authentication was successful. **Altering the response** can bypass restrictions.
35 |
36 | ### **Exploitation**
37 | - Intercept the response using **Burp Suite** or **a browser's developer tools**.
38 | - Look for a response like:
39 | ```json
40 | { "success": false }
41 | ```
42 | - Change it to:
43 | ```json
44 | { "success": true }
45 | ```
46 | - If client-side validation is weak, access is granted.
47 |
48 | ---
49 |
50 | ## **2. Status Code Manipulation**
51 | Some applications rely on HTTP status codes to determine authentication success.
52 |
53 | ### **Exploitation**
54 | - If a **4xx error** (e.g., `401 Unauthorized`) is received after entering a **wrong** 2FA code, modify the response to:
55 | ```
56 | HTTP/1.1 200 OK
57 | ```
58 | - Some applications may grant access **even if authentication failed**.
59 |
60 | ---
61 |
62 | ## **3. 2FA Code Leakage in API Responses**
63 | Some applications accidentally **leak the 2FA code** in their API response.
64 |
65 | ### **Exploitation**
66 | - Intercept the **request triggering the 2FA code**.
67 | - Examine the API response.
68 | - If the response contains:
69 | ```json
70 | { "otp": "123456" }
71 | ```
72 | - The attacker can directly **use the leaked OTP**.
73 |
74 | ---
75 |
76 | ## **4. JavaScript File Analysis**
77 | Some applications store **2FA-related logic** in JavaScript files.
78 |
79 | ### **Exploitation**
80 | - Check for exposed `.js` files in the application.
81 | - Look for sensitive **hardcoded values** like:
82 | ```javascript
83 | var otp = "123456";
84 | ```
85 | - Attackers can **extract OTP verification logic** or **static OTPs**.
86 |
87 | ---
88 |
89 | ## **5. 2FA Code Reusability**
90 | Some applications **do not expire OTPs after use**, allowing attackers to **reuse** them.
91 |
92 | ### **Exploitation**
93 | - Obtain a **valid OTP** from a previous session.
94 | - Attempt to reuse the same OTP for authentication.
95 | - If the system does not enforce **one-time use**, the **old OTP grants access**.
96 |
97 | ---
98 |
99 | ## **6. Lack of Brute-Force Protection**
100 | Applications that **do not limit OTP attempts** allow brute-forcing.
101 |
102 | ### **Exploitation**
103 | - Identify the **number of OTP digits** (commonly `4`-`6`).
104 | - Use a tool like `Burp Intruder` to brute-force:
105 | ```
106 | 000000 - 999999
107 | ```
108 | - **Weak OTP validation** allows attackers to guess the correct OTP.
109 |
110 | ---
111 |
112 | ## **7. Missing 2FA Code Integrity Validation**
113 | Some systems accept **any valid OTP**, even from different accounts.
114 |
115 | ### **Exploitation**
116 | - Obtain a **valid OTP** for **Account A**.
117 | - Use the **same OTP** to authenticate **Account B**.
118 | - If the system **does not verify OTP ownership**, access is granted.
119 |
120 | ---
121 |
122 | ## **8. CSRF on 2FA Disabling**
123 | Some applications **lack CSRF protection** when disabling 2FA.
124 |
125 | ### **Exploitation**
126 | - Construct a **malicious request** to disable 2FA:
127 | ```html
128 |
132 | ```
133 | - Trick the victim into **clicking the form**, disabling their 2FA.
134 |
135 | ---
136 |
137 | ## **9. Password Reset Disables 2FA**
138 | Some systems **disable 2FA** when a user resets their password.
139 |
140 | ### **Exploitation**
141 | - If an account has 2FA enabled, attempt a **password reset**.
142 | - Check if **2FA is still active** after resetting the password.
143 | - If **2FA is disabled**, log in **without 2FA authentication**.
144 |
145 | ---
146 |
147 | ## **10. Backup Code Abuse**
148 | Backup codes provide **alternative login options** when OTP is unavailable.
149 |
150 | ### **Exploitation**
151 | - If backup codes are stored **insecurely**, they can be leaked or stolen.
152 | - Some applications **do not expire backup codes after use**, allowing repeated exploitation.
153 |
154 | ---
155 |
156 | ## **11. Clickjacking on 2FA Disabling Page**
157 | Some applications allow **2FA to be disabled** without additional verification.
158 |
159 | ### **Exploitation**
160 | - Load the **2FA disabling page** in an `