endpointscanner 7.2.2__tar.gz → 7.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2.2
3
+ Version: 7.2.3
4
4
  Summary: Website endpoint reconnaissance tool and rate limit tester that can bypass simple captchas and WAFs.
5
5
  Project-URL: Homepage, https://github.com/SphericalFlower52811/endpointscanner
6
6
  Project-URL: Issues, https://github.com/SphericalFlower52811/endpointscanner/issues
@@ -16,7 +16,7 @@ Requires-Dist: playwright-stealth
16
16
  Requires-Dist: httpx[http2]>=0.27.0
17
17
  Dynamic: license-file
18
18
 
19
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
19
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.3)
20
20
 
21
21
  A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Automates IDOR and broken access control vulnerability testing through replacing variables with 1 in endpoints. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
22
22
 
@@ -189,12 +189,16 @@ Version 7.2.1 (patch update) added:
189
189
 
190
190
  Version 7.2.2 just changed wording and description of the tool to be more clear.
191
191
 
192
+ Version 7.2.3 added one more sensitive endpoint and fixed bug where some paths would be / from extra files.
193
+
192
194
  ## Plans for next version and the future
193
195
 
194
196
  Version 7.3 is planned to have:
195
197
 
196
198
  - More JS Stacks to detect
197
199
  - Detecting what type of captcha was used if the script is blocked.
200
+ - Fix pdf keys that look like endpoints (e.g. /Btn, /Widget)
201
+ - Fix bug in scanning extra file: openid configuration. (currently no verification that the file is in the config format, meaning on SPAs it will be mistaken as a real file.)
198
202
 
199
203
  Future plans (May be added in the next version):
200
204
 
@@ -1,4 +1,4 @@
1
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
1
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.3)
2
2
 
3
3
  A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Automates IDOR and broken access control vulnerability testing through replacing variables with 1 in endpoints. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
4
4
 
@@ -171,12 +171,16 @@ Version 7.2.1 (patch update) added:
171
171
 
172
172
  Version 7.2.2 just changed wording and description of the tool to be more clear.
173
173
 
174
+ Version 7.2.3 added one more sensitive endpoint and fixed bug where some paths would be / from extra files.
175
+
174
176
  ## Plans for next version and the future
175
177
 
176
178
  Version 7.3 is planned to have:
177
179
 
178
180
  - More JS Stacks to detect
179
181
  - Detecting what type of captcha was used if the script is blocked.
182
+ - Fix pdf keys that look like endpoints (e.g. /Btn, /Widget)
183
+ - Fix bug in scanning extra file: openid configuration. (currently no verification that the file is in the config format, meaning on SPAs it will be mistaken as a real file.)
180
184
 
181
185
  Future plans (May be added in the next version):
182
186
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2.2
3
+ Version: 7.2.3
4
4
  Summary: Website endpoint reconnaissance tool and rate limit tester that can bypass simple captchas and WAFs.
5
5
  Project-URL: Homepage, https://github.com/SphericalFlower52811/endpointscanner
6
6
  Project-URL: Issues, https://github.com/SphericalFlower52811/endpointscanner/issues
@@ -16,7 +16,7 @@ Requires-Dist: playwright-stealth
16
16
  Requires-Dist: httpx[http2]>=0.27.0
17
17
  Dynamic: license-file
18
18
 
19
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
19
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.3)
20
20
 
21
21
  A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Automates IDOR and broken access control vulnerability testing through replacing variables with 1 in endpoints. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
22
22
 
@@ -189,12 +189,16 @@ Version 7.2.1 (patch update) added:
189
189
 
190
190
  Version 7.2.2 just changed wording and description of the tool to be more clear.
191
191
 
192
+ Version 7.2.3 added one more sensitive endpoint and fixed bug where some paths would be / from extra files.
193
+
192
194
  ## Plans for next version and the future
193
195
 
194
196
  Version 7.3 is planned to have:
195
197
 
196
198
  - More JS Stacks to detect
197
199
  - Detecting what type of captcha was used if the script is blocked.
200
+ - Fix pdf keys that look like endpoints (e.g. /Btn, /Widget)
201
+ - Fix bug in scanning extra file: openid configuration. (currently no verification that the file is in the config format, meaning on SPAs it will be mistaken as a real file.)
198
202
 
199
203
  Future plans (May be added in the next version):
200
204
 
@@ -225,9 +225,7 @@ async def async_rate_test(url, num_reqs=100, method="GET", rb=None, rv=None, coo
225
225
  print("[+] Streaming requests into the background network pipeline...")
226
226
  await asyncio.sleep(45.0)
227
227
 
228
- #after network is gone
229
- #Fancy label below
230
- #----AFTER NETWORK IS GONE----
228
+ #label every single request using enumerate() to find out exactly when the first request timed out, or hit a non-200.
231
229
  status_counts = {}
232
230
  first_limit_at = None
233
231
 
@@ -404,7 +402,7 @@ def main():
404
402
  exit(1)
405
403
 
406
404
  if args.ratelimit_body and args.ratelimit_var:
407
- # bracket escaping
405
+ # bracket escaping, so if someone puts {{X}} or X, it will end up as {X}.
408
406
  expected_bracket_token = f"{{{args.ratelimit_var.strip('{}')}}}"
409
407
 
410
408
  if expected_bracket_token not in args.ratelimit_body:
@@ -473,7 +471,7 @@ def main():
473
471
  start_test_time = time.perf_counter()
474
472
  #hardcoded dangerous endpoints to test
475
473
  SENSITIVE_ENDPOINT = {
476
- "/.env", "/.env.local", "/.env.production", "/.env.development",
474
+ "/.env", "/.env.local", "/.env.production", "/.env.development", ".env.dev",
477
475
  "/.git/config", "/.git/HEAD", "/package.json", "/package-lock.json", "/.npmrc", "/.dockerenv",
478
476
  "/.gitignore", "/api/health", "/admin", "/login", "/config",
479
477
  "/.env.example", "/docker-compose.yml", "/.babelrc", "/.eslintrc.json",
@@ -504,6 +502,8 @@ def main():
504
502
  for rule in rules:
505
503
  clean_rule = rule.strip()
506
504
  if clean_rule and clean_rule not in ["/", "/*"] and clean_rule not in found_paths:
505
+ if clean_rule.strip() in ["/", "/*"]:
506
+ continue
507
507
  found_paths.add(clean_rule)
508
508
  results_fromotherfiles.append(f"{clean_rule} [Source: robots.txt]")
509
509
  if args.show_prog:
@@ -519,6 +519,8 @@ def main():
519
519
  for loc in locs:
520
520
  clean_path = loc.strip()
521
521
  if clean_path and clean_path != "/" and clean_path not in found_paths:
522
+ if clean_path.strip() == "/":
523
+ continue
522
524
  found_paths.add(clean_path)
523
525
  if not args.tidy:
524
526
  results_fromotherfiles.append(f"{clean_path} [Source: sitemap.xml]")
@@ -536,6 +538,8 @@ def main():
536
538
  paths = re.findall(r'["\'](/[a-zA-Z0-9_\-\./]+)["\']', m_res.text)
537
539
  for path in paths:
538
540
  if path not in found_paths:
541
+ if path.strip() == "/":
542
+ continue
539
543
  found_paths.add(path)
540
544
  if not args.tidy:
541
545
  results_fromotherfiles.append(f"{path} [Source: asset-manifest.json]")
@@ -553,6 +557,8 @@ def main():
553
557
  paths = re.findall(r'["\'](/[a-zA-Z0-9_\-\./]+)["\']', m_res.text)
554
558
  for path in paths:
555
559
  if path not in found_paths:
560
+ if path.strip() == "/":
561
+ continue
556
562
  found_paths.add(path)
557
563
  if not args.tidy:
558
564
  results_fromotherfiles.append(f"{path} [Source: {manifest_path.lstrip('/')}]")
@@ -572,6 +578,8 @@ def main():
572
578
  paths = re.findall(r'["\'`](/[a-zA-Z0-9_\-\./{}:]+)["\'`]', sw_res.text)
573
579
  for path in paths:
574
580
  if path not in found_paths and not any(path.endswith(ext) for ext in ['.js', '.css']):
581
+ if path.strip() == "/":
582
+ continue
575
583
  found_paths.add(path)
576
584
  if not args.tidy:
577
585
  results_fromotherfiles.append(f"{path} [Source: {sw_path}]")
@@ -589,6 +597,8 @@ def main():
589
597
  paths = re.findall(r'https?://[^/]+(/[^"\']*)', oidc_res.text)
590
598
  for path in paths:
591
599
  if path not in found_paths:
600
+ if path.strip() == "/":
601
+ continue
592
602
  found_paths.add(path)
593
603
  if not args.tidy:
594
604
  results_fromotherfiles.append(f"{path} [Source: openid-configuration]")
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "endpointscanner"
7
- version = "7.2.2"
7
+ version = "7.2.3"
8
8
  readme = "README.md"
9
9
  description = "Website endpoint reconnaissance tool and rate limit tester that can bypass simple captchas and WAFs."
10
10
  requires-python = ">=3.9"
File without changes