bbot 2.4.2.6706rc0__tar.gz → 2.5.0__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.

Potentially problematic release.


This version of bbot might be problematic. Click here for more details.

Files changed (458) hide show
  1. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/PKG-INFO +1 -1
  2. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/__init__.py +1 -1
  3. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/lightfuzz.py +1 -1
  4. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/serial.py +11 -1
  5. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/sqli.py +1 -0
  6. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/xss.py +4 -4
  7. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/lightfuzz-heavy.yml +1 -1
  8. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/lightfuzz-medium.yml +1 -1
  9. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/lightfuzz-superheavy.yml +1 -1
  10. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_lightfuzz.py +2 -130
  11. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/pyproject.toml +2 -2
  12. bbot-2.4.2.6706rc0/bbot/modules/lightfuzz/submodules/nosqli.py +0 -183
  13. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/LICENSE +0 -0
  14. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/README.md +0 -0
  15. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/cli.py +0 -0
  16. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/__init__.py +0 -0
  17. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/config/__init__.py +0 -0
  18. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/config/files.py +0 -0
  19. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/config/logger.py +0 -0
  20. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/core.py +0 -0
  21. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/engine.py +0 -0
  22. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/event/__init__.py +0 -0
  23. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/event/base.py +0 -0
  24. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/event/helpers.py +0 -0
  25. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/flags.py +0 -0
  26. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/__init__.py +0 -0
  27. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/async_helpers.py +0 -0
  28. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/bloom.py +0 -0
  29. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/cache.py +0 -0
  30. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/command.py +0 -0
  31. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  32. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
  33. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  34. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/diff.py +0 -0
  35. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/__init__.py +0 -0
  36. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/brute.py +0 -0
  37. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/dns.py +0 -0
  38. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/engine.py +0 -0
  39. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/helpers.py +0 -0
  40. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/dns/mock.py +0 -0
  41. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/files.py +0 -0
  42. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/helper.py +0 -0
  43. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/interactsh.py +0 -0
  44. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/libmagic.py +0 -0
  45. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/misc.py +0 -0
  46. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/names_generator.py +0 -0
  47. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/ntlm.py +0 -0
  48. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/process.py +0 -0
  49. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/ratelimiter.py +0 -0
  50. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/regex.py +0 -0
  51. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/regexes.py +0 -0
  52. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/url.py +0 -0
  53. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/validators.py +0 -0
  54. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/__init__.py +0 -0
  55. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/client.py +0 -0
  56. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/engine.py +0 -0
  57. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/envelopes.py +0 -0
  58. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/ssl_context.py +0 -0
  59. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/web/web.py +0 -0
  60. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/wordcloud.py +0 -0
  61. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/helpers/yara_helper.py +0 -0
  62. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/modules.py +0 -0
  63. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/multiprocess.py +0 -0
  64. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/core/shared_deps.py +0 -0
  65. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/db/sql/models.py +0 -0
  66. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/defaults.yml +0 -0
  67. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/errors.py +0 -0
  68. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/logger.py +0 -0
  69. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/__init__.py +0 -0
  70. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ajaxpro.py +0 -0
  71. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/anubisdb.py +0 -0
  72. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/apkpure.py +0 -0
  73. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/azure_realm.py +0 -0
  74. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/azure_tenant.py +0 -0
  75. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/baddns.py +0 -0
  76. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/baddns_direct.py +0 -0
  77. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/baddns_zone.py +0 -0
  78. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/badsecrets.py +0 -0
  79. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/base.py +0 -0
  80. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bevigil.py +0 -0
  81. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/binaryedge.py +0 -0
  82. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_amazon.py +0 -0
  83. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_azure.py +0 -0
  84. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_digitalocean.py +0 -0
  85. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_file_enum.py +0 -0
  86. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_firebase.py +0 -0
  87. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bucket_google.py +0 -0
  88. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bufferoverrun.py +0 -0
  89. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/builtwith.py +0 -0
  90. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/bypass403.py +0 -0
  91. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/c99.py +0 -0
  92. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/censys.py +0 -0
  93. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/certspotter.py +0 -0
  94. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/chaos.py +0 -0
  95. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/code_repository.py +0 -0
  96. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/credshed.py +0 -0
  97. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/crt.py +0 -0
  98. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/crt_db.py +0 -0
  99. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/deadly/medusa.py +0 -0
  100. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dehashed.py +0 -0
  101. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/digitorus.py +0 -0
  102. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnsbimi.py +0 -0
  103. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnsbrute.py +0 -0
  104. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnsbrute_mutations.py +0 -0
  105. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnscaa.py +0 -0
  106. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnscommonsrv.py +0 -0
  107. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnsdumpster.py +0 -0
  108. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dnstlsrpt.py +0 -0
  109. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/docker_pull.py +0 -0
  110. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dockerhub.py +0 -0
  111. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/dotnetnuke.py +0 -0
  112. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/emailformat.py +0 -0
  113. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/extractous.py +0 -0
  114. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ffuf.py +0 -0
  115. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ffuf_shortnames.py +0 -0
  116. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/filedownload.py +0 -0
  117. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/fingerprintx.py +0 -0
  118. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/fullhunt.py +0 -0
  119. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/generic_ssrf.py +0 -0
  120. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/git.py +0 -0
  121. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/git_clone.py +0 -0
  122. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/gitdumper.py +0 -0
  123. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/github_codesearch.py +0 -0
  124. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/github_org.py +0 -0
  125. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/github_usersearch.py +0 -0
  126. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/github_workflows.py +0 -0
  127. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/gitlab.py +0 -0
  128. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/google_playstore.py +0 -0
  129. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/gowitness.py +0 -0
  130. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/hackertarget.py +0 -0
  131. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/host_header.py +0 -0
  132. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/httpx.py +0 -0
  133. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/hunt.py +0 -0
  134. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/hunterio.py +0 -0
  135. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/iis_shortnames.py +0 -0
  136. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/__init__.py +0 -0
  137. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/aggregate.py +0 -0
  138. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/base.py +0 -0
  139. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/cloudcheck.py +0 -0
  140. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/dnsresolve.py +0 -0
  141. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/excavate.py +0 -0
  142. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/speculate.py +0 -0
  143. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/internal/unarchive.py +0 -0
  144. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ip2location.py +0 -0
  145. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ipneighbor.py +0 -0
  146. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ipstack.py +0 -0
  147. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/jadx.py +0 -0
  148. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/leakix.py +0 -0
  149. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/__init__.py +0 -0
  150. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/base.py +0 -0
  151. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/cmdi.py +0 -0
  152. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/crypto.py +0 -0
  153. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/path.py +0 -0
  154. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/lightfuzz/submodules/ssti.py +0 -0
  155. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/myssl.py +0 -0
  156. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/newsletters.py +0 -0
  157. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/ntlm.py +0 -0
  158. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/nuclei.py +0 -0
  159. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/oauth.py +0 -0
  160. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/otx.py +0 -0
  161. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/__init__.py +0 -0
  162. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/asset_inventory.py +0 -0
  163. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/base.py +0 -0
  164. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/csv.py +0 -0
  165. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/discord.py +0 -0
  166. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/emails.py +0 -0
  167. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/http.py +0 -0
  168. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/json.py +0 -0
  169. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/mysql.py +0 -0
  170. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/neo4j.py +0 -0
  171. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/nmap_xml.py +0 -0
  172. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/postgres.py +0 -0
  173. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/python.py +0 -0
  174. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/slack.py +0 -0
  175. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/splunk.py +0 -0
  176. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/sqlite.py +0 -0
  177. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/stdout.py +0 -0
  178. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/subdomains.py +0 -0
  179. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/teams.py +0 -0
  180. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/txt.py +0 -0
  181. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/web_parameters.py +0 -0
  182. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/web_report.py +0 -0
  183. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/output/websocket.py +0 -0
  184. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/paramminer_cookies.py +0 -0
  185. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/paramminer_getparams.py +0 -0
  186. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/paramminer_headers.py +0 -0
  187. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/passivetotal.py +0 -0
  188. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/pgp.py +0 -0
  189. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/portfilter.py +0 -0
  190. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/portscan.py +0 -0
  191. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/postman.py +0 -0
  192. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/postman_download.py +0 -0
  193. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/rapiddns.py +0 -0
  194. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/reflected_parameters.py +0 -0
  195. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/report/affiliates.py +0 -0
  196. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/report/asn.py +0 -0
  197. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/report/base.py +0 -0
  198. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/robots.py +0 -0
  199. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/securitytrails.py +0 -0
  200. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/securitytxt.py +0 -0
  201. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/shodan_dns.py +0 -0
  202. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/shodan_idb.py +0 -0
  203. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/sitedossier.py +0 -0
  204. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/skymem.py +0 -0
  205. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/smuggler.py +0 -0
  206. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/social.py +0 -0
  207. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/sslcert.py +0 -0
  208. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/subdomaincenter.py +0 -0
  209. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/subdomainradar.py +0 -0
  210. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/telerik.py +0 -0
  211. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/bucket.py +0 -0
  212. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/github.py +0 -0
  213. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/postman.py +0 -0
  214. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/shodan.py +0 -0
  215. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/sql.py +0 -0
  216. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/subdomain_enum.py +0 -0
  217. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/templates/webhook.py +0 -0
  218. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/trickest.py +0 -0
  219. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/trufflehog.py +0 -0
  220. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/url_manipulation.py +0 -0
  221. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/urlscan.py +0 -0
  222. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/vhost.py +0 -0
  223. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/viewdns.py +0 -0
  224. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/virustotal.py +0 -0
  225. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/wafw00f.py +0 -0
  226. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/wappalyzer.py +0 -0
  227. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/wayback.py +0 -0
  228. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/wpscan.py +0 -0
  229. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/modules/zoomeye.py +0 -0
  230. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/baddns-intense.yml +0 -0
  231. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/cloud-enum.yml +0 -0
  232. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/code-enum.yml +0 -0
  233. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/email-enum.yml +0 -0
  234. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/fast.yml +0 -0
  235. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/kitchen-sink.yml +0 -0
  236. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/nuclei/nuclei-budget.yml +0 -0
  237. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/nuclei/nuclei-intense.yml +0 -0
  238. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/nuclei/nuclei-technology.yml +0 -0
  239. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/nuclei/nuclei.yml +0 -0
  240. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/spider-intense.yml +0 -0
  241. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/spider.yml +0 -0
  242. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/subdomain-enum.yml +0 -0
  243. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/tech-detect.yml +0 -0
  244. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  245. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/dirbust-light.yml +0 -0
  246. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/dotnet-audit.yml +0 -0
  247. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/iis-shortnames.yml +0 -0
  248. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/lightfuzz-light.yml +0 -0
  249. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/lightfuzz-xss.yml +0 -0
  250. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web/paramminer.yml +0 -0
  251. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web-basic.yml +0 -0
  252. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web-screenshots.yml +0 -0
  253. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/presets/web-thorough.yml +0 -0
  254. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/__init__.py +0 -0
  255. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/dispatcher.py +0 -0
  256. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/manager.py +0 -0
  257. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/__init__.py +0 -0
  258. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/args.py +0 -0
  259. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/conditions.py +0 -0
  260. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/environ.py +0 -0
  261. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/path.py +0 -0
  262. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/preset/preset.py +0 -0
  263. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/scanner.py +0 -0
  264. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/stats.py +0 -0
  265. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scanner/target.py +0 -0
  266. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/scripts/docs.py +0 -0
  267. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/__init__.py +0 -0
  268. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/bbot_fixtures.py +0 -0
  269. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/conftest.py +0 -0
  270. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/coverage.cfg +0 -0
  271. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/fastapi_test.py +0 -0
  272. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/owasp_mastg.apk +0 -0
  273. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/run_tests.sh +0 -0
  274. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test.conf +0 -0
  275. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_output.ndjson +0 -0
  276. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/__init__.py +0 -0
  277. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test__module__tests.py +0 -0
  278. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
  279. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
  280. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_cli.py +0 -0
  281. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_command.py +0 -0
  282. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_config.py +0 -0
  283. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  284. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_dns.py +0 -0
  285. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_docs.py +0 -0
  286. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_engine.py +0 -0
  287. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_event_seeds.py +0 -0
  288. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_events.py +0 -0
  289. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_files.py +0 -0
  290. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_helpers.py +0 -0
  291. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  292. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
  293. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
  294. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_presets.py +0 -0
  295. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_python_api.py +0 -0
  296. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_regexes.py +0 -0
  297. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_scan.py +0 -0
  298. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_scope.py +0 -0
  299. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_target.py +0 -0
  300. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_web.py +0 -0
  301. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_1/test_web_envelopes.py +0 -0
  302. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/__init__.py +0 -0
  303. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  304. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/base.py +0 -0
  305. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  306. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  307. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  308. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
  309. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  310. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  311. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
  312. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
  313. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  314. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
  315. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
  316. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  317. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  318. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
  319. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
  320. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
  321. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
  322. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  323. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  324. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  325. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  326. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  327. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
  328. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  329. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
  330. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  331. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  332. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  333. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  334. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  335. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
  336. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  337. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_crt_db.py +0 -0
  338. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  339. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
  340. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
  341. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  342. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  343. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
  344. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
  345. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  346. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
  347. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
  348. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  349. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
  350. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  351. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  352. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
  353. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  354. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  355. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
  356. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
  357. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  358. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  359. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
  360. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  361. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  362. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  363. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  364. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
  365. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_gitdumper.py +0 -0
  366. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  367. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  368. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_github_usersearch.py +0 -0
  369. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  370. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  371. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  372. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
  373. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  374. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
  375. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
  376. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
  377. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  378. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  379. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  380. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  381. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  382. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  383. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  384. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  385. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
  386. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_medusa.py +0 -0
  387. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
  388. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
  389. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
  390. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
  391. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_nmap_xml.py +0 -0
  392. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
  393. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  394. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
  395. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
  396. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
  397. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
  398. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
  399. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  400. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
  401. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_portfilter.py +0 -0
  402. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
  403. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
  404. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  405. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  406. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  407. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
  408. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_reflected_parameters.py +0 -0
  409. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  410. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  411. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  412. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  413. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_shodan_idb.py +0 -0
  414. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
  415. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  416. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  417. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
  418. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  419. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
  420. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
  421. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
  422. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  423. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  424. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
  425. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  426. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
  427. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  428. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  429. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  430. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
  431. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  432. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_unarchive.py +0 -0
  433. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  434. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  435. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  436. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
  437. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  438. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  439. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  440. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
  441. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_web_parameters.py +0 -0
  442. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  443. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  444. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  445. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  446. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  447. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  448. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/testsslcert.pem +0 -0
  449. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/test/testsslkey.pem +0 -0
  450. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/devops_mutations.txt +0 -0
  451. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  452. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/nameservers.txt +0 -0
  453. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/paramminer_headers.txt +0 -0
  454. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/paramminer_parameters.txt +0 -0
  455. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
  456. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  457. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/valid_url_schemes.txt +0 -0
  458. {bbot-2.4.2.6706rc0 → bbot-2.5.0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bbot
3
- Version: 2.4.2.6706rc0
3
+ Version: 2.5.0
4
4
  Summary: OSINT automation for hackers.
5
5
  License: GPL-3.0
6
6
  Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
@@ -1,5 +1,5 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.4.2.6706rc"
2
+ __version__ = "v2.5.0"
3
3
 
4
4
  from .scanner import Scanner, Preset
5
5
 
@@ -11,7 +11,7 @@ class lightfuzz(BaseModule):
11
11
 
12
12
  options = {
13
13
  "force_common_headers": False,
14
- "enabled_submodules": ["sqli", "cmdi", "xss", "path", "ssti", "crypto", "serial", "nosqli"],
14
+ "enabled_submodules": ["sqli", "cmdi", "xss", "path", "ssti", "crypto", "serial"],
15
15
  "disable_post": False,
16
16
  }
17
17
  options_desc = {
@@ -153,10 +153,20 @@ class serial(BaseLightfuzz):
153
153
  error in response.text for error in general_errors
154
154
  ) # ensure the 200 is not actually an error
155
155
  ):
156
+
157
+ def get_title(text):
158
+ soup = self.lightfuzz.helpers.beautifulsoup(text, "html.parser")
159
+ if soup and soup.title and soup.title.string:
160
+ return f"'{self.lightfuzz.helpers.truncate_string(soup.title.string, 50)}'"
161
+ return ""
162
+
163
+ baseline_title = get_title(payload_baseline.baseline.text)
164
+ probe_title = get_title(response.text)
165
+
156
166
  self.results.append(
157
167
  {
158
168
  "type": "FINDING",
159
- "description": f"POSSIBLE Unsafe Deserialization. {self.metadata()} Technique: [Error Resolution] Serialization Payload: [{type}]",
169
+ "description": f"POSSIBLE Unsafe Deserialization. {self.metadata()} Technique: [Error Resolution (Baseline: [{payload_baseline.baseline.status_code}] {baseline_title} -> Probe: [{status_code}] {probe_title})] Serialization Payload: [{type}]",
160
170
  }
161
171
  )
162
172
  # if the first case doesn't match, we check for a telltale error string like "java.io.optionaldataexception" in the response.
@@ -111,6 +111,7 @@ class sqli(BaseLightfuzz):
111
111
  single_quote[3].status_code != 429
112
112
  and double_single_quote[3].status_code != 429
113
113
  and http_compare.baseline.status_code != 429
114
+ and http_compare.baseline.status_code != 403 # Ensure the baseline status code is not 403
114
115
  ): # prevent false positives from rate limiting
115
116
  # if the code changed in the single quote probe, and the code is NOT the same between that and the double single quote probe, SQL injection is indicated
116
117
  if "code" in single_quote[1] and (
@@ -142,14 +142,14 @@ class xss(BaseLightfuzz):
142
142
  break
143
143
 
144
144
  if in_tag_attribute:
145
- in_tag_attribute_probe = f'{random_string}"'
146
- in_tag_attribute_match = f'{random_string}"'
145
+ in_tag_attribute_probe = f'{random_string}"z'
146
+ in_tag_attribute_match = f'{random_string}"z'
147
147
  await self.check_probe(
148
148
  cookies, in_tag_attribute_probe, in_tag_attribute_match, "Tag Attribute"
149
149
  ) # After reflection in the HTTP response, did the quote survive without url-encoding or other sanitization/escaping?
150
150
 
151
- in_tag_attribute_probe = f'{random_string}"'
152
- in_tag_attribute_match = f'"{random_string}""'
151
+ in_tag_attribute_probe = f'{random_string}"z'
152
+ in_tag_attribute_match = f'"{random_string}""z'
153
153
  await self.check_probe(
154
154
  cookies, in_tag_attribute_probe, in_tag_attribute_match, "Tag Attribute (autoquote)"
155
155
  ) # After reflection in the HTTP response, did the quote survive without url-encoding or other sanitization/escaping (and account for auto-quoting)
@@ -12,5 +12,5 @@ modules:
12
12
  config:
13
13
  modules:
14
14
  lightfuzz:
15
- enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss]
15
+ enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss]
16
16
  disable_post: False
@@ -11,4 +11,4 @@ modules:
11
11
  config:
12
12
  modules:
13
13
  lightfuzz:
14
- enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss]
14
+ enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss]
@@ -8,6 +8,6 @@ config:
8
8
  modules:
9
9
  lightfuzz:
10
10
  force_common_headers: True # Fuzz common headers like X-Forwarded-For even if they're not observed on the target
11
- enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss]
11
+ enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss]
12
12
  excavate:
13
13
  speculate_params: True # speculate potential parameters extracted from JSON/XML web responses
@@ -639,132 +639,6 @@ class Test_Lightfuzz_urlencoding(Test_Lightfuzz_xss_injs):
639
639
  assert xss_finding_emitted, "In Javascript XSS FINDING not emitted"
640
640
 
641
641
 
642
- class Test_Lightfuzz_nosqli_quoteescape(ModuleTestBase):
643
- targets = ["http://127.0.0.1:8888"]
644
- modules_overrides = ["httpx", "lightfuzz", "excavate"]
645
- config_overrides = {
646
- "interactsh_disable": True,
647
- "modules": {
648
- "lightfuzz": {
649
- "enabled_submodules": ["nosqli"],
650
- }
651
- },
652
- }
653
-
654
- def request_handler(self, request):
655
- normal_block = """
656
- <section class="search-filters">
657
- <label>Refine your search:</label>
658
- <a class="filter-category" href="/?category=Pets">Pets</a>
659
- </section>
660
- """
661
-
662
- qs = str(request.query_string.decode())
663
- if "category=" in qs:
664
- value = qs.split("=")[1]
665
- if "&" in value:
666
- value = value.split("&")[0]
667
- if value == "Pets%27":
668
- return Response("JSON ERROR!", status=500)
669
- elif value == "Pets%5C%27":
670
- return Response("No results", status=200)
671
- elif value == "Pets%27%20%26%26%200%20%26%26%20%27x":
672
- return Response("No results", status=200)
673
- elif value == "Pets%27%20%26%26%201%20%26%26%20%27x":
674
- return Response('{"category":"Pets","entries":["dog","cat","bird"]}', status=200)
675
- else:
676
- return Response("No results", status=200)
677
- return Response(normal_block, status=200)
678
-
679
- async def setup_after_prep(self, module_test):
680
- module_test.scan.modules["lightfuzz"].helpers.rand_string = lambda *args, **kwargs: "AAAAAAAAAAAAAA"
681
- expect_args = re.compile("/")
682
- module_test.set_expect_requests_handler(expect_args=expect_args, request_handler=self.request_handler)
683
-
684
- def check(self, module_test, events):
685
- nosqli_finding_emitted = False
686
- finding_count = 0
687
- for e in events:
688
- if e.type == "FINDING":
689
- finding_count += 1
690
- if (
691
- "Possible NoSQL Injection. Parameter: [category] Parameter Type: [GETPARAM] Original Value: [Pets] Detection Method: [Quote/Escaped Quote + Conditional Affect]"
692
- in e.data["description"]
693
- ):
694
- nosqli_finding_emitted = True
695
- assert nosqli_finding_emitted, "NoSQLi FINDING not emitted"
696
- assert finding_count == 1, "Unexpected FINDING events reported"
697
-
698
-
699
- class Test_Lightfuzz_nosqli_negation(Test_Lightfuzz_nosqli_quoteescape):
700
- def request_handler(self, request):
701
- form_block = """
702
- <form method="POST" action="">
703
- <label for="username">Username:</label>
704
- <input type="text" id="username" name="username" required>
705
- <br>
706
- <label for="password">Password:</label>
707
- <input type="password" id="password" name="password" required>
708
- <br>
709
- <button type="submit">Login</button>
710
- </form>
711
- """
712
- if request.method == "GET":
713
- return Response(form_block, status=200)
714
-
715
- if "username[$ne]" in request.form.keys() and "password[$ne]" in request.form.keys():
716
- return Response("Welcome, testuser1!", status=200)
717
- if "username[$eq]" in request.form.keys() and "password[$eq]" in request.form.keys():
718
- return Response("Invalid Username or Password!", status=200)
719
- else:
720
- return Response("Invalid Username or Password!", status=200)
721
-
722
- def check(self, module_test, events):
723
- nosqli_finding_emitted = False
724
- finding_count = 0
725
- for e in events:
726
- if e.type == "FINDING":
727
- finding_count += 1
728
- if (
729
- "Possible NoSQL Injection. Parameter: [password] Parameter Type: [POSTPARAM] Detection Method: [Parameter Name Operator Injection - Negation ([$ne])] Differences: [body]"
730
- in e.data["description"]
731
- ):
732
- nosqli_finding_emitted = True
733
- assert nosqli_finding_emitted, "NoSQLi FINDING not emitted"
734
- assert finding_count == 2, "Unexpected FINDING events reported"
735
-
736
-
737
- class Test_Lightfuzz_nosqli_negation_falsepositive(Test_Lightfuzz_nosqli_quoteescape):
738
- def request_handler(self, request):
739
- form_block = """
740
- <form method="POST" action="">
741
- <label for="username">Username:</label>
742
- <input type="text" id="username" name="username" required>
743
- <br>
744
- <label for="password">Password:</label>
745
- <input type="password" id="password" name="password" required>
746
- <br>
747
- <button type="submit">Login</button>
748
- </form>
749
- """
750
- if request.method == "GET":
751
- return Response(form_block, status=200)
752
-
753
- if "username[$ne]" in request.form.keys() and "password[$ne]" in request.form.keys():
754
- return Response("missing username or password", status=500)
755
- if "username[$eq]" in request.form.keys() and "password[$eq]" in request.form.keys():
756
- return Response("missing username or password", status=500)
757
- else:
758
- return Response("Invalid Username or Password!", status=200)
759
-
760
- def check(self, module_test, events):
761
- finding_count = 0
762
- for e in events:
763
- if e.type == "FINDING":
764
- finding_count += 1
765
- assert finding_count == 0, "False positive FINDING emitted"
766
-
767
-
768
642
  # SQLI Single Quote/Two Single Quote (getparam)
769
643
  class Test_Lightfuzz_sqli(ModuleTestBase):
770
644
  targets = ["http://127.0.0.1:8888"]
@@ -1040,8 +914,6 @@ class Test_Lightfuzz_sqli_cookies(Test_Lightfuzz_sqli):
1040
914
  </html>
1041
915
  """
1042
916
 
1043
- print("@@@@@???")
1044
- print(request.cookies)
1045
917
  if request.cookies.get("test") is not None:
1046
918
  header_value = request.cookies.get("test")
1047
919
 
@@ -1226,7 +1098,7 @@ class Test_Lightfuzz_serial_errorresolution(ModuleTestBase):
1226
1098
  if e.type == "FINDING":
1227
1099
  if (
1228
1100
  e.data["description"]
1229
- == "POSSIBLE Unsafe Deserialization. Parameter: [TextBox1] Parameter Type: [POSTPARAM] Technique: [Error Resolution] Serialization Payload: [dotnet_base64]"
1101
+ == "POSSIBLE Unsafe Deserialization. Parameter: [TextBox1] Parameter Type: [POSTPARAM] Technique: [Error Resolution (Baseline: [500] -> Probe: [200] )] Serialization Payload: [dotnet_base64]"
1230
1102
  ):
1231
1103
  lightfuzz_serial_detect_errorresolution = True
1232
1104
 
@@ -1326,7 +1198,7 @@ class Test_Lightfuzz_serial_errorresolution_existingvalue_valid(Test_Lightfuzz_s
1326
1198
  excavate_detect_serialization_value = True
1327
1199
  if (
1328
1200
  e.data["description"]
1329
- == "POSSIBLE Unsafe Deserialization. Parameter: [TextBox1] Parameter Type: [POSTPARAM] Original Value: [AAEAAAD/////AQAAAAAAAAAGAQAAAAdndXN0YXZvCw==] Technique: [Error Resolution] Serialization Payload: [dotnet_base64]"
1201
+ == "POSSIBLE Unsafe Deserialization. Parameter: [TextBox1] Parameter Type: [POSTPARAM] Original Value: [AAEAAAD/////AQAAAAAAAAAGAQAAAAdndXN0YXZvCw==] Technique: [Error Resolution (Baseline: [500] -> Probe: [200] )] Serialization Payload: [dotnet_base64]"
1330
1202
  ):
1331
1203
  lightfuzz_serial_detect_errorresolution = True
1332
1204
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bbot"
3
- version = "v2.4.2.6706rc"
3
+ version = "v2.5.0"
4
4
  description = "OSINT automation for hackers."
5
5
  authors = [
6
6
  "TheTechromancer",
@@ -109,7 +109,7 @@ lint.ignore = ["E402", "E711", "E713", "E721", "E741", "F403", "F405", "E501"]
109
109
  [tool.poetry-dynamic-versioning]
110
110
  enable = false
111
111
  metadata = false
112
- format-jinja = 'v2.4.2{% if branch == "dev" %}.{{ distance }}rc{% endif %}'
112
+ format-jinja = 'v2.5.0{% if branch == "dev" %}.{{ distance }}rc{% endif %}'
113
113
 
114
114
  [tool.poetry-dynamic-versioning.substitution]
115
115
  files = ["*/__init__.py"]
@@ -1,183 +0,0 @@
1
- from .base import BaseLightfuzz
2
- from bbot.errors import HttpCompareError
3
- import urllib.parse
4
-
5
-
6
- class nosqli(BaseLightfuzz):
7
- """
8
- Detects NoSQL injection vulnerabilities.
9
-
10
- Techniques:
11
-
12
- * Quote Injection Analysis:
13
- - Injects single quotes and escaped single quotes into parameters
14
- - Compares response differences between the two to detect NoSQL parsing
15
- - Uses baseline comparison to validate findings and reduce false positives
16
-
17
- * Operator Injection:
18
- - Tests MongoDB-style operator injection using [$eq] and [$ne]
19
- - Modifies parameter names to include operators
20
- - Detects behavioral changes in application responses
21
-
22
- Validation of findings is achieved using confirmation probes to rule out unstable endpoints
23
- """
24
-
25
- friendly_name = "NoSQL Injection"
26
-
27
- async def fuzz(self):
28
- cookies = self.event.data.get("assigned_cookies", {})
29
- probe_value = self.incoming_probe_value(populate_empty=True)
30
- quote_probe_baseline = None
31
- try:
32
- quote_probe_baseline = self.compare_baseline(
33
- self.event.data["type"], probe_value, cookies, additional_params_populate_empty=True
34
- )
35
- except HttpCompareError as e:
36
- self.verbose(f"Encountered HttpCompareError Sending Compare Baseline: {e}")
37
-
38
- if quote_probe_baseline:
39
- try:
40
- # send the with a single quote, and then another with an escaped single quote
41
- (
42
- single_quote_comparison,
43
- single_quote_diff_reasons,
44
- single_quote_reflection,
45
- single_quote_response,
46
- ) = await self.compare_probe(
47
- quote_probe_baseline,
48
- self.event.data["type"],
49
- f"{probe_value}'",
50
- cookies,
51
- additional_params_populate_empty=True,
52
- )
53
- (
54
- escaped_single_quote_comparison,
55
- escaped_single_quote_diff_reasons,
56
- escaped_single_quote_reflection,
57
- escaped_single_quote_response,
58
- ) = await self.compare_probe(
59
- quote_probe_baseline,
60
- self.event.data["type"],
61
- rf"{probe_value}\'",
62
- cookies,
63
- additional_params_populate_empty=True,
64
- )
65
- if not single_quote_comparison and single_quote_response and escaped_single_quote_response:
66
- # if the single quote probe changed the code or body, and the escaped single quote probe did not cause the same change, injection is possible
67
- if ("code" in single_quote_diff_reasons or "body" in single_quote_diff_reasons) and (
68
- single_quote_diff_reasons != escaped_single_quote_diff_reasons
69
- ):
70
- self.verbose(
71
- "Initial heuristic indicates possible NoSQL Injection, sending confirmation probes"
72
- )
73
- confirm_baseline = self.compare_baseline(
74
- self.event.data["type"],
75
- urllib.parse.quote(f"{probe_value}' && 0 && 'x", safe=""),
76
- cookies,
77
- additional_params_populate_empty=True,
78
- skip_urlencoding=True,
79
- )
80
- (
81
- confirmation_probe_false_comparison,
82
- confirmation_probe_false_diff_reasons,
83
- confirmation_probe_false_reflection,
84
- confirmation_probe_false_response,
85
- ) = await self.compare_probe(
86
- confirm_baseline,
87
- self.event.data["type"],
88
- urllib.parse.quote(f"{probe_value}' && 1 && 'x", safe=""),
89
- cookies,
90
- additional_params_populate_empty=True,
91
- skip_urlencoding=True,
92
- )
93
- if confirmation_probe_false_response:
94
- if not confirmation_probe_false_comparison and confirmation_probe_false_diff_reasons != [
95
- "header"
96
- ]:
97
- (
98
- final_confirm_comparison,
99
- final_confirm_diff_reasons,
100
- final_confirm_reflection,
101
- final_confirm_response,
102
- ) = await self.compare_probe(
103
- confirm_baseline,
104
- self.event.data["type"],
105
- urllib.parse.quote(f"{probe_value}' && 0 && 'x", safe=""),
106
- cookies,
107
- additional_params_populate_empty=True,
108
- skip_urlencoding=True,
109
- )
110
-
111
- if final_confirm_response and final_confirm_comparison:
112
- self.results.append(
113
- {
114
- "type": "FINDING",
115
- "description": f"Possible NoSQL Injection. {self.metadata()} Detection Method: [Quote/Escaped Quote + Conditional Affect] Differences: [{'.'.join(confirmation_probe_false_diff_reasons)}]",
116
- }
117
- )
118
- else:
119
- self.verbose(
120
- "Aborted reporting Possible NoSQL Injection, due to unstable/inconsistent responses"
121
- )
122
-
123
- except HttpCompareError as e:
124
- self.verbose(f"Encountered HttpCompareError Sending Compare Probe: {e}")
125
-
126
- # Comparison operator injection
127
- if self.event.data["type"] in ["POSTPARAM", "GETPARAM"]:
128
- nosqli_negation_baseline = None
129
-
130
- try:
131
- nosqli_negation_baseline = self.compare_baseline(
132
- self.event.data["type"],
133
- f"{probe_value}'",
134
- cookies,
135
- additional_params_populate_empty=True,
136
- parameter_name_suffix="[$eq]",
137
- parameter_name_suffix_additional_params="[$eq]",
138
- )
139
- except HttpCompareError as e:
140
- self.verbose(f"Encountered HttpCompareError Sending Compare Baseline: {e}")
141
-
142
- if nosqli_negation_baseline:
143
- try:
144
- (
145
- nosqli_negate_comparison,
146
- nosqli_negate_diff_reasons,
147
- nosqli_negate_reflection,
148
- nosqli_negate_response,
149
- ) = await self.compare_probe(
150
- nosqli_negation_baseline,
151
- self.event.data["type"],
152
- f"{probe_value}'",
153
- cookies,
154
- additional_params_populate_empty=True,
155
- parameter_name_suffix="[$ne]",
156
- parameter_name_suffix_additional_params="[$ne]",
157
- )
158
- if nosqli_negate_response:
159
- if not nosqli_negate_comparison and nosqli_negate_diff_reasons != ["header"]:
160
- # If we are about to report a finding, rule out a false positive from unstable URL by sending another probe with the baseline values, and ensure those dont also come back as different
161
- (
162
- nosqli_negate_comfirm_comparison,
163
- nosqli_negate_confirm_diff_reasons,
164
- nosqli_negate_confirm_reflection,
165
- nosqli_negate_confirm_response,
166
- ) = await self.compare_probe(
167
- nosqli_negation_baseline,
168
- self.event.data["type"],
169
- f"{probe_value}'",
170
- cookies,
171
- additional_params_populate_empty=True,
172
- parameter_name_suffix="[$eq]",
173
- parameter_name_suffix_additional_params="[$eq]",
174
- )
175
- if nosqli_negate_comfirm_comparison:
176
- self.results.append(
177
- {
178
- "type": "FINDING",
179
- "description": f"Possible NoSQL Injection. {self.metadata()} Detection Method: [Parameter Name Operator Injection - Negation ([$ne])] Differences: [{'.'.join(nosqli_negate_diff_reasons)}]",
180
- }
181
- )
182
- except HttpCompareError as e:
183
- self.verbose(f"Encountered HttpCompareError Sending Compare Probe: {e}")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes