pwn 0.4.333

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.
Files changed (904) hide show
  1. checksums.yaml +7 -0
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  4. data/.gitignore +62 -0
  5. data/.rubocop.yml +12 -0
  6. data/.rubocop_todo.yml +76 -0
  7. data/.ruby-gemset +1 -0
  8. data/.ruby-version +1 -0
  9. data/.travis.yml +24 -0
  10. data/CODE_OF_CONDUCT.md +46 -0
  11. data/CONTRIBUTING.md +10 -0
  12. data/Gemfile +75 -0
  13. data/LICENSE.txt +22 -0
  14. data/README.md +125 -0
  15. data/Rakefile +20 -0
  16. data/Vagrantfile +250 -0
  17. data/bin/pwn +74 -0
  18. data/bin/pwn_android_war_dialer +137 -0
  19. data/bin/pwn_arachni +132 -0
  20. data/bin/pwn_arachni_rest +174 -0
  21. data/bin/pwn_autoinc_version +50 -0
  22. data/bin/pwn_aws_describe_resources +728 -0
  23. data/bin/pwn_burp_suite_pro_active_scan +113 -0
  24. data/bin/pwn_char_base64_encoding +24 -0
  25. data/bin/pwn_char_dec_encoding +23 -0
  26. data/bin/pwn_char_hex_escaped_encoding +26 -0
  27. data/bin/pwn_char_html_entity_encoding +24 -0
  28. data/bin/pwn_char_unicode_escaped_encoding +23 -0
  29. data/bin/pwn_char_url_encoding +24 -0
  30. data/bin/pwn_defectdojo_engagement_create +158 -0
  31. data/bin/pwn_defectdojo_importscan +104 -0
  32. data/bin/pwn_defectdojo_reimportscan +104 -0
  33. data/bin/pwn_domain_reversewhois +89 -0
  34. data/bin/pwn_fuzz_net_app_proto +149 -0
  35. data/bin/pwn_ibm_appscan_enterprise +112 -0
  36. data/bin/pwn_jenkins_create_job +68 -0
  37. data/bin/pwn_jenkins_create_view +68 -0
  38. data/bin/pwn_jenkins_install_plugin +91 -0
  39. data/bin/pwn_jenkins_thinBackup_aws_s3 +123 -0
  40. data/bin/pwn_jenkins_update_plugins +87 -0
  41. data/bin/pwn_jenkins_useradd +86 -0
  42. data/bin/pwn_mail_agent +127 -0
  43. data/bin/pwn_msf_postgres_login +28 -0
  44. data/bin/pwn_nessus_cloud_vulnscan +103 -0
  45. data/bin/pwn_nexpose +52 -0
  46. data/bin/pwn_openvas_vulnscan +102 -0
  47. data/bin/pwn_owasp_zap_active_scan +134 -0
  48. data/bin/pwn_pastebin_sample_filter +61 -0
  49. data/bin/pwn_perimeter_recon +318 -0
  50. data/bin/pwn_sast +161 -0
  51. data/bin/pwn_serial_check_voicemail +66 -0
  52. data/bin/pwn_serial_qualcomm_commands +16 -0
  53. data/bin/pwn_simple_http_server +46 -0
  54. data/bin/pwn_web_cache_deception +233 -0
  55. data/bin/pwn_www_checkip +62 -0
  56. data/bin/pwn_xss_dom_vectors +169 -0
  57. data/build_pwn_gem.sh +33 -0
  58. data/documentation/CSI_Contributors_and_Users.png +0 -0
  59. data/documentation/CSI_Driver_Arch.png +0 -0
  60. data/documentation/fax-spectrogram.png +0 -0
  61. data/documentation/fax-waveform.png +0 -0
  62. data/documentation/pwn_android_war_dialer_session.png +0 -0
  63. data/documentation/pwn_wallpaper.jpg +0 -0
  64. data/documentation/ringing-spectrogram.png +0 -0
  65. data/documentation/ringing-waveform.png +0 -0
  66. data/etc/systemd/msfrpcd.service +12 -0
  67. data/etc/systemd/openvas.service +14 -0
  68. data/etc/userland/aws/apache2/jenkins_443.conf +90 -0
  69. data/etc/userland/aws/apache2/jenkins_80.conf +7 -0
  70. data/etc/userland/aws/apache2/openvas_443.conf +87 -0
  71. data/etc/userland/aws/apache2/openvas_80.conf +7 -0
  72. data/etc/userland/aws/apache2/sast_443.conf +87 -0
  73. data/etc/userland/aws/apache2/sast_80.conf +9 -0
  74. data/etc/userland/aws/apache2/vagrant.yaml.EXAMPLE +9 -0
  75. data/etc/userland/aws/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  76. data/etc/userland/aws/arachni/navigation.instruct.EXAMPLE +3 -0
  77. data/etc/userland/aws/burpsuite/navigation.instruct.EXAMPLE +3 -0
  78. data/etc/userland/aws/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  79. data/etc/userland/aws/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  80. data/etc/userland/aws/jenkins/inject_build_envs.sh +15 -0
  81. data/etc/userland/aws/jenkins/jenkins +81 -0
  82. data/etc/userland/aws/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  83. data/etc/userland/aws/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  84. data/etc/userland/aws/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  85. data/etc/userland/aws/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  86. data/etc/userland/aws/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  87. data/etc/userland/aws/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  88. data/etc/userland/aws/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  89. data/etc/userland/aws/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  90. data/etc/userland/aws/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  91. data/etc/userland/aws/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  92. data/etc/userland/aws/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  93. data/etc/userland/aws/jenkins/jobs/selfupdate-gem.xml +42 -0
  94. data/etc/userland/aws/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  95. data/etc/userland/aws/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  96. data/etc/userland/aws/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  97. data/etc/userland/aws/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  98. data/etc/userland/aws/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  99. data/etc/userland/aws/jenkins/jobs/selfupdate-os.xml +42 -0
  100. data/etc/userland/aws/jenkins/jobs/selfupdate-pwn.xml +42 -0
  101. data/etc/userland/aws/jenkins/jobs/selfupdate-rvm.xml +42 -0
  102. data/etc/userland/aws/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  103. data/etc/userland/aws/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  104. data/etc/userland/aws/jenkins/jobs_userland/.gitkeep +0 -0
  105. data/etc/userland/aws/jenkins/log_parser_rules/arachni.rules +5 -0
  106. data/etc/userland/aws/jenkins/log_parser_rules/sast.rules +2 -0
  107. data/etc/userland/aws/jenkins/log_parser_rules/self_update.rules +14 -0
  108. data/etc/userland/aws/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  109. data/etc/userland/aws/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  110. data/etc/userland/aws/jenkins/log_parser_rules/wpscan.rules +2 -0
  111. data/etc/userland/aws/jenkins/vagrant.yaml.EXAMPLE +8 -0
  112. data/etc/userland/aws/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  113. data/etc/userland/aws/metasploit/vagrant.yaml.EXAMPLE +4 -0
  114. data/etc/userland/aws/nessus/vagrant.yaml.EXAMPLE +2 -0
  115. data/etc/userland/aws/openvas/vagrant.yaml.EXAMPLE +2 -0
  116. data/etc/userland/aws/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  117. data/etc/userland/aws/postgres/vagrant.yaml.EXAMPLE +2 -0
  118. data/etc/userland/aws/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  119. data/etc/userland/aws/vagrant.yaml.EXAMPLE +35 -0
  120. data/etc/userland/docker/apache2/jenkins_443.conf +90 -0
  121. data/etc/userland/docker/apache2/jenkins_80.conf +7 -0
  122. data/etc/userland/docker/apache2/openvas_443.conf +87 -0
  123. data/etc/userland/docker/apache2/openvas_80.conf +7 -0
  124. data/etc/userland/docker/apache2/sast_443.conf +87 -0
  125. data/etc/userland/docker/apache2/sast_80.conf +9 -0
  126. data/etc/userland/docker/apache2/vagrant.yaml.EXAMPLE +9 -0
  127. data/etc/userland/docker/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  128. data/etc/userland/docker/arachni/navigation.instruct.EXAMPLE +3 -0
  129. data/etc/userland/docker/burpsuite/navigation.instruct.EXAMPLE +3 -0
  130. data/etc/userland/docker/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  131. data/etc/userland/docker/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  132. data/etc/userland/docker/jenkins/inject_build_envs.sh +15 -0
  133. data/etc/userland/docker/jenkins/jenkins +81 -0
  134. data/etc/userland/docker/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  135. data/etc/userland/docker/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  136. data/etc/userland/docker/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  137. data/etc/userland/docker/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  138. data/etc/userland/docker/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  139. data/etc/userland/docker/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  140. data/etc/userland/docker/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  141. data/etc/userland/docker/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  142. data/etc/userland/docker/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  143. data/etc/userland/docker/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  144. data/etc/userland/docker/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  145. data/etc/userland/docker/jenkins/jobs/selfupdate-gem.xml +42 -0
  146. data/etc/userland/docker/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  147. data/etc/userland/docker/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  148. data/etc/userland/docker/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  149. data/etc/userland/docker/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  150. data/etc/userland/docker/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  151. data/etc/userland/docker/jenkins/jobs/selfupdate-os.xml +42 -0
  152. data/etc/userland/docker/jenkins/jobs/selfupdate-pwn.xml +42 -0
  153. data/etc/userland/docker/jenkins/jobs/selfupdate-rvm.xml +42 -0
  154. data/etc/userland/docker/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  155. data/etc/userland/docker/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  156. data/etc/userland/docker/jenkins/jobs_userland/.gitkeep +0 -0
  157. data/etc/userland/docker/jenkins/log_parser_rules/arachni.rules +5 -0
  158. data/etc/userland/docker/jenkins/log_parser_rules/sast.rules +2 -0
  159. data/etc/userland/docker/jenkins/log_parser_rules/self_update.rules +14 -0
  160. data/etc/userland/docker/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  161. data/etc/userland/docker/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  162. data/etc/userland/docker/jenkins/log_parser_rules/wpscan.rules +2 -0
  163. data/etc/userland/docker/jenkins/vagrant.yaml.EXAMPLE +8 -0
  164. data/etc/userland/docker/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  165. data/etc/userland/docker/metasploit/vagrant.yaml.EXAMPLE +4 -0
  166. data/etc/userland/docker/nessus/vagrant.yaml.EXAMPLE +2 -0
  167. data/etc/userland/docker/openvas/vagrant.yaml.EXAMPLE +2 -0
  168. data/etc/userland/docker/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  169. data/etc/userland/docker/postgres/vagrant.yaml.EXAMPLE +2 -0
  170. data/etc/userland/docker/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  171. data/etc/userland/qemu/apache2/jenkins_443.conf +90 -0
  172. data/etc/userland/qemu/apache2/jenkins_80.conf +7 -0
  173. data/etc/userland/qemu/apache2/openvas_443.conf +87 -0
  174. data/etc/userland/qemu/apache2/openvas_80.conf +7 -0
  175. data/etc/userland/qemu/apache2/sast_443.conf +87 -0
  176. data/etc/userland/qemu/apache2/sast_80.conf +9 -0
  177. data/etc/userland/qemu/apache2/vagrant.yaml.EXAMPLE +9 -0
  178. data/etc/userland/qemu/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  179. data/etc/userland/qemu/arachni/navigation.instruct.EXAMPLE +3 -0
  180. data/etc/userland/qemu/burpsuite/navigation.instruct.EXAMPLE +3 -0
  181. data/etc/userland/qemu/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  182. data/etc/userland/qemu/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  183. data/etc/userland/qemu/jenkins/inject_build_envs.sh +15 -0
  184. data/etc/userland/qemu/jenkins/jenkins +81 -0
  185. data/etc/userland/qemu/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  186. data/etc/userland/qemu/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  187. data/etc/userland/qemu/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  188. data/etc/userland/qemu/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  189. data/etc/userland/qemu/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  190. data/etc/userland/qemu/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  191. data/etc/userland/qemu/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  192. data/etc/userland/qemu/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  193. data/etc/userland/qemu/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  194. data/etc/userland/qemu/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  195. data/etc/userland/qemu/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  196. data/etc/userland/qemu/jenkins/jobs/selfupdate-gem.xml +42 -0
  197. data/etc/userland/qemu/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  198. data/etc/userland/qemu/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  199. data/etc/userland/qemu/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  200. data/etc/userland/qemu/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  201. data/etc/userland/qemu/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  202. data/etc/userland/qemu/jenkins/jobs/selfupdate-os.xml +42 -0
  203. data/etc/userland/qemu/jenkins/jobs/selfupdate-pwn.xml +42 -0
  204. data/etc/userland/qemu/jenkins/jobs/selfupdate-rvm.xml +42 -0
  205. data/etc/userland/qemu/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  206. data/etc/userland/qemu/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  207. data/etc/userland/qemu/jenkins/jobs_userland/.gitkeep +0 -0
  208. data/etc/userland/qemu/jenkins/log_parser_rules/arachni.rules +5 -0
  209. data/etc/userland/qemu/jenkins/log_parser_rules/sast.rules +2 -0
  210. data/etc/userland/qemu/jenkins/log_parser_rules/self_update.rules +14 -0
  211. data/etc/userland/qemu/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  212. data/etc/userland/qemu/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  213. data/etc/userland/qemu/jenkins/log_parser_rules/wpscan.rules +2 -0
  214. data/etc/userland/qemu/jenkins/vagrant.yaml.EXAMPLE +8 -0
  215. data/etc/userland/qemu/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  216. data/etc/userland/qemu/metasploit/vagrant.yaml.EXAMPLE +4 -0
  217. data/etc/userland/qemu/nessus/vagrant.yaml.EXAMPLE +2 -0
  218. data/etc/userland/qemu/openvas/vagrant.yaml.EXAMPLE +2 -0
  219. data/etc/userland/qemu/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  220. data/etc/userland/qemu/postgres/vagrant.yaml.EXAMPLE +2 -0
  221. data/etc/userland/qemu/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  222. data/etc/userland/ruby-gem/apache2/jenkins_443.conf +90 -0
  223. data/etc/userland/ruby-gem/apache2/jenkins_80.conf +7 -0
  224. data/etc/userland/ruby-gem/apache2/openvas_443.conf +87 -0
  225. data/etc/userland/ruby-gem/apache2/openvas_80.conf +7 -0
  226. data/etc/userland/ruby-gem/apache2/sast_443.conf +87 -0
  227. data/etc/userland/ruby-gem/apache2/sast_80.conf +9 -0
  228. data/etc/userland/ruby-gem/apache2/vagrant.yaml.EXAMPLE +9 -0
  229. data/etc/userland/ruby-gem/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  230. data/etc/userland/ruby-gem/arachni/navigation.instruct.EXAMPLE +3 -0
  231. data/etc/userland/ruby-gem/burpsuite/navigation.instruct.EXAMPLE +3 -0
  232. data/etc/userland/ruby-gem/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  233. data/etc/userland/ruby-gem/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  234. data/etc/userland/ruby-gem/jenkins/inject_build_envs.sh +15 -0
  235. data/etc/userland/ruby-gem/jenkins/jenkins +81 -0
  236. data/etc/userland/ruby-gem/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  237. data/etc/userland/ruby-gem/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  238. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  239. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  240. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  241. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  242. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  243. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  244. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  245. data/etc/userland/ruby-gem/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  246. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  247. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-gem.xml +42 -0
  248. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  249. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  250. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  251. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  252. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  253. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-os.xml +42 -0
  254. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-pwn.xml +42 -0
  255. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-rvm.xml +42 -0
  256. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  257. data/etc/userland/ruby-gem/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  258. data/etc/userland/ruby-gem/jenkins/jobs_userland/.gitkeep +0 -0
  259. data/etc/userland/ruby-gem/jenkins/log_parser_rules/arachni.rules +5 -0
  260. data/etc/userland/ruby-gem/jenkins/log_parser_rules/sast.rules +2 -0
  261. data/etc/userland/ruby-gem/jenkins/log_parser_rules/self_update.rules +14 -0
  262. data/etc/userland/ruby-gem/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  263. data/etc/userland/ruby-gem/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  264. data/etc/userland/ruby-gem/jenkins/log_parser_rules/wpscan.rules +2 -0
  265. data/etc/userland/ruby-gem/jenkins/vagrant.yaml.EXAMPLE +8 -0
  266. data/etc/userland/ruby-gem/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  267. data/etc/userland/ruby-gem/metasploit/vagrant.yaml.EXAMPLE +4 -0
  268. data/etc/userland/ruby-gem/nessus/vagrant.yaml.EXAMPLE +2 -0
  269. data/etc/userland/ruby-gem/openvas/vagrant.yaml.EXAMPLE +2 -0
  270. data/etc/userland/ruby-gem/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  271. data/etc/userland/ruby-gem/postgres/vagrant.yaml.EXAMPLE +2 -0
  272. data/etc/userland/ruby-gem/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  273. data/etc/userland/virtualbox/apache2/jenkins_443.conf +90 -0
  274. data/etc/userland/virtualbox/apache2/jenkins_80.conf +7 -0
  275. data/etc/userland/virtualbox/apache2/openvas_443.conf +87 -0
  276. data/etc/userland/virtualbox/apache2/openvas_80.conf +7 -0
  277. data/etc/userland/virtualbox/apache2/sast_443.conf +87 -0
  278. data/etc/userland/virtualbox/apache2/sast_80.conf +9 -0
  279. data/etc/userland/virtualbox/apache2/vagrant.yaml.EXAMPLE +9 -0
  280. data/etc/userland/virtualbox/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  281. data/etc/userland/virtualbox/arachni/navigation.instruct.EXAMPLE +3 -0
  282. data/etc/userland/virtualbox/burpsuite/navigation.instruct.EXAMPLE +3 -0
  283. data/etc/userland/virtualbox/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  284. data/etc/userland/virtualbox/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  285. data/etc/userland/virtualbox/jenkins/inject_build_envs.sh +15 -0
  286. data/etc/userland/virtualbox/jenkins/jenkins +81 -0
  287. data/etc/userland/virtualbox/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  288. data/etc/userland/virtualbox/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  289. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  290. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  291. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  292. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  293. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  294. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  295. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  296. data/etc/userland/virtualbox/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  297. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  298. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-gem.xml +42 -0
  299. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  300. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  301. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  302. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  303. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  304. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-os.xml +42 -0
  305. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-pwn.xml +42 -0
  306. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-rvm.xml +42 -0
  307. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  308. data/etc/userland/virtualbox/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  309. data/etc/userland/virtualbox/jenkins/jobs_userland/.gitkeep +0 -0
  310. data/etc/userland/virtualbox/jenkins/log_parser_rules/arachni.rules +5 -0
  311. data/etc/userland/virtualbox/jenkins/log_parser_rules/sast.rules +2 -0
  312. data/etc/userland/virtualbox/jenkins/log_parser_rules/self_update.rules +14 -0
  313. data/etc/userland/virtualbox/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  314. data/etc/userland/virtualbox/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  315. data/etc/userland/virtualbox/jenkins/log_parser_rules/wpscan.rules +2 -0
  316. data/etc/userland/virtualbox/jenkins/vagrant.yaml.EXAMPLE +8 -0
  317. data/etc/userland/virtualbox/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  318. data/etc/userland/virtualbox/metasploit/vagrant.yaml.EXAMPLE +4 -0
  319. data/etc/userland/virtualbox/nessus/vagrant.yaml.EXAMPLE +2 -0
  320. data/etc/userland/virtualbox/openvas/vagrant.yaml.EXAMPLE +2 -0
  321. data/etc/userland/virtualbox/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  322. data/etc/userland/virtualbox/postgres/vagrant.yaml.EXAMPLE +2 -0
  323. data/etc/userland/virtualbox/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  324. data/etc/userland/virtualbox/vagrant.yaml.EXAMPLE +4 -0
  325. data/etc/userland/vmware/apache2/jenkins_443.conf +90 -0
  326. data/etc/userland/vmware/apache2/jenkins_80.conf +7 -0
  327. data/etc/userland/vmware/apache2/openvas_443.conf +87 -0
  328. data/etc/userland/vmware/apache2/openvas_80.conf +7 -0
  329. data/etc/userland/vmware/apache2/sast_443.conf +87 -0
  330. data/etc/userland/vmware/apache2/sast_80.conf +9 -0
  331. data/etc/userland/vmware/apache2/vagrant.yaml.EXAMPLE +9 -0
  332. data/etc/userland/vmware/arachni/navigation-REST.instruct.EXAMPLE +29 -0
  333. data/etc/userland/vmware/arachni/navigation.instruct.EXAMPLE +3 -0
  334. data/etc/userland/vmware/burpsuite/navigation.instruct.EXAMPLE +3 -0
  335. data/etc/userland/vmware/burpsuite/vagrant.yaml.EXAMPLE +2 -0
  336. data/etc/userland/vmware/defectdojo/vagrant.yaml.EXAMPLE +3 -0
  337. data/etc/userland/vmware/jenkins/inject_build_envs.sh +15 -0
  338. data/etc/userland/vmware/jenkins/jenkins +81 -0
  339. data/etc/userland/vmware/jenkins/jobs/pipeline-pwntemplate.xml +298 -0
  340. data/etc/userland/vmware/jenkins/jobs/pipeline-selfupdate.xml +462 -0
  341. data/etc/userland/vmware/jenkins/jobs/pwntemplate-DOMAIN-arachni.xml +35 -0
  342. data/etc/userland/vmware/jenkins/jobs/pwntemplate-DOMAIN-burpsuite.xml +44 -0
  343. data/etc/userland/vmware/jenkins/jobs/pwntemplate-DOMAIN-owasp_zap.xml +35 -0
  344. data/etc/userland/vmware/jenkins/jobs/pwntemplate-DOMAIN-ssllabs-scan.xml +45 -0
  345. data/etc/userland/vmware/jenkins/jobs/pwntemplate-GITREPO_BRANCH-sast.xml +71 -0
  346. data/etc/userland/vmware/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_discovery_scan_tcp_udp_65k.xml +56 -0
  347. data/etc/userland/vmware/jenkins/jobs/pwntemplate-NETWORKRANGE-nmap_xml_results_searchsploit.xml +59 -0
  348. data/etc/userland/vmware/jenkins/jobs/pwntemplate-NETWORKRANGE-openvas.xml +45 -0
  349. data/etc/userland/vmware/jenkins/jobs/selfupdate-exploit-db.xml +43 -0
  350. data/etc/userland/vmware/jenkins/jobs/selfupdate-gem.xml +42 -0
  351. data/etc/userland/vmware/jenkins/jobs/selfupdate-jenkins_plugins.xml +42 -0
  352. data/etc/userland/vmware/jenkins/jobs/selfupdate-metasploit.xml +42 -0
  353. data/etc/userland/vmware/jenkins/jobs/selfupdate-nmap_all_live_hosts.xml +42 -0
  354. data/etc/userland/vmware/jenkins/jobs/selfupdate-openvas_sync.xml +42 -0
  355. data/etc/userland/vmware/jenkins/jobs/selfupdate-openvas_wrappers.xml +42 -0
  356. data/etc/userland/vmware/jenkins/jobs/selfupdate-os.xml +42 -0
  357. data/etc/userland/vmware/jenkins/jobs/selfupdate-pwn.xml +42 -0
  358. data/etc/userland/vmware/jenkins/jobs/selfupdate-rvm.xml +42 -0
  359. data/etc/userland/vmware/jenkins/jobs/selfupdate-ssllabs-scan.xml +42 -0
  360. data/etc/userland/vmware/jenkins/jobs/selfupdate-wpscan.xml +42 -0
  361. data/etc/userland/vmware/jenkins/jobs_userland/.gitkeep +0 -0
  362. data/etc/userland/vmware/jenkins/log_parser_rules/arachni.rules +5 -0
  363. data/etc/userland/vmware/jenkins/log_parser_rules/sast.rules +2 -0
  364. data/etc/userland/vmware/jenkins/log_parser_rules/self_update.rules +14 -0
  365. data/etc/userland/vmware/jenkins/log_parser_rules/ssllabs-scan.rules +8 -0
  366. data/etc/userland/vmware/jenkins/log_parser_rules/system_maintenance.rules +9 -0
  367. data/etc/userland/vmware/jenkins/log_parser_rules/wpscan.rules +2 -0
  368. data/etc/userland/vmware/jenkins/vagrant.yaml.EXAMPLE +8 -0
  369. data/etc/userland/vmware/letsencrypt/vagrant.yaml.EXAMPLE +5 -0
  370. data/etc/userland/vmware/metasploit/vagrant.yaml.EXAMPLE +4 -0
  371. data/etc/userland/vmware/nessus/vagrant.yaml.EXAMPLE +2 -0
  372. data/etc/userland/vmware/openvas/vagrant.yaml.EXAMPLE +2 -0
  373. data/etc/userland/vmware/owasp_zap/navigation.instruct.EXAMPLE +3 -0
  374. data/etc/userland/vmware/postgres/vagrant.yaml.EXAMPLE +2 -0
  375. data/etc/userland/vmware/recon-ng/vagrant.yaml.EXAMPLE +52 -0
  376. data/etc/userland/vmware/vagrant.yaml.EXAMPLE +5 -0
  377. data/find_latest_gem_versions_per_Gemfile.sh +11 -0
  378. data/git_commit_test_reinit_gem.sh +22 -0
  379. data/install.sh +180 -0
  380. data/lib/pwn/aws/acm.rb +92 -0
  381. data/lib/pwn/aws/api_gateway.rb +92 -0
  382. data/lib/pwn/aws/app_stream.rb +92 -0
  383. data/lib/pwn/aws/application_auto_scaling.rb +92 -0
  384. data/lib/pwn/aws/application_discovery_service.rb +92 -0
  385. data/lib/pwn/aws/auto_scaling.rb +92 -0
  386. data/lib/pwn/aws/batch.rb +92 -0
  387. data/lib/pwn/aws/budgets.rb +92 -0
  388. data/lib/pwn/aws/cloud_formation.rb +92 -0
  389. data/lib/pwn/aws/cloud_front.rb +92 -0
  390. data/lib/pwn/aws/cloud_hsm.rb +92 -0
  391. data/lib/pwn/aws/cloud_search.rb +92 -0
  392. data/lib/pwn/aws/cloud_search_domain.rb +92 -0
  393. data/lib/pwn/aws/cloud_trail.rb +92 -0
  394. data/lib/pwn/aws/cloud_watch.rb +92 -0
  395. data/lib/pwn/aws/cloud_watch_events.rb +92 -0
  396. data/lib/pwn/aws/cloud_watch_logs.rb +92 -0
  397. data/lib/pwn/aws/code_build.rb +92 -0
  398. data/lib/pwn/aws/code_commit.rb +92 -0
  399. data/lib/pwn/aws/code_deploy.rb +92 -0
  400. data/lib/pwn/aws/code_pipeline.rb +92 -0
  401. data/lib/pwn/aws/cognito_identity.rb +92 -0
  402. data/lib/pwn/aws/cognito_identity_provider.rb +92 -0
  403. data/lib/pwn/aws/cognito_sync.rb +92 -0
  404. data/lib/pwn/aws/config_service.rb +92 -0
  405. data/lib/pwn/aws/data_pipleline.rb +92 -0
  406. data/lib/pwn/aws/database_migration_service.rb +92 -0
  407. data/lib/pwn/aws/device_farm.rb +92 -0
  408. data/lib/pwn/aws/direct_connect.rb +92 -0
  409. data/lib/pwn/aws/directory_service.rb +92 -0
  410. data/lib/pwn/aws/dynamo_db.rb +92 -0
  411. data/lib/pwn/aws/dynamo_db_streams.rb +92 -0
  412. data/lib/pwn/aws/ec2.rb +92 -0
  413. data/lib/pwn/aws/ecr.rb +92 -0
  414. data/lib/pwn/aws/ecs.rb +92 -0
  415. data/lib/pwn/aws/efs.rb +92 -0
  416. data/lib/pwn/aws/elasti_cache.rb +92 -0
  417. data/lib/pwn/aws/elastic_beanstalk.rb +89 -0
  418. data/lib/pwn/aws/elastic_load_balancing.rb +92 -0
  419. data/lib/pwn/aws/elastic_load_balancing_v2.rb +92 -0
  420. data/lib/pwn/aws/elastic_transcoder.rb +92 -0
  421. data/lib/pwn/aws/elasticsearch_service.rb +92 -0
  422. data/lib/pwn/aws/emr.rb +92 -0
  423. data/lib/pwn/aws/firehose.rb +92 -0
  424. data/lib/pwn/aws/game_lift.rb +92 -0
  425. data/lib/pwn/aws/glacier.rb +92 -0
  426. data/lib/pwn/aws/health.rb +92 -0
  427. data/lib/pwn/aws/iam.rb +92 -0
  428. data/lib/pwn/aws/import_export.rb +92 -0
  429. data/lib/pwn/aws/inspector.rb +92 -0
  430. data/lib/pwn/aws/iot.rb +92 -0
  431. data/lib/pwn/aws/iot_data_plane.rb +92 -0
  432. data/lib/pwn/aws/kinesis.rb +92 -0
  433. data/lib/pwn/aws/kinesis_analytics.rb +92 -0
  434. data/lib/pwn/aws/kms.rb +92 -0
  435. data/lib/pwn/aws/lambda.rb +92 -0
  436. data/lib/pwn/aws/lambda_preview.rb +92 -0
  437. data/lib/pwn/aws/lex.rb +92 -0
  438. data/lib/pwn/aws/lightsail.rb +92 -0
  439. data/lib/pwn/aws/machine_learning.rb +92 -0
  440. data/lib/pwn/aws/marketplace_commerce_analytics.rb +92 -0
  441. data/lib/pwn/aws/marketplace_metering.rb +92 -0
  442. data/lib/pwn/aws/ops_works.rb +92 -0
  443. data/lib/pwn/aws/ops_works_cm.rb +92 -0
  444. data/lib/pwn/aws/pinpoint.rb +92 -0
  445. data/lib/pwn/aws/polly.rb +92 -0
  446. data/lib/pwn/aws/rds.rb +92 -0
  447. data/lib/pwn/aws/redshift.rb +92 -0
  448. data/lib/pwn/aws/rekognition.rb +92 -0
  449. data/lib/pwn/aws/route53.rb +92 -0
  450. data/lib/pwn/aws/route53_domains.rb +92 -0
  451. data/lib/pwn/aws/s3.rb +92 -0
  452. data/lib/pwn/aws/service_catalog.rb +92 -0
  453. data/lib/pwn/aws/ses.rb +92 -0
  454. data/lib/pwn/aws/shield.rb +92 -0
  455. data/lib/pwn/aws/simple_db.rb +92 -0
  456. data/lib/pwn/aws/sms.rb +92 -0
  457. data/lib/pwn/aws/snowball.rb +92 -0
  458. data/lib/pwn/aws/sns.rb +92 -0
  459. data/lib/pwn/aws/sqs.rb +92 -0
  460. data/lib/pwn/aws/ssm.rb +92 -0
  461. data/lib/pwn/aws/states.rb +92 -0
  462. data/lib/pwn/aws/storage_gateway.rb +92 -0
  463. data/lib/pwn/aws/sts.rb +63 -0
  464. data/lib/pwn/aws/support.rb +92 -0
  465. data/lib/pwn/aws/swf.rb +92 -0
  466. data/lib/pwn/aws/waf.rb +92 -0
  467. data/lib/pwn/aws/waf_regional.rb +92 -0
  468. data/lib/pwn/aws/workspaces.rb +92 -0
  469. data/lib/pwn/aws/x_ray.rb +92 -0
  470. data/lib/pwn/aws.rb +105 -0
  471. data/lib/pwn/ffi.rb +16 -0
  472. data/lib/pwn/plugins/android.rb +1616 -0
  473. data/lib/pwn/plugins/ansible_vault.rb +75 -0
  474. data/lib/pwn/plugins/authentication_helper.rb +79 -0
  475. data/lib/pwn/plugins/basic_auth.rb +63 -0
  476. data/lib/pwn/plugins/beef.rb +309 -0
  477. data/lib/pwn/plugins/burp_suite.rb +340 -0
  478. data/lib/pwn/plugins/bus_pirate.rb +150 -0
  479. data/lib/pwn/plugins/char.rb +459 -0
  480. data/lib/pwn/plugins/credit_card.rb +53 -0
  481. data/lib/pwn/plugins/dao_ldap.rb +131 -0
  482. data/lib/pwn/plugins/dao_mongo.rb +96 -0
  483. data/lib/pwn/plugins/dao_postgres.rb +224 -0
  484. data/lib/pwn/plugins/dao_sqlite3.rb +125 -0
  485. data/lib/pwn/plugins/defect_dojo.rb +759 -0
  486. data/lib/pwn/plugins/detect_os.rb +40 -0
  487. data/lib/pwn/plugins/ein.rb +141 -0
  488. data/lib/pwn/plugins/file_fu.rb +73 -0
  489. data/lib/pwn/plugins/fuzz.rb +206 -0
  490. data/lib/pwn/plugins/git.rb +166 -0
  491. data/lib/pwn/plugins/hacker_one.rb +152 -0
  492. data/lib/pwn/plugins/http_intercept_helper.rb +122 -0
  493. data/lib/pwn/plugins/ibm_appscan.rb +927 -0
  494. data/lib/pwn/plugins/ip_info.rb +100 -0
  495. data/lib/pwn/plugins/jenkins.rb +545 -0
  496. data/lib/pwn/plugins/json_pathify.rb +46 -0
  497. data/lib/pwn/plugins/mail_agent.rb +344 -0
  498. data/lib/pwn/plugins/metasploit.rb +151 -0
  499. data/lib/pwn/plugins/nessus_cloud.rb +325 -0
  500. data/lib/pwn/plugins/nexpose_vuln_scan.rb +356 -0
  501. data/lib/pwn/plugins/nmap_it.rb +99 -0
  502. data/lib/pwn/plugins/oauth2.rb +67 -0
  503. data/lib/pwn/plugins/ocr.rb +43 -0
  504. data/lib/pwn/plugins/openvas.rb +308 -0
  505. data/lib/pwn/plugins/owasp_zap.rb +550 -0
  506. data/lib/pwn/plugins/packet.rb +1271 -0
  507. data/lib/pwn/plugins/pdf_parse.rb +53 -0
  508. data/lib/pwn/plugins/pony.rb +282 -0
  509. data/lib/pwn/plugins/pwn_logger.rb +46 -0
  510. data/lib/pwn/plugins/rabbit_mq_hole.rb +66 -0
  511. data/lib/pwn/plugins/rfidler.rb +58 -0
  512. data/lib/pwn/plugins/serial.rb +268 -0
  513. data/lib/pwn/plugins/shodan.rb +566 -0
  514. data/lib/pwn/plugins/slack_client.rb +104 -0
  515. data/lib/pwn/plugins/sock.rb +156 -0
  516. data/lib/pwn/plugins/son_micro_rfid.rb +432 -0
  517. data/lib/pwn/plugins/spider.rb +80 -0
  518. data/lib/pwn/plugins/ssn.rb +52 -0
  519. data/lib/pwn/plugins/thread_pool.rb +71 -0
  520. data/lib/pwn/plugins/transparent_browser.rb +337 -0
  521. data/lib/pwn/plugins/twitter_api.rb +148 -0
  522. data/lib/pwn/plugins/uri_scheme.rb +328 -0
  523. data/lib/pwn/plugins/vsphere.rb +82 -0
  524. data/lib/pwn/plugins.rb +66 -0
  525. data/lib/pwn/reports/fuzz.rb +270 -0
  526. data/lib/pwn/reports/sast.rb +306 -0
  527. data/lib/pwn/reports.rb +21 -0
  528. data/lib/pwn/sast/amqp_connect_as_guest.rb +140 -0
  529. data/lib/pwn/sast/apache_file_system_util_api.rb +137 -0
  530. data/lib/pwn/sast/aws.rb +142 -0
  531. data/lib/pwn/sast/banned_function_calls_c.rb +265 -0
  532. data/lib/pwn/sast/base64.rb +143 -0
  533. data/lib/pwn/sast/beef_hook.rb +137 -0
  534. data/lib/pwn/sast/cmd_execution_java.rb +142 -0
  535. data/lib/pwn/sast/cmd_execution_python.rb +144 -0
  536. data/lib/pwn/sast/cmd_execution_ruby.rb +152 -0
  537. data/lib/pwn/sast/cmd_execution_scala.rb +142 -0
  538. data/lib/pwn/sast/csrf.rb +136 -0
  539. data/lib/pwn/sast/deserial_java.rb +135 -0
  540. data/lib/pwn/sast/emoticon.rb +145 -0
  541. data/lib/pwn/sast/eval.rb +140 -0
  542. data/lib/pwn/sast/factory.rb +135 -0
  543. data/lib/pwn/sast/file_permission.rb +142 -0
  544. data/lib/pwn/sast/inner_html.rb +140 -0
  545. data/lib/pwn/sast/keystore.rb +137 -0
  546. data/lib/pwn/sast/location_hash.rb +140 -0
  547. data/lib/pwn/sast/log4j.rb +140 -0
  548. data/lib/pwn/sast/logger.rb +155 -0
  549. data/lib/pwn/sast/outer_html.rb +140 -0
  550. data/lib/pwn/sast/password.rb +140 -0
  551. data/lib/pwn/sast/pom_version.rb +144 -0
  552. data/lib/pwn/sast/port.rb +147 -0
  553. data/lib/pwn/sast/private_key.rb +140 -0
  554. data/lib/pwn/sast/redirect.rb +142 -0
  555. data/lib/pwn/sast/redos.rb +147 -0
  556. data/lib/pwn/sast/shell.rb +148 -0
  557. data/lib/pwn/sast/sql.rb +144 -0
  558. data/lib/pwn/sast/ssl.rb +137 -0
  559. data/lib/pwn/sast/sudo.rb +140 -0
  560. data/lib/pwn/sast/task_tag.rb +154 -0
  561. data/lib/pwn/sast/throw_errors.rb +139 -0
  562. data/lib/pwn/sast/token.rb +137 -0
  563. data/lib/pwn/sast/version.rb +137 -0
  564. data/lib/pwn/sast/window_location_hash.rb +139 -0
  565. data/lib/pwn/sast.rb +53 -0
  566. data/lib/pwn/version.rb +5 -0
  567. data/lib/pwn/www/app_cobalt_io.rb +168 -0
  568. data/lib/pwn/www/bing.rb +119 -0
  569. data/lib/pwn/www/bug_crowd.rb +165 -0
  570. data/lib/pwn/www/checkip.rb +101 -0
  571. data/lib/pwn/www/duckduckgo.rb +141 -0
  572. data/lib/pwn/www/facebook.rb +153 -0
  573. data/lib/pwn/www/google.rb +145 -0
  574. data/lib/pwn/www/hacker_one.rb +153 -0
  575. data/lib/pwn/www/linkedin.rb +153 -0
  576. data/lib/pwn/www/pandora.rb +153 -0
  577. data/lib/pwn/www/pastebin.rb +114 -0
  578. data/lib/pwn/www/paypal.rb +235 -0
  579. data/lib/pwn/www/synack.rb +165 -0
  580. data/lib/pwn/www/torch.rb +138 -0
  581. data/lib/pwn/www/twitter.rb +165 -0
  582. data/lib/pwn/www/uber.rb +153 -0
  583. data/lib/pwn/www/upwork.rb +153 -0
  584. data/lib/pwn/www/youtube.rb +119 -0
  585. data/lib/pwn/www.rb +33 -0
  586. data/lib/pwn.rb +24 -0
  587. data/packer/daemons/msfrpcd.rb +64 -0
  588. data/packer/daemons/openvas.rb +51 -0
  589. data/packer/deploy_docker_containers.sh +9 -0
  590. data/packer/deploy_packer_box.sh +87 -0
  591. data/packer/docker/kali_rolling_docker_pwn_fuzz_net_app_proto.json +44 -0
  592. data/packer/docker/kali_rolling_docker_pwn_prototyper.json +48 -0
  593. data/packer/docker/kali_rolling_docker_pwn_sast.json +44 -0
  594. data/packer/docker/kali_rolling_docker_pwn_transparent_browser.json +46 -0
  595. data/packer/docker/kali_rolling_docker_pwn_www_checkip.json +34 -0
  596. data/packer/http/kali_rolling_preseed.cfg +81 -0
  597. data/packer/kali_rolling_aws_ami.json +135 -0
  598. data/packer/kali_rolling_qemu_kvm.json +155 -0
  599. data/packer/kali_rolling_virtualbox.json +182 -0
  600. data/packer/kali_rolling_vmware.json +163 -0
  601. data/packer/packer_secrets.json.EXAMPLE +9 -0
  602. data/packer/provisioners/PayloadsAllTheThings.sh +5 -0
  603. data/packer/provisioners/SecLists.sh +5 -0
  604. data/packer/provisioners/afl.sh +28 -0
  605. data/packer/provisioners/aliases.rb +18 -0
  606. data/packer/provisioners/amass.sh +5 -0
  607. data/packer/provisioners/android.sh +18 -0
  608. data/packer/provisioners/ansible.sh +5 -0
  609. data/packer/provisioners/apache2.sh +24 -0
  610. data/packer/provisioners/arachni.sh +28 -0
  611. data/packer/provisioners/awscli.sh +5 -0
  612. data/packer/provisioners/bashrc.sh +13 -0
  613. data/packer/provisioners/beef.rb +23 -0
  614. data/packer/provisioners/burpsuite.sh +23 -0
  615. data/packer/provisioners/chrome.sh +11 -0
  616. data/packer/provisioners/coreutils.sh +6 -0
  617. data/packer/provisioners/curl.sh +6 -0
  618. data/packer/provisioners/docker.sh +43 -0
  619. data/packer/provisioners/docker_bashrc.sh +2 -0
  620. data/packer/provisioners/docker_rvm.sh +22 -0
  621. data/packer/provisioners/eyewitness.sh +5 -0
  622. data/packer/provisioners/ffmpeg.sh +6 -0
  623. data/packer/provisioners/firefox.sh +7 -0
  624. data/packer/provisioners/fuzzdb.sh +5 -0
  625. data/packer/provisioners/gdb.sh +5 -0
  626. data/packer/provisioners/geckodriver.sh +9 -0
  627. data/packer/provisioners/ghidra.sh +5 -0
  628. data/packer/provisioners/git.sh +6 -0
  629. data/packer/provisioners/init_image.sh +103 -0
  630. data/packer/provisioners/install_vagrant_ssh_key.sh +15 -0
  631. data/packer/provisioners/jenkins.sh +62 -0
  632. data/packer/provisioners/metasploit.rb +59 -0
  633. data/packer/provisioners/nmap_all_live_hosts.sh +8 -0
  634. data/packer/provisioners/openvas.sh +23 -0
  635. data/packer/provisioners/openvas_wrappers.sh +4 -0
  636. data/packer/provisioners/openvpn.sh +7 -0
  637. data/packer/provisioners/peda.sh +4 -0
  638. data/packer/provisioners/phantomjs.rb +28 -0
  639. data/packer/provisioners/phantomjs_wrapper.sh +22 -0
  640. data/packer/provisioners/post_install.sh +41 -0
  641. data/packer/provisioners/postgresql.sh +49 -0
  642. data/packer/provisioners/preeny.sh +8 -0
  643. data/packer/provisioners/pwn.sh +89 -0
  644. data/packer/provisioners/pwntools.sh +13 -0
  645. data/packer/provisioners/radamsa.sh +7 -0
  646. data/packer/provisioners/rc.local.sh +16 -0
  647. data/packer/provisioners/reboot_os.sh +7 -0
  648. data/packer/provisioners/ruby.sh +36 -0
  649. data/packer/provisioners/rvm.sh +30 -0
  650. data/packer/provisioners/scapy.sh +5 -0
  651. data/packer/provisioners/scout2.sh +5 -0
  652. data/packer/provisioners/sox.sh +5 -0
  653. data/packer/provisioners/ssllabs-scan.sh +9 -0
  654. data/packer/provisioners/strace.sh +5 -0
  655. data/packer/provisioners/sublist3r.sh +5 -0
  656. data/packer/provisioners/terminator.sh +5 -0
  657. data/packer/provisioners/toggle_tor.sh +2 -0
  658. data/packer/provisioners/tor.sh +5 -0
  659. data/packer/provisioners/twinkle.sh +6 -0
  660. data/packer/provisioners/update_os.sh +108 -0
  661. data/packer/provisioners/upload_globals.sh +55 -0
  662. data/packer/provisioners/vim.sh +19 -0
  663. data/packer/provisioners/virtualbox_guest_additions.sh +20 -0
  664. data/packer/provisioners/vmware_tools.sh +8 -0
  665. data/packer/provisioners/wpscan.rb +23 -0
  666. data/packer/provisioners/xrdp.sh +22 -0
  667. data/packer/provisioners/zzuf.sh +5 -0
  668. data/pwn.gemspec +34 -0
  669. data/reinstall_pwn_gemset.sh +31 -0
  670. data/spec/lib/pwn/aws/acm_spec.rb +15 -0
  671. data/spec/lib/pwn/aws/api_gateway_spec.rb +15 -0
  672. data/spec/lib/pwn/aws/app_stream_spec.rb +15 -0
  673. data/spec/lib/pwn/aws/application_auto_scaling_spec.rb +15 -0
  674. data/spec/lib/pwn/aws/application_discovery_service_spec.rb +15 -0
  675. data/spec/lib/pwn/aws/auto_scaling_spec.rb +15 -0
  676. data/spec/lib/pwn/aws/batch_spec.rb +15 -0
  677. data/spec/lib/pwn/aws/budgets_spec.rb +15 -0
  678. data/spec/lib/pwn/aws/cloud_formation_spec.rb +15 -0
  679. data/spec/lib/pwn/aws/cloud_front_spec.rb +15 -0
  680. data/spec/lib/pwn/aws/cloud_hsm_spec.rb +15 -0
  681. data/spec/lib/pwn/aws/cloud_search_domain_spec.rb +15 -0
  682. data/spec/lib/pwn/aws/cloud_search_spec.rb +15 -0
  683. data/spec/lib/pwn/aws/cloud_trail_spec.rb +15 -0
  684. data/spec/lib/pwn/aws/cloud_watch_events_spec.rb +15 -0
  685. data/spec/lib/pwn/aws/cloud_watch_logs_spec.rb +15 -0
  686. data/spec/lib/pwn/aws/cloud_watch_spec.rb +15 -0
  687. data/spec/lib/pwn/aws/code_build_spec.rb +15 -0
  688. data/spec/lib/pwn/aws/code_commit_spec.rb +15 -0
  689. data/spec/lib/pwn/aws/code_deploy_spec.rb +15 -0
  690. data/spec/lib/pwn/aws/code_pipeline_spec.rb +15 -0
  691. data/spec/lib/pwn/aws/cognito_identity_provider_spec.rb +15 -0
  692. data/spec/lib/pwn/aws/cognito_identity_spec.rb +15 -0
  693. data/spec/lib/pwn/aws/cognito_sync_spec.rb +15 -0
  694. data/spec/lib/pwn/aws/config_service_spec.rb +15 -0
  695. data/spec/lib/pwn/aws/data_pipleline_spec.rb +15 -0
  696. data/spec/lib/pwn/aws/database_migration_service_spec.rb +15 -0
  697. data/spec/lib/pwn/aws/device_farm_spec.rb +15 -0
  698. data/spec/lib/pwn/aws/direct_connect_spec.rb +15 -0
  699. data/spec/lib/pwn/aws/directory_service_spec.rb +15 -0
  700. data/spec/lib/pwn/aws/dynamo_db_spec.rb +15 -0
  701. data/spec/lib/pwn/aws/dynamo_db_streams_spec.rb +15 -0
  702. data/spec/lib/pwn/aws/ec2_spec.rb +15 -0
  703. data/spec/lib/pwn/aws/ecr_spec.rb +15 -0
  704. data/spec/lib/pwn/aws/ecs_spec.rb +15 -0
  705. data/spec/lib/pwn/aws/efs_spec.rb +15 -0
  706. data/spec/lib/pwn/aws/elasti_cache_spec.rb +15 -0
  707. data/spec/lib/pwn/aws/elastic_beanstalk_spec.rb +15 -0
  708. data/spec/lib/pwn/aws/elastic_load_balancing_spec.rb +15 -0
  709. data/spec/lib/pwn/aws/elastic_load_balancing_v2_spec.rb +15 -0
  710. data/spec/lib/pwn/aws/elastic_transcoder_spec.rb +15 -0
  711. data/spec/lib/pwn/aws/elasticsearch_service_spec.rb +15 -0
  712. data/spec/lib/pwn/aws/emr_spec.rb +15 -0
  713. data/spec/lib/pwn/aws/firehose_spec.rb +15 -0
  714. data/spec/lib/pwn/aws/game_lift_spec.rb +15 -0
  715. data/spec/lib/pwn/aws/glacier_spec.rb +15 -0
  716. data/spec/lib/pwn/aws/health_spec.rb +15 -0
  717. data/spec/lib/pwn/aws/iam_spec.rb +15 -0
  718. data/spec/lib/pwn/aws/import_export_spec.rb +15 -0
  719. data/spec/lib/pwn/aws/inspector_spec.rb +15 -0
  720. data/spec/lib/pwn/aws/iot_data_plane_spec.rb +15 -0
  721. data/spec/lib/pwn/aws/iot_spec.rb +15 -0
  722. data/spec/lib/pwn/aws/kinesis_analytics_spec.rb +15 -0
  723. data/spec/lib/pwn/aws/kinesis_spec.rb +15 -0
  724. data/spec/lib/pwn/aws/kms_spec.rb +15 -0
  725. data/spec/lib/pwn/aws/lambda_preview_spec.rb +15 -0
  726. data/spec/lib/pwn/aws/lambda_spec.rb +15 -0
  727. data/spec/lib/pwn/aws/lex_spec.rb +15 -0
  728. data/spec/lib/pwn/aws/lightsail_spec.rb +15 -0
  729. data/spec/lib/pwn/aws/machine_learning_spec.rb +15 -0
  730. data/spec/lib/pwn/aws/marketplace_commerce_analytics_spec.rb +15 -0
  731. data/spec/lib/pwn/aws/marketplace_metering_spec.rb +15 -0
  732. data/spec/lib/pwn/aws/ops_works_cm_spec.rb +15 -0
  733. data/spec/lib/pwn/aws/ops_works_spec.rb +15 -0
  734. data/spec/lib/pwn/aws/pinpoint_spec.rb +15 -0
  735. data/spec/lib/pwn/aws/polly_spec.rb +15 -0
  736. data/spec/lib/pwn/aws/rds_spec.rb +15 -0
  737. data/spec/lib/pwn/aws/redshift_spec.rb +15 -0
  738. data/spec/lib/pwn/aws/rekognition_spec.rb +15 -0
  739. data/spec/lib/pwn/aws/route53_domains_spec.rb +15 -0
  740. data/spec/lib/pwn/aws/route53_spec.rb +15 -0
  741. data/spec/lib/pwn/aws/s3_spec.rb +15 -0
  742. data/spec/lib/pwn/aws/service_catalog_spec.rb +15 -0
  743. data/spec/lib/pwn/aws/ses_spec.rb +15 -0
  744. data/spec/lib/pwn/aws/shield_spec.rb +15 -0
  745. data/spec/lib/pwn/aws/simple_db_spec.rb +15 -0
  746. data/spec/lib/pwn/aws/sms_spec.rb +15 -0
  747. data/spec/lib/pwn/aws/snowball_spec.rb +15 -0
  748. data/spec/lib/pwn/aws/sns_spec.rb +15 -0
  749. data/spec/lib/pwn/aws/sqs_spec.rb +15 -0
  750. data/spec/lib/pwn/aws/ssm_spec.rb +15 -0
  751. data/spec/lib/pwn/aws/states_spec.rb +15 -0
  752. data/spec/lib/pwn/aws/storage_gateway_spec.rb +15 -0
  753. data/spec/lib/pwn/aws/sts_spec.rb +15 -0
  754. data/spec/lib/pwn/aws/support_spec.rb +15 -0
  755. data/spec/lib/pwn/aws/swf_spec.rb +15 -0
  756. data/spec/lib/pwn/aws/waf_regional_spec.rb +15 -0
  757. data/spec/lib/pwn/aws/waf_spec.rb +15 -0
  758. data/spec/lib/pwn/aws/workspaces_spec.rb +15 -0
  759. data/spec/lib/pwn/aws/x_ray_spec.rb +15 -0
  760. data/spec/lib/pwn/aws_spec.rb +10 -0
  761. data/spec/lib/pwn/ffi_spec.rb +10 -0
  762. data/spec/lib/pwn/plugins/android_spec.rb +15 -0
  763. data/spec/lib/pwn/plugins/authentication_helper_spec.rb +15 -0
  764. data/spec/lib/pwn/plugins/basic_auth_spec.rb +15 -0
  765. data/spec/lib/pwn/plugins/beef_spec.rb +15 -0
  766. data/spec/lib/pwn/plugins/burp_suite_spec.rb +15 -0
  767. data/spec/lib/pwn/plugins/bus_pirate_spec.rb +15 -0
  768. data/spec/lib/pwn/plugins/char_spec.rb +15 -0
  769. data/spec/lib/pwn/plugins/credit_card_spec.rb +15 -0
  770. data/spec/lib/pwn/plugins/dao_ldap_spec.rb +15 -0
  771. data/spec/lib/pwn/plugins/dao_mongo_spec.rb +15 -0
  772. data/spec/lib/pwn/plugins/dao_postgres_spec.rb +15 -0
  773. data/spec/lib/pwn/plugins/dao_sqlite3_spec.rb +15 -0
  774. data/spec/lib/pwn/plugins/defect_dojo_spec.rb +15 -0
  775. data/spec/lib/pwn/plugins/detect_os_spec.rb +15 -0
  776. data/spec/lib/pwn/plugins/ein_spec.rb +15 -0
  777. data/spec/lib/pwn/plugins/file_fu_spec.rb +15 -0
  778. data/spec/lib/pwn/plugins/fuzz_spec.rb +15 -0
  779. data/spec/lib/pwn/plugins/git_spec.rb +15 -0
  780. data/spec/lib/pwn/plugins/hacker_one_spec.rb +15 -0
  781. data/spec/lib/pwn/plugins/ibm_appscan_spec.rb +15 -0
  782. data/spec/lib/pwn/plugins/ip_info_spec.rb +15 -0
  783. data/spec/lib/pwn/plugins/jenkins_spec.rb +15 -0
  784. data/spec/lib/pwn/plugins/json_pathify_spec.rb +15 -0
  785. data/spec/lib/pwn/plugins/mail_agent_spec.rb +15 -0
  786. data/spec/lib/pwn/plugins/metasploit_spec.rb +15 -0
  787. data/spec/lib/pwn/plugins/nessus_cloud_spec.rb +15 -0
  788. data/spec/lib/pwn/plugins/nexpose_vuln_scan_spec.rb +15 -0
  789. data/spec/lib/pwn/plugins/nmap_it_spec.rb +15 -0
  790. data/spec/lib/pwn/plugins/oauth2_spec.rb +15 -0
  791. data/spec/lib/pwn/plugins/ocr_spec.rb +15 -0
  792. data/spec/lib/pwn/plugins/openvas_spec.rb +15 -0
  793. data/spec/lib/pwn/plugins/owasp_zap_spec.rb +15 -0
  794. data/spec/lib/pwn/plugins/packet_spec.rb +15 -0
  795. data/spec/lib/pwn/plugins/pdf_parse_spec.rb +15 -0
  796. data/spec/lib/pwn/plugins/pony_spec.rb +15 -0
  797. data/spec/lib/pwn/plugins/rabbit_mq_hole_spec.rb +15 -0
  798. data/spec/lib/pwn/plugins/rfidler_spec.rb +15 -0
  799. data/spec/lib/pwn/plugins/serial_spec.rb +15 -0
  800. data/spec/lib/pwn/plugins/shodan_spec.rb +15 -0
  801. data/spec/lib/pwn/plugins/slack_client_spec.rb +15 -0
  802. data/spec/lib/pwn/plugins/sock_spec.rb +15 -0
  803. data/spec/lib/pwn/plugins/son_micro_rfid_spec.rb +15 -0
  804. data/spec/lib/pwn/plugins/spider_spec.rb +15 -0
  805. data/spec/lib/pwn/plugins/ssn_spec.rb +15 -0
  806. data/spec/lib/pwn/plugins/thread_pool_spec.rb +15 -0
  807. data/spec/lib/pwn/plugins/transparent_browser_spec.rb +15 -0
  808. data/spec/lib/pwn/plugins/twitter_api_spec.rb +15 -0
  809. data/spec/lib/pwn/plugins/uri_scheme_spec.rb +15 -0
  810. data/spec/lib/pwn/plugins/vsphere_spec.rb +15 -0
  811. data/spec/lib/pwn/plugins_spec.rb +10 -0
  812. data/spec/lib/pwn/reports/fuzz_spec.rb +15 -0
  813. data/spec/lib/pwn/reports/sast_spec.rb +15 -0
  814. data/spec/lib/pwn/reports_spec.rb +10 -0
  815. data/spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb +25 -0
  816. data/spec/lib/pwn/sast/apache_file_system_util_api_spec.rb +25 -0
  817. data/spec/lib/pwn/sast/aws_spec.rb +25 -0
  818. data/spec/lib/pwn/sast/banned_function_calls_c_spec.rb +25 -0
  819. data/spec/lib/pwn/sast/base64_spec.rb +25 -0
  820. data/spec/lib/pwn/sast/beef_hook_spec.rb +25 -0
  821. data/spec/lib/pwn/sast/cmd_execution_java_spec.rb +25 -0
  822. data/spec/lib/pwn/sast/cmd_execution_python_spec.rb +25 -0
  823. data/spec/lib/pwn/sast/cmd_execution_ruby_spec.rb +25 -0
  824. data/spec/lib/pwn/sast/cmd_execution_scala_spec.rb +25 -0
  825. data/spec/lib/pwn/sast/csrf_spec.rb +25 -0
  826. data/spec/lib/pwn/sast/deserial_java_spec.rb +25 -0
  827. data/spec/lib/pwn/sast/emoticon_spec.rb +25 -0
  828. data/spec/lib/pwn/sast/eval_spec.rb +25 -0
  829. data/spec/lib/pwn/sast/factory_spec.rb +25 -0
  830. data/spec/lib/pwn/sast/file_permission_spec.rb +25 -0
  831. data/spec/lib/pwn/sast/inner_html_spec.rb +25 -0
  832. data/spec/lib/pwn/sast/keystore_spec.rb +25 -0
  833. data/spec/lib/pwn/sast/location_hash_spec.rb +25 -0
  834. data/spec/lib/pwn/sast/log4j_spec.rb +25 -0
  835. data/spec/lib/pwn/sast/logger_spec.rb +25 -0
  836. data/spec/lib/pwn/sast/password_spec.rb +25 -0
  837. data/spec/lib/pwn/sast/pom_version_spec.rb +25 -0
  838. data/spec/lib/pwn/sast/port_spec.rb +25 -0
  839. data/spec/lib/pwn/sast/private_key_spec.rb +25 -0
  840. data/spec/lib/pwn/sast/redirect_spec.rb +25 -0
  841. data/spec/lib/pwn/sast/redos_spec.rb +25 -0
  842. data/spec/lib/pwn/sast/shell_spec.rb +25 -0
  843. data/spec/lib/pwn/sast/sql_spec.rb +25 -0
  844. data/spec/lib/pwn/sast/ssl_spec.rb +25 -0
  845. data/spec/lib/pwn/sast/sudo_spec.rb +25 -0
  846. data/spec/lib/pwn/sast/task_tag_spec.rb +25 -0
  847. data/spec/lib/pwn/sast/throw_errors_spec.rb +25 -0
  848. data/spec/lib/pwn/sast/token_spec.rb +25 -0
  849. data/spec/lib/pwn/sast/version_spec.rb +25 -0
  850. data/spec/lib/pwn/sast/window_location_hash_spec.rb +25 -0
  851. data/spec/lib/pwn/sast_spec.rb +10 -0
  852. data/spec/lib/pwn/www/app_cobalt_io_spec.rb +15 -0
  853. data/spec/lib/pwn/www/bing_spec.rb +15 -0
  854. data/spec/lib/pwn/www/bug_crowd.rb +15 -0
  855. data/spec/lib/pwn/www/checkip_spec.rb +15 -0
  856. data/spec/lib/pwn/www/duckduckgo_spec.rb +15 -0
  857. data/spec/lib/pwn/www/facebook_spec.rb +15 -0
  858. data/spec/lib/pwn/www/google_spec.rb +15 -0
  859. data/spec/lib/pwn/www/hacker_one_spec.rb +15 -0
  860. data/spec/lib/pwn/www/linkedin_spec.rb +15 -0
  861. data/spec/lib/pwn/www/pandora_spec.rb +15 -0
  862. data/spec/lib/pwn/www/pastebin_spec.rb +15 -0
  863. data/spec/lib/pwn/www/paypal_spec.rb +15 -0
  864. data/spec/lib/pwn/www/synack_spec.rb +15 -0
  865. data/spec/lib/pwn/www/torch_spec.rb +15 -0
  866. data/spec/lib/pwn/www/twitter_spec.rb +15 -0
  867. data/spec/lib/pwn/www/uber_spec.rb +15 -0
  868. data/spec/lib/pwn/www/upwork_spec.rb +15 -0
  869. data/spec/lib/pwn/www/youtube_spec.rb +15 -0
  870. data/spec/lib/pwn/www_spec.rb +10 -0
  871. data/spec/lib/pwn_spec.rb +10 -0
  872. data/spec/spec_helper.rb +3 -0
  873. data/third_party/.gitkeep +0 -0
  874. data/update_pwn.sh +15 -0
  875. data/upgrade_ruby.sh +46 -0
  876. data/vagrant/provisioners/apache2.sh +76 -0
  877. data/vagrant/provisioners/beef.rb +30 -0
  878. data/vagrant/provisioners/burpsuite_pro.rb +37 -0
  879. data/vagrant/provisioners/exploit-db.sh +2 -0
  880. data/vagrant/provisioners/gem.sh +4 -0
  881. data/vagrant/provisioners/init_env.sh +22 -0
  882. data/vagrant/provisioners/jenkins.sh +87 -0
  883. data/vagrant/provisioners/jenkins_ssh-keygen.rb +86 -0
  884. data/vagrant/provisioners/kali_customize.rb +130 -0
  885. data/vagrant/provisioners/letsencrypt.rb +35 -0
  886. data/vagrant/provisioners/metasploit.rb +25 -0
  887. data/vagrant/provisioners/nmap_all_live_hosts.sh +2 -0
  888. data/vagrant/provisioners/openvas.sh +23 -0
  889. data/vagrant/provisioners/openvas_wrappers.sh +2 -0
  890. data/vagrant/provisioners/post_install.sh +14 -0
  891. data/vagrant/provisioners/postgres.sh +22 -0
  892. data/vagrant/provisioners/pwn.sh +15 -0
  893. data/vagrant/provisioners/rvm.sh +18 -0
  894. data/vagrant/provisioners/ssllabs-scan.sh +10 -0
  895. data/vagrant/provisioners/toggle_tor.sh +2 -0
  896. data/vagrant/provisioners/update_jenkins_plugins.rb +30 -0
  897. data/vagrant/provisioners/update_os.sh +108 -0
  898. data/vagrant/provisioners/upload_globals.sh +55 -0
  899. data/vagrant/provisioners/userland_fdisk.sh +22 -0
  900. data/vagrant/provisioners/userland_lvm.sh +5 -0
  901. data/vagrant/provisioners/wpscan.rb +25 -0
  902. data/vagrant_rsync_third_party.lst +1 -0
  903. data/vagrant_rsync_userland_template.lst +8 -0
  904. metadata +1245 -0
@@ -0,0 +1,927 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+ require 'wicked_pdf'
5
+ require 'fileutils'
6
+ require 'uri'
7
+
8
+ module PWN
9
+ module Plugins
10
+ # This plugin is used for interacting w/ IBM Appscan Enterprise using
11
+ # the 'rest' browser type of PWN::Plugins::TransparentBrowser.
12
+ # The IBM Appscan Spec in which this PWN module is based is located here:
13
+ # http://www-01.ibm.com/support/knowledgecenter/SSW2NF_9.0.0/com.ibm.ase.help.doc/topics/c_web_services.html?lang=en
14
+ module IBMAppscan
15
+ @@logger = PWN::Plugins::PWNLogger.create
16
+
17
+ # Supported Method Parameters::
18
+ # PWN::Plugins::IBMAppscan.login(
19
+ # appscan_ip: 'required host/ip of IBM Appscan Server',
20
+ # username: 'required username',
21
+ # password: 'optional password (will prompt if nil)'
22
+ # )
23
+
24
+ public_class_method def self.login(opts = {})
25
+ appscan_ip = opts[:appscan_ip]
26
+ username = opts[:username].to_s.scrub
27
+ base_appscan_api_uri = "https://#{appscan_ip}/ase/services".to_s.scrub
28
+
29
+ password = if opts[:password].nil?
30
+ PWN::Plugins::AuthenticationHelper.mask_password
31
+ else
32
+ opts[:password].to_s.scrub
33
+ end
34
+
35
+ @@logger.info("Logging into IBM Appscan Enterprise Server: #{appscan_ip}")
36
+ rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
37
+ response = rest_client.execute(
38
+ method: :post,
39
+ url: "#{base_appscan_api_uri}/login",
40
+ payload: "userid=#{username}&password=#{password}",
41
+ verify_ssl: false
42
+ )
43
+
44
+ # Return array containing the Appscan Server host/ip & post-authenticated Appscan REST cookie
45
+ appscan_ip = URI.parse(response.args[:url]).host
46
+ appscan_cookie = "asc_session_id=#{response.cookies['asc_session_id']}; ASP.NET_SessionId=#{response.cookies['ASP.NET_SessionId']}"
47
+ appscan_obj = {}
48
+ appscan_obj[:appscan_ip] = appscan_ip
49
+ appscan_obj[:cookie] = appscan_cookie
50
+ appscan_obj[:raw_response] = response
51
+ appscan_obj[:xml_response] = Nokogiri::XML(response)
52
+ appscan_obj[:build] = appscan_obj[:xml_response].xpath(
53
+ '/xmlns:version/xmlns:build'
54
+ ).text
55
+ appscan_obj[:dbversion] = appscan_obj[:xml_response].xpath(
56
+ '/xmlns:version/xmlns:dbversion'
57
+ ).text
58
+ appscan_obj[:rules_version] = appscan_obj[:xml_response].xpath(
59
+ '/xmlns:version/xmlns:rules-version'
60
+ ).text
61
+ appscan_obj[:username] = appscan_obj[:xml_response].xpath(
62
+ '/xmlns:version/xmlns:user-name'
63
+ ).text
64
+ appscan_obj[:password] = Base64.strict_encode64(password)
65
+ appscan_obj[:logged_in] = true
66
+
67
+ appscan_obj
68
+ rescue StandardError => e
69
+ raise e
70
+ end
71
+
72
+ # Supported Method Parameters::
73
+ # appscan_rest_call(
74
+ # appscan_obj: 'required appscan_obj returned from login method',
75
+ # http_method: 'optional HTTP method (defaults to GET)
76
+ # rest_call: 'required rest call to make per the schema',
77
+ # http_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST'
78
+ # )
79
+
80
+ private_class_method def self.appscan_rest_call(opts = {})
81
+ appscan_obj = opts[:appscan_obj]
82
+ http_method = if opts[:http_method].nil?
83
+ :get
84
+ else
85
+ opts[:http_method].to_s.scrub.to_sym
86
+ end
87
+ rest_call = opts[:rest_call].to_s.scrub
88
+ http_body = opts[:http_body].to_s.scrub
89
+ appscan_ip = appscan_obj[:appscan_ip].to_s.scrub
90
+ appscan_cookie = appscan_obj[:cookie]
91
+ base_appscan_api_uri = "https://#{appscan_ip}/ase/services".to_s.scrub
92
+ retry_count = 3
93
+
94
+ rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
95
+
96
+ case http_method
97
+ when :get
98
+ response = rest_client.execute(
99
+ method: :get,
100
+ url: "#{base_appscan_api_uri}/#{rest_call}",
101
+ headers: { cookie: appscan_cookie },
102
+ verify_ssl: false
103
+ )
104
+
105
+ when :post
106
+ response = rest_client.execute(
107
+ method: :post,
108
+ url: "#{base_appscan_api_uri}/#{rest_call}",
109
+ headers: { cookie: appscan_cookie },
110
+ payload: http_body,
111
+ verify_ssl: false
112
+ )
113
+
114
+ else
115
+ return @@logger.error("Unsupported HTTP Method #{http_method} for #{self} Plugin")
116
+ end
117
+ response
118
+ rescue StandardError => e
119
+ if (e.message == '401 Unauthorized') && retry_count.positive? && appscan_obj[:logged_in]
120
+ # Try logging back in to refresh the connection
121
+ @@logger.warn("Got Response: #{e}...Attempting to Re-Authenticate; Retries left #{retry_count}")
122
+ n_appscan_obj = login(
123
+ appscan_ip: appscan_obj[:appscan_ip],
124
+ username: appscan_obj[:username],
125
+ password: Base64.decode64(appscan_obj[:password])
126
+ )
127
+ appscan_cookie = n_appscan_obj[:cookie]
128
+ # "copy" the new app obj over the old app obj
129
+ appscan_obj.each_key do |k|
130
+ appscan_obj[k] = n_appscan_obj[k]
131
+ end
132
+ retry_count -= 1
133
+ retry
134
+ end
135
+ raise e
136
+ end
137
+
138
+ # Supported Method Parameters::
139
+ # PWN::Plugins::IBMAppscan.schema(
140
+ # appscan_obj: 'required appscan_obj returned from login method'
141
+ # )
142
+
143
+ public_class_method def self.schema(opts = {})
144
+ appscan_obj = opts[:appscan_obj]
145
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'schema')
146
+ schema = {}
147
+ schema[:raw_response] = response
148
+ schema[:xml_response] = Nokogiri::XML(response)
149
+ schema
150
+ rescue StandardError => e
151
+ raise e
152
+ end
153
+
154
+ # Supported Method Parameters::
155
+ # PWN::Plugins::IBMAppscan.version(
156
+ # appscan_obj: 'required appscan_obj returned from login method'
157
+ # )
158
+
159
+ public_class_method def self.version(opts = {})
160
+ appscan_obj = opts[:appscan_obj]
161
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'version')
162
+ version = {}
163
+ version[:raw_response] = response
164
+ version[:xml_response] = Nokogiri::XML(response)
165
+ version[:build] = version[:xml_response].xpath(
166
+ '/xmlns:version/xmlns:build'
167
+ ).text
168
+ version[:dbversion] = version[:xml_response].xpath(
169
+ '/xmlns:version/xmlns:dbversion'
170
+ ).text
171
+ version[:rules_version] = version[:xml_response].xpath(
172
+ '/xmlns:version/xmlns:rules-version'
173
+ ).text
174
+ version[:username] = version[:xml_response].xpath(
175
+ '/xmlns:version/xmlns:user-name'
176
+ ).text
177
+ version
178
+ rescue StandardError => e
179
+ raise e
180
+ end
181
+
182
+ # Supported Method Parameters::
183
+ # PWN::Plugins::IBMAppscan.get_folders(
184
+ # appscan_obj: 'required appscan_obj returned from login method'
185
+ # )
186
+
187
+ public_class_method def self.get_folders(opts = {})
188
+ appscan_obj = opts[:appscan_obj]
189
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'folders')
190
+ folders = {}
191
+ folders[:raw_response] = response
192
+ folders[:xml_response] = Nokogiri::XML(response)
193
+ folders
194
+ rescue StandardError => e
195
+ raise e
196
+ end
197
+
198
+ # Supported Method Parameters::
199
+ # PWN::Plugins::IBMAppscan.get_subfolders_of_folder(
200
+ # appscan_obj: 'required appscan_obj returned from login method',
201
+ # folder_id: 'required folder to retrieve'
202
+ # )
203
+
204
+ public_class_method def self.get_subfolders_of_folder(opts = {})
205
+ appscan_obj = opts[:appscan_obj]
206
+ folder_id = opts[:folder_id].to_i
207
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folders/#{folder_id}/folders")
208
+ subfolders = {}
209
+ subfolders[:raw_response] = response
210
+ subfolders[:xml_response] = Nokogiri::XML(response)
211
+ subfolders
212
+ rescue StandardError => e
213
+ raise e
214
+ end
215
+
216
+ # Supported Method Parameters::
217
+ # PWN::Plugins::IBMAppscan.get_folder_by_id(
218
+ # appscan_obj: 'required appscan_obj returned from login method',
219
+ # folder_id: 'required folder to retrieve'
220
+ # )
221
+
222
+ public_class_method def self.get_folder_by_id(opts = {})
223
+ appscan_obj = opts[:appscan_obj]
224
+ folder_id = opts[:folder_id].to_i
225
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folders/#{folder_id}")
226
+ folder = {}
227
+ folder[:raw_response] = response
228
+ folder[:xml_response] = Nokogiri::XML(response)
229
+ folder
230
+ rescue StandardError => e
231
+ raise e
232
+ end
233
+
234
+ # Supported Method Parameters::
235
+ # PWN::Plugins::IBMAppscan.get_folder_items(
236
+ # appscan_obj: 'required appscan_obj returned from login method'
237
+ # )
238
+
239
+ public_class_method def self.get_folder_items(opts = {})
240
+ appscan_obj = opts[:appscan_obj]
241
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'folderitems')
242
+ folder_items = {}
243
+ folder_items[:raw_response] = response
244
+ folder_items[:xml_response] = Nokogiri::XML(response)
245
+ folder_items
246
+ rescue StandardError => e
247
+ raise e
248
+ end
249
+
250
+ # Supported Method Parameters::
251
+ # PWN::Plugins::IBMAppscan.get_folder_item_by_id(
252
+ # appscan_obj: 'required appscan_obj returned from login method',
253
+ # folder_item_id: 'required folder item to retrieve'
254
+ # )
255
+
256
+ public_class_method def self.get_folder_item_by_id(opts = {})
257
+ appscan_obj = opts[:appscan_obj]
258
+ folder_item_id = opts[:folder_item_id].to_i
259
+ retry_count = 3
260
+
261
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folderitems/#{folder_item_id}")
262
+ folder_item = {}
263
+ folder_item[:raw_response] = response
264
+ folder_item[:xml_response] = Nokogiri::XML(response)
265
+ # Get Current Status of a Scan
266
+ # Available states:
267
+ # READY = 1;
268
+ # STARTING = 2;
269
+ # RUNNING = 3;
270
+ # RESUMING = 6;
271
+ # CANCELING = 7;
272
+ # SUSPENDING = 8;
273
+ # SUSPENDED = 9;
274
+ # POSTPROCESSING = 10;
275
+ # ENDING = 12;
276
+ folder_item[:state] = folder_item[:xml_response].xpath('//xmlns:state/xmlns:name').text
277
+ folder_item
278
+ rescue StandardError => e
279
+ @@logger.error("Error: #{e} | #{e.class}\nResponse Returned: #{folder_item[:raw_response]}")
280
+ end
281
+
282
+ # Supported Method Parameters::
283
+ # PWN::Plugins::IBMAppscan.get_a_folders_folder_items(
284
+ # appscan_obj: 'required appscan_obj returned from login method',
285
+ # folder_id: 'required folder to retrieve'
286
+ # )
287
+
288
+ public_class_method def self.get_a_folders_folder_items(opts = {})
289
+ appscan_obj = opts[:appscan_obj]
290
+ folder_id = opts[:folder_item_id].to_i
291
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folders/#{folder_id}/folderitems")
292
+ a_folders_folder_items = {}
293
+ a_folders_folder_items[:raw_response] = response
294
+ a_folders_folder_items[:xml_response] = Nokogiri::XML(response)
295
+ a_folders_folder_items
296
+ rescue StandardError => e
297
+ raise e
298
+ end
299
+
300
+ # Supported Method Parameters::
301
+ # PWN::Plugins::IBMAppscan.get_folder_item_options(
302
+ # appscan_obj: 'required appscan_obj returned from login method',
303
+ # folder_item_id: 'required folder item to retrieve'
304
+ # )
305
+
306
+ public_class_method def self.get_folder_item_options(opts = {})
307
+ appscan_obj = opts[:appscan_obj]
308
+ folder_item_id = opts[:folder_item_id].to_i
309
+ # TODO: Discover why not all options are returned
310
+ # (e.g. esCOTAutoFormFillUserNameValue & esCOTAutoFormFillPasswordValue)
311
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folderitems/#{folder_item_id}/options")
312
+ folder_item_options = {}
313
+ folder_item_options[:raw_response] = response
314
+ folder_item_options[:xml_response] = Nokogiri::XML(response)
315
+ folder_item_options[:options] = folder_item_options[:xml_response].xpath(
316
+ '//xmlns:available-option/@href'
317
+ )
318
+ folder_item_options
319
+ rescue StandardError => e
320
+ raise e
321
+ end
322
+
323
+ # Supported Method Parameters::
324
+ # PWN::Plugins::IBMAppscan.get_scan_templates(
325
+ # appscan_obj: 'required appscan_obj returned from login method'
326
+ # )
327
+
328
+ public_class_method def self.get_scan_templates(opts = {})
329
+ appscan_obj = opts[:appscan_obj]
330
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'templates')
331
+ templates = {}
332
+ templates[:raw_response] = response
333
+ templates[:xml_response] = Nokogiri::XML(response)
334
+ templates
335
+ rescue StandardError => e
336
+ raise e
337
+ end
338
+
339
+ # Supported Method Parameters::
340
+ # PWN::Plugins::IBMAppscan.create_scan_based_on_template(
341
+ # appscan_obj: 'required appscan_obj returned from login method'
342
+ # template_id: 'required template id returned from get_scan_templates method'
343
+ # scan_name: 'required name of scan'
344
+ # scan_desc: 'required description of scan'
345
+ # )
346
+
347
+ public_class_method def self.create_scan_based_on_template(opts = {})
348
+ appscan_obj = opts[:appscan_obj]
349
+ template_id = opts[:template_id].to_i
350
+ scan_name = opts[:scan_name].to_s.scrub
351
+ scan_desc = opts[:scan_desc].to_s.scrub
352
+ response = appscan_rest_call(
353
+ appscan_obj: appscan_obj,
354
+ http_method: :post,
355
+ rest_call: "folderitems?templateId=#{template_id}",
356
+ http_body: "name=#{scan_name}&description=#{scan_desc}"
357
+ )
358
+
359
+ # Return an Easy to Use Data Structure
360
+ # Instead of Leaving it to the End User
361
+ # To Parse Out the XML on their own.
362
+ scan = {}
363
+ scan[:raw_response] = response
364
+ scan[:xml_response] = Nokogiri::XML(response)
365
+ scan[:folder_url] = scan[:xml_response].xpath(
366
+ '/xmlns:folder-items/xmlns:content-scan-job/@href'
367
+ ).text
368
+ scan[:folder_item_id] = scan[:xml_response].xpath(
369
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:id'
370
+ ).text
371
+ scan[:scan_name] = scan[:xml_response].xpath(
372
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:name'
373
+ ).text
374
+ scan[:scan_desc] = scan[:xml_response].xpath(
375
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:description'
376
+ ).text
377
+ scan[:parent_folder_url] = scan[:xml_response].xpath(
378
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:parent/@href'
379
+ ).text
380
+ scan[:parent_folder_id] = scan[:xml_response].xpath(
381
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:parent/xmlns:id'
382
+ ).text
383
+ scan[:contact] = scan[:xml_response].xpath(
384
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:contact'
385
+ ).text
386
+ scan[:state_id] = scan[:xml_response].xpath(
387
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:state/xmlns:id'
388
+ ).text
389
+ scan[:state_name] = scan[:xml_response].xpath(
390
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:state/xmlns:name'
391
+ ).text
392
+ scan[:action_id] = scan[:xml_response].xpath(
393
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:action/xmlns:id'
394
+ ).text
395
+ scan[:action_name] = scan[:xml_response].xpath(
396
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:action/xmlns:name'
397
+ ).text
398
+ scan[:options_url] = scan[:xml_response].xpath(
399
+ '/xmlns:folder-items/xmlns:content-scan-job/xmlns:options/@href'
400
+ ).text
401
+ scan[:report_pack_url] = scan[:xml_response].xpath(
402
+ '/xmlns:folder-items/xmlns:report-pack/@href'
403
+ ).text
404
+ scan[:report_pack_id] = scan[:xml_response].xpath(
405
+ '/xmlns:folder-items/xmlns:report-pack/xmlns:id'
406
+ ).text
407
+ scan[:reports_url] = scan[:xml_response].xpath(
408
+ '/xmlns:folder-items/xmlns:report-pack/xmlns:reports/@href'
409
+ ).text
410
+ scan[:reports_count] = scan[:xml_response].xpath(
411
+ '/xmlns:folder-items/xmlns:report-pack/xmlns:reports/xmlns:count'
412
+ ).text.to_i
413
+
414
+ scan
415
+ rescue StandardError => e
416
+ @@logger.error("Error #{e}:\nREST response returned:\n#{response}")
417
+ end
418
+
419
+ # Supported Method Parameters::
420
+ # PWN::Plugins::IBMAppscan.configure_scan_options(
421
+ # appscan_obj: 'required appscan_obj returned from login method',
422
+ # folder_item_id: 'required folder item id',
423
+ # option: 'required option to change within the scan (folder item)',
424
+ # value: 'required option value(s)'
425
+ # )
426
+
427
+ public_class_method def self.configure_scan_options(opts = {})
428
+ appscan_obj = opts[:appscan_obj]
429
+ folder_item_id = opts[:folder_item_id].to_i
430
+ option = opts[:option].to_s.scrub
431
+ value = opts[:value]
432
+
433
+ case option.to_sym
434
+ when :epcsCOTListOfStartingUrls
435
+ post_body = ''
436
+ value.to_s.scrub.split(',').each_with_index do |url, index|
437
+ post_body << '&' unless index.zero?
438
+ post_body << "value=#{URI.encode_www_form(url.strip.chomp)}"
439
+ end
440
+ when :ebCOTHttpAuthentication
441
+ post_body = if value == false
442
+ 'value=0' # Don't require authentication
443
+ else
444
+ 'value=1' # Require authentication
445
+ end
446
+ when :esCOTHttpUser, :esCOTHttpPassword, :elCOTScanLimit
447
+ post_body = "value=#{value.to_s.scrub}"
448
+ when :help
449
+ available_options = ''
450
+ get_folder_item_options(
451
+ appscan_obj: appscan_obj,
452
+ folder_item_id: folder_item_id
453
+ )[:options].each { |url| available_options << "#{File.basename(url)}\n" }
454
+
455
+ return @@logger.info("Valid Options are:\n\n#{available_options}")
456
+ else
457
+ available_options = ''
458
+ get_folder_item_options(
459
+ appscan_obj: appscan_obj,
460
+ folder_item_id: folder_item_id
461
+ )[:options].each { |url| available_options << "#{File.basename(url)}\n" }
462
+
463
+ return @@logger.error("Invalid option '#{option}' parameter passed.\nValid Options are:\n\n#{available_options}")
464
+ end
465
+
466
+ # Always Overwrite Existing Option Values
467
+ response = appscan_rest_call(
468
+ appscan_obj: appscan_obj,
469
+ http_method: :post,
470
+ rest_call: "folderitems/#{folder_item_id}/options/#{option}?put=1",
471
+ http_body: post_body.to_s
472
+ )
473
+
474
+ scan_config = {}
475
+ scan_config[:raw_response] = response
476
+ scan_config[:xml_response] = Nokogiri::XML(response)
477
+ scan_config[:options] = scan_config[:xml_response].xpath('//xmlns:option/@value')
478
+
479
+ scan_config
480
+ rescue StandardError => e
481
+ raise e
482
+ end
483
+
484
+ # Supported Method Parameters::
485
+ # PWN::Plugins::IBMAppscan.folder_item_scan_action(
486
+ # appscan_obj: 'required appscan_obj returned from login method',
487
+ # folder_item_id: 'required folder item id',
488
+ # action: 'required action for scan to follow. Available actions are: :run, :suspend, :cancel, & :end',
489
+ # poll_interval: 'optional setting to determine length in seconds to poll for scan state (defaults to 60)'
490
+ # )
491
+
492
+ public_class_method def self.folder_item_scan_action(opts = {})
493
+ appscan_obj = opts[:appscan_obj]
494
+ folder_item_id = opts[:folder_item_id].to_i
495
+ action = opts[:action].to_s.scrub.to_sym
496
+ poll_interval = if opts[:poll_interval].nil?
497
+ 60
498
+ else
499
+ opts[:poll_interval].to_i
500
+ end
501
+
502
+ case action
503
+ when :run
504
+ # Make sure scan is in a Ready state
505
+ this_folder_item = PWN::Plugins::IBMAppscan.get_folder_item_by_id(
506
+ appscan_obj: appscan_obj,
507
+ folder_item_id: folder_item_id
508
+ )
509
+ state = this_folder_item[:state]
510
+ return @@logger.error("Scan isn't in a Ready state. Current state: #{state}, abort.") if state != 'Ready'
511
+
512
+ @@logger.info("Kicking Off Scan for Folder Item: #{folder_item_id}")
513
+ response = appscan_rest_call(
514
+ appscan_obj: appscan_obj,
515
+ http_method: :post,
516
+ rest_call: "folderitems/#{folder_item_id}",
517
+ http_body: 'action=2'
518
+ )
519
+ # Obtain Status to Monitor Scan Completion
520
+ state = nil
521
+ until state == 'Ready'
522
+ sleep poll_interval
523
+ this_folder_item = PWN::Plugins::IBMAppscan.get_folder_item_by_id(
524
+ appscan_obj: appscan_obj,
525
+ folder_item_id: folder_item_id
526
+ )
527
+ state = this_folder_item[:state]
528
+ @@logger.info("Current Scan State: #{state}...")
529
+ end
530
+ @@logger.info("Scan Completed @ #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}")
531
+ when :suspend
532
+ response = appscan_rest_call(
533
+ appscan_obj: appscan_obj,
534
+ http_method: :post,
535
+ rest_call: "folderitems/#{folder_item_id}",
536
+ http_body: 'action=3'
537
+ )
538
+ when :cancel
539
+ response = appscan_rest_call(
540
+ appscan_obj: appscan_obj,
541
+ http_method: :post,
542
+ rest_call: "folderitems/#{folder_item_id}",
543
+ http_body: 'action=4'
544
+ )
545
+ when :end
546
+ response = appscan_rest_call(
547
+ appscan_obj: appscan_obj,
548
+ http_method: :post,
549
+ rest_call: "folderitems/#{folder_item_id}",
550
+ http_body: 'action=5'
551
+ )
552
+ else
553
+ return @@logger.error("Invalid action. Valid actions are:\n:run\n:suspend\n:cancel\n:end\n")
554
+ end
555
+
556
+ scan_action = {}
557
+ scan_action[:raw_response] = response
558
+ scan_action[:xml_response] = Nokogiri::XML(response)
559
+
560
+ scan_action
561
+ rescue StandardError => e
562
+ raise e
563
+ end
564
+
565
+ # Supported Method Parameters::
566
+ # PWN::Plugins::IBMAppscan.get_report_collection(
567
+ # appscan_obj: 'required appscan_obj returned from login method',
568
+ # report_folder_item_id: 'required report folder item id'
569
+ # )
570
+
571
+ public_class_method def self.get_report_collection(opts = {})
572
+ appscan_obj = opts[:appscan_obj]
573
+ report_folder_item_id = opts[:report_folder_item_id].to_i
574
+
575
+ @@logger.info("Retrieving Report Collection ID: #{report_folder_item_id} - Available Report Pack Collection:")
576
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "folderitems/#{report_folder_item_id}/reports")
577
+
578
+ report_collection = {}
579
+ report_collection[:raw_response] = response
580
+ report_collection[:xml_response] = Nokogiri::XML(response)
581
+ # Output full report pack collection
582
+ report_collection[:xml_response].xpath('//xmlns:report').each do |r|
583
+ @@logger.info(" - #{r.xpath('xmlns:name').text}")
584
+ end
585
+
586
+ report_collection
587
+ rescue StandardError => e
588
+ raise e
589
+ end
590
+
591
+ # Supported Method Parameters::
592
+ # PWN::Plugins::IBMAppscan.get_single_report(
593
+ # appscan_obj: 'required appscan_obj returned from login method',
594
+ # report_id: 'required report id'
595
+ # )
596
+
597
+ public_class_method def self.get_single_report(opts = {})
598
+ appscan_obj = opts[:appscan_obj]
599
+ report_id = opts[:report_id].to_i
600
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: "reports/#{report_id}")
601
+
602
+ report = {}
603
+ report[:raw_response] = response
604
+ report[:xml_response] = Nokogiri::XML(response)
605
+ @@logger.info("Retrieved Report ID/Name: #{report_id}/#{report[:xml_response].xpath('//xmlns:report/xmlns:name').text}")
606
+
607
+ report
608
+ rescue StandardError => e
609
+ raise e
610
+ end
611
+
612
+ # Supported Method Parameters::
613
+ # PWN::Plugins::IBMAppscan.get_single_report_data(
614
+ # appscan_obj: 'required appscan_obj returned from login method',
615
+ # report_id: 'required report id'
616
+ # )
617
+
618
+ public_class_method def self.get_single_report_data(opts = {})
619
+ appscan_obj = opts[:appscan_obj]
620
+ report_id = opts[:report_id].to_i
621
+ response = appscan_rest_call(
622
+ appscan_obj: appscan_obj,
623
+ rest_call: "reports/#{report_id}/data?mode=all"
624
+ )
625
+
626
+ report_data = {}
627
+ report_data[:raw_response] = response
628
+ report_data[:xml_response] = Nokogiri::XML(response)
629
+ @@logger.info("Retrieved Report Data for Report ID: #{report_id}")
630
+
631
+ report_data
632
+ rescue StandardError => e
633
+ raise e
634
+ end
635
+
636
+ # Supported Method Parameters::
637
+ # PWN::Plugins::IBMAppscan.get_single_report_schema(
638
+ # appscan_obj: 'required appscan_obj returned from login method',
639
+ # report_id: 'required report id'
640
+ # )
641
+
642
+ public_class_method def self.get_single_report_schema(opts = {})
643
+ appscan_obj = opts[:appscan_obj]
644
+ report_id = opts[:report_id].to_i
645
+ response = appscan_rest_call(
646
+ appscan_obj: appscan_obj,
647
+ rest_call: "reports/#{report_id}/data?metadata=schema"
648
+ )
649
+
650
+ report_schema = {}
651
+ report_schema[:raw_response] = response
652
+ report_schema[:xml_response] = Nokogiri::XML(response)
653
+ @@logger.info("Retrieved Report Schema for Report ID: #{report_id}")
654
+
655
+ report_schema
656
+ rescue StandardError => e
657
+ raise e
658
+ end
659
+
660
+ # Supported Method Parameters::
661
+ # PWN::Plugins::IBMAppscan.get_issue_collection(
662
+ # appscan_obj: 'required appscan_obj returned from login method',
663
+ # report_id: 'required report id'
664
+ # )
665
+
666
+ public_class_method def self.get_issue_collection(opts = {})
667
+ appscan_obj = opts[:appscan_obj]
668
+ report_id = opts[:report_id].to_i
669
+ response = appscan_rest_call(
670
+ appscan_obj: appscan_obj,
671
+ rest_call: "reports/#{report_id}/issues?mode=all"
672
+ )
673
+
674
+ issue_collection = {}
675
+ issue_collection[:raw_response] = response
676
+ issue_collection[:xml_response] = Nokogiri::XML(response)
677
+ @@logger.info("Retrieved Issue Collection for Report ID: #{report_id}")
678
+
679
+ issue_collection
680
+ rescue StandardError => e
681
+ raise e
682
+ end
683
+
684
+ # Supported Method Parameters::
685
+ # PWN::Plugins::IBMAppscan.get_report_data
686
+ # appscan_obj: 'required appscan_obj returned from login method'
687
+ # report_link: 'required report link to start report generation
688
+ # output_name: 'required name to save generated report'
689
+
690
+ private_class_method def self.get_report_data(opts = {})
691
+ appscan_obj = opts[:appscan_obj]
692
+ report_link = opts[:report_link]
693
+ output_name = opts[:output_name]
694
+
695
+ # First Get request
696
+ uri = URI.parse(report_link)
697
+ rb = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
698
+ res = rb.get(report_link, 'Cookie' => appscan_obj[:cookie], :verify_ssl => OpenSSL::SSL::VERIFY_NONE)
699
+ location = "https://#{uri.host}#{res.headers['location']}"
700
+
701
+ puts "Location: #{location}"
702
+ # Generate the report on the server side
703
+ res = rb.get(location, 'Cookie' => appscan_obj[:cookie], :verify_ssl => OpenSSL::SSL::VERIFY_NONE)
704
+
705
+ # Now get the file
706
+ f = File.open(output_name, 'wb')
707
+ location['Export'] = 'Stream'
708
+ begin
709
+ rb.get(location, 'Cookie' => appscan_obj[:cookie], :verify_ssl => OpenSSL::SSL::VERIFY_NONE) do |resp|
710
+ resp.read_body do |seg|
711
+ f.write(seg)
712
+ end
713
+ end
714
+ ensure
715
+ f.close
716
+ end
717
+ rescue StandardError => e
718
+ @@logger.error("Could not get report data: #{e}")
719
+ end
720
+
721
+ # Supported Method Parameters::
722
+ # PWN::Plugins::IBMAppscan.generate_scan_report
723
+ # appscan_obj: 'required appscan_obj returned from login method'
724
+ # scan_name: 'required name of scan for which to generate a report'
725
+ # output_path: 'required path to save generated report'
726
+
727
+ public_class_method def self.generate_scan_report(opts = {})
728
+ appscan_obj = opts[:appscan_obj]
729
+ scan_name = opts[:scan_name]
730
+ output_path = opts[:output_path]
731
+ appscan_ip = appscan_obj[:appscan_ip].to_s.scrub
732
+ login_uri = "https://#{appscan_ip}:9443/ase/pages/Login.jsp"
733
+ base_appscan_uri = "https://#{appscan_ip}/ase/FolderExplorer.aspx"
734
+ logout_uri = "https://#{appscan_ip}/ase/LogOut.aspx"
735
+
736
+ # verify the output path actually exists
737
+ return @@logger.error("Output directory does not exist: #{output_path}") unless File.directory?(output_path)
738
+
739
+ # REMEMBER TO CHANGE BROWSER TYPE BACK TO HEADLESS!!!!
740
+ h_browser = PWN::Plugins::TransparentBrowser.open(browser_type: :firefox,
741
+ proxy: 'http://127.0.0.1:8080')
742
+
743
+ # log into the system
744
+ h_browser.goto login_uri.to_s.to_s.scrub
745
+ h_browser.text_field(name: 'j_username').when_present.set(appscan_obj[:username])
746
+ h_browser.text_field(name: 'j_password').when_present.set(Base64.decode64(appscan_obj[:password]))
747
+ h_browser.button(name: 'login').when_present.click
748
+
749
+ # head over to the reports page and click on the report link
750
+ h_browser.goto base_appscan_uri.to_s.to_s.scrub
751
+ h_browser.link(:text, 'ASE').when_present.click
752
+
753
+ # Search for the report link with a matching name and click it
754
+ clicked = false
755
+ h_browser.links.each do |link|
756
+ next unless (link.text == scan_name.to_s) && link.href =~ /^https:.+XReports.+/
757
+
758
+ link.when_present.click
759
+ clicked = true
760
+ break
761
+ end
762
+ return @@logger.error("Could not find matching scan name for name #{scan_name}") unless clicked
763
+
764
+ output_path = "#{output_path}/#{scan_name.gsub(/[^\w.\-]/, '_')}/"
765
+ FileUtils.rm_rf output_path if File.directory?(output_path)
766
+ FileUtils.mkpath output_path
767
+
768
+ # Download the top level report
769
+ report_link = "#{h_browser.url}&exportformat=pdf&exportdelivery=download"
770
+ output_name = "#{output_path}Top_Level.pdf"
771
+ get_report_data(
772
+ appscan_obj: appscan_obj,
773
+ report_link: report_link,
774
+ output_name: output_name
775
+ )
776
+ rescue StandardError => e
777
+ @@logger.error("Error retrieving report for '#{scan_name}': #{e}")
778
+ ensure
779
+ # make sure we always logout
780
+ h_browser.goto logout_uri.to_s.to_s.scrub
781
+ h_browser.close
782
+ end
783
+
784
+ # Supported Method Parameters::
785
+ # PWN::Plugins::IBMAppscan.logout(
786
+ # appscan_obj: 'required appscan_obj returned from login method'
787
+ # )
788
+
789
+ public_class_method def self.logout(opts = {})
790
+ appscan_obj = opts[:appscan_obj]
791
+ @@logger.info('Logging out...')
792
+ response = appscan_rest_call(appscan_obj: appscan_obj, rest_call: 'logout')
793
+ if response == ''
794
+ appscan_obj[:logged_in] = false
795
+ 'logout successful'
796
+ else
797
+ response
798
+ end
799
+ rescue StandardError => e
800
+ raise e
801
+ end
802
+
803
+ # Author(s):: Jacob Hoopes <jake.hoopes@gmail.com>
804
+
805
+ public_class_method def self.authors
806
+ "AUTHOR(S):
807
+ Jacob Hoopes <jake.hoopes@gmail.com>
808
+ "
809
+ end
810
+
811
+ # Display Usage for this Module
812
+
813
+ public_class_method def self.help
814
+ puts "USAGE:
815
+ appscan_obj = #{self}.login(
816
+ appscan_ip: 'required host/ip of Nexpose Console (server)',
817
+ username: 'required username',
818
+ password: 'optional password (will prompt if nil)'
819
+ )
820
+
821
+ schema = #{self}.schema(
822
+ appscan_obj: 'required appscan_obj returned from login method'
823
+ )
824
+
825
+ version = #{self}.version(
826
+ appscan_obj: 'required appscan_obj returned from login method'
827
+ )
828
+
829
+ folders = #{self}.get_folders(
830
+ appscan_obj: 'required appscan_obj returned from login method'
831
+ )
832
+
833
+ subfolders = #{self}.get_subfolders_of_folder(
834
+ appscan_obj: 'required appscan_obj returned from login method',
835
+ folder_id: 'required folder to retrieve'
836
+ )
837
+
838
+ folder = #{self}.get_folder_by_id(
839
+ appscan_obj: 'required appscan_obj returned from login method',
840
+ folder_id: 'required folder to retrieve'
841
+ )
842
+
843
+ folder_items = #{self}.get_folder_items(
844
+ appscan_obj: 'required appscan_obj returned from login method'
845
+ )
846
+
847
+ folder_item = #{self}.get_folder_item_by_id(
848
+ appscan_obj: 'required appscan_obj returned from login method',
849
+ folder_item_id: 'required folder item to retrieve'
850
+ )
851
+
852
+ a_folders_folder_items = #{self}.get_a_folders_folder_items(
853
+ appscan_obj: 'required appscan_obj returned from login method',
854
+ folder_id: 'required folder to retrieve'
855
+ )
856
+
857
+ folder_item_options = #{self}.get_folder_item_options(
858
+ appscan_obj: 'required appscan_obj returned from login method',
859
+ folder_item_id: 'required folder item to retrieve'
860
+ )
861
+
862
+ scan = #{self}.create_scan_based_on_template(
863
+ appscan_obj: 'required appscan_obj returned from login method'
864
+ template_id: 'required template id returned from get_scan_templates method'
865
+ scan_name: 'required name of scan'
866
+ scan_desc: 'required description of scan'
867
+ )
868
+
869
+ templates = #{self}.get_scan_templates(
870
+ appscan_obj: 'required appscan_obj returned from login method'
871
+ )
872
+
873
+ scan_config = #{self}.configure_scan_options(
874
+ appscan_obj: 'required appscan_obj returned from login method',
875
+ folder_item_id: 'required folder item id',
876
+ option: 'required option to change within the scan (folder item). Pass :help for a list of options.',
877
+ value: 'required option value(s)'
878
+ )
879
+
880
+ scan_action = #{self}.folder_item_scan_action(
881
+ appscan_obj: 'required appscan_obj returned from login method',
882
+ folder_item_id: 'required folder item id',
883
+ action: 'required action for scan to follow. Available actions are: :run, :suspend, :cancel, & :end',
884
+ poll_interval: 'optional setting to determine length in seconds to poll for scan state (defaults to 60)'
885
+ )
886
+
887
+ report_collection = #{self}.get_report_collection(
888
+ appscan_obj: 'required appscan_obj returned from login method',
889
+ report_folder_item_id: 'required report folder item id'
890
+ )
891
+
892
+ report = #{self}.get_single_report(
893
+ appscan_obj: 'required appscan_obj returned from login method',
894
+ report_id: 'required report id'
895
+ )
896
+
897
+ report_data = #{self}.get_single_report_data(
898
+ appscan_obj: 'required appscan_obj returned from login method',
899
+ report_id: 'required report id'
900
+ )
901
+
902
+ report_schema = #{self}.get_single_report_schema(
903
+ appscan_obj: 'required appscan_obj returned from login method',
904
+ report_id: 'required report id'
905
+ )
906
+
907
+ issue_collection = #{self}.get_issue_collection(
908
+ appscan_obj: 'required appscan_obj returned from login method',
909
+ report_id: 'required report id'
910
+ )
911
+
912
+ #{self}.generate_scan_report(
913
+ appscan_obj: 'required appscan_obj returned from login',
914
+ scan_name: 'required name of scan for which to generate a report',
915
+ output_path: 'required path to save generated report'
916
+ )
917
+
918
+ #{self}.logout(
919
+ appscan_obj: 'required appscan_obj returned from login method'
920
+ )
921
+
922
+ #{self}.authors
923
+ "
924
+ end
925
+ end
926
+ end
927
+ end