endpointscanner 7.3.7__tar.gz → 7.3.9__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.3.7
3
+ Version: 7.3.9
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
@@ -17,7 +17,7 @@ Requires-Dist: httpx[http2]>=0.27.0
17
17
  Requires-Dist: colorama>=0.4.6
18
18
  Dynamic: license-file
19
19
 
20
- # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.7)
20
+ # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.9)
21
21
 
22
22
  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.
23
23
 
@@ -245,6 +245,10 @@ Version 7.3.6 updated the script to exit if playwright browser does not exist.
245
245
 
246
246
  Version 7.3.7 was a patch that added vendor.example.com to subdomains to scan as it contains code for the website.
247
247
 
248
+ version 7.3.8 gave more time for rate limiting test requests to settle.
249
+
250
+ Version 7.3.9 removed /admin and /login from the built-in endpoints to test, as they would be removed from the unsorted list from --raw-output flag even if they were found in the javascript code. Also changed fake path to include a random hash behind in case people actually hardcoded such a path.
251
+
248
252
  ## Plans for next version and the future
249
253
 
250
254
  Version 7.4:
@@ -1,4 +1,4 @@
1
- # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.7)
1
+ # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.9)
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
 
@@ -226,6 +226,10 @@ Version 7.3.6 updated the script to exit if playwright browser does not exist.
226
226
 
227
227
  Version 7.3.7 was a patch that added vendor.example.com to subdomains to scan as it contains code for the website.
228
228
 
229
+ version 7.3.8 gave more time for rate limiting test requests to settle.
230
+
231
+ Version 7.3.9 removed /admin and /login from the built-in endpoints to test, as they would be removed from the unsorted list from --raw-output flag even if they were found in the javascript code. Also changed fake path to include a random hash behind in case people actually hardcoded such a path.
232
+
229
233
  ## Plans for next version and the future
230
234
 
231
235
  Version 7.4:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.3.7
3
+ Version: 7.3.9
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
@@ -17,7 +17,7 @@ Requires-Dist: httpx[http2]>=0.27.0
17
17
  Requires-Dist: colorama>=0.4.6
18
18
  Dynamic: license-file
19
19
 
20
- # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.7)
20
+ # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester (Version 7.3.9)
21
21
 
22
22
  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.
23
23
 
@@ -245,6 +245,10 @@ Version 7.3.6 updated the script to exit if playwright browser does not exist.
245
245
 
246
246
  Version 7.3.7 was a patch that added vendor.example.com to subdomains to scan as it contains code for the website.
247
247
 
248
+ version 7.3.8 gave more time for rate limiting test requests to settle.
249
+
250
+ Version 7.3.9 removed /admin and /login from the built-in endpoints to test, as they would be removed from the unsorted list from --raw-output flag even if they were found in the javascript code. Also changed fake path to include a random hash behind in case people actually hardcoded such a path.
251
+
248
252
  ## Plans for next version and the future
249
253
 
250
254
  Version 7.4:
@@ -257,8 +257,8 @@ async def async_rate_test(url, num_reqs=100, method="GET", rb=None, rv=None, coo
257
257
  if not rh:
258
258
  current_headers = HEADER.copy()
259
259
  pa_target = urlparse(url)
260
- current_headers["Origin"] = f"https://{pa_target.netloc}"
261
- current_headers["Referer"] = f"https://{pa_target.netloc}/"
260
+ current_headers["Origin"] = f"{pa_target.scheme}://{pa_target.netloc}"
261
+ current_headers["Referer"] = f"{pa_target.scheme}://{pa_target.netloc}/"
262
262
  is_json_string = rb and current_body.strip().startswith(('{', '['))
263
263
  if rb:
264
264
  if is_json_string:
@@ -362,7 +362,7 @@ async def async_rate_test(url, num_reqs=100, method="GET", rb=None, rv=None, coo
362
362
 
363
363
  print("Finishing up rate limiting test...")
364
364
  #wait for all responses to load properly
365
- await asyncio.sleep(45.0)
365
+ await asyncio.sleep(50.0)
366
366
 
367
367
  #label every single request using enumerate() to find out exactly when the first request timed out, or hit a non-200.
368
368
  status_counts = {}
@@ -473,7 +473,7 @@ def main():
473
473
  init(autoreset=True)
474
474
  print()
475
475
  print("-" * 40)
476
- print(f"{Style.BRIGHT}Endpointscanner {Fore.LIGHTMAGENTA_EX}v7.3.6")
476
+ print(f"{Style.BRIGHT}Endpointscanner {Fore.LIGHTMAGENTA_EX}v7.3.9")
477
477
  print("-" * 40)
478
478
  print()
479
479
  if args.no_duplicate_prog and not args.show_prog:
@@ -623,9 +623,8 @@ def main():
623
623
  SENSITIVE_ENDPOINT = {
624
624
  "/.env", "/.env.local", "/.env.production", "/.env.development", ".env.dev",
625
625
  "/.git/config", "/.git/HEAD", "/package.json", "/package-lock.json", "/.npmrc", "/.dockerenv",
626
- "/.gitignore", "/api/health", "/admin", "/login", "/config",
627
- "/.env.example", "/docker-compose.yml", "/.babelrc", "/.eslintrc.json",
628
- "/wp-config.php", "/config.json", "/.aws/credentials", "/.git/index",
626
+ "/.gitignore", "/api/health", "/config", "/.env.example", "/docker-compose.yml", "/.babelrc",
627
+ "/.eslintrc.json", "/wp-config.php", "/config.json", "/.aws/credentials", "/.git/index",
629
628
  "/etc/passwd"
630
629
  }
631
630
 
@@ -866,7 +865,9 @@ def main():
866
865
  #identify js stacks.
867
866
  js_stack = []
868
867
  identify_javascript_type(html=main_html, headers=None, current_stack=js_stack)
869
- fake_path = "/very-fake-page-123456123456abcdefg"
868
+ #add randomly generated hash later/tomorrow.
869
+ import secrets
870
+ fake_path = f"/very-fake-page-123456123456abcdefg_{secrets.token_hex(16)}"
870
871
  fake_url = urljoin(target, fake_path)
871
872
  try:
872
873
  fake_res = requests.get(fake_url, cookies=session_cookies, headers=HEADER, impersonate=impersonate_settings, timeout=10)
@@ -1258,6 +1259,8 @@ def main():
1258
1259
  except (KeyboardInterrupt, SystemExit):
1259
1260
  print("\nScan cancelled by user.")
1260
1261
  return
1262
+ else:
1263
+ print(f"Endpoints Found: {len(found_paths) - len(SENSITIVE_ENDPOINT)}")
1261
1264
 
1262
1265
 
1263
1266
  if not args.raw_output:
@@ -1631,8 +1634,8 @@ def main():
1631
1634
  print(f"\nFailed to write file: {e}")
1632
1635
  else:
1633
1636
  if not args.only_res:
1634
- print("Endpoints will not be sorted. Sensitive endpoints like '.git/config' will be automatically skipped.")
1635
- print('----Raw Endpoints----')
1637
+ print("\nEndpoints will not be sorted. Sensitive endpoints like '.git/config' will be automatically skipped.\n")
1638
+ print('----Raw Endpoints----\n')
1636
1639
  clean_found_paths = []
1637
1640
  #delete all sensitive endpoints, as they are not sorted and may be misleading that all are exposed.
1638
1641
  for p in unsorted_paths:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "endpointscanner"
7
- version = "7.3.7"
7
+ version = "7.3.9"
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