watobo 0.9.8.677

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 (260) hide show
  1. data/bin/watobo_gui.rb +39 -0
  2. data/certificates/cert.pem +19 -0
  3. data/certificates/privkey.pem +15 -0
  4. data/certificates/watobo_dh.key +5 -0
  5. data/config/datastore.yml +5 -0
  6. data/config/forwarding_proxy.yml +12 -0
  7. data/config/general.yml +4 -0
  8. data/config/gui.yml +23 -0
  9. data/config/interceptor.yml +16 -0
  10. data/config/scan_policy.yml +13 -0
  11. data/config/scanner.yml +34 -0
  12. data/icons/Add.ico +0 -0
  13. data/icons/Add_24x24.ico +0 -0
  14. data/icons/Bandwidth.ico +0 -0
  15. data/icons/Bandwidth_24x24.ico +0 -0
  16. data/icons/Mr. Bomb.ico +0 -0
  17. data/icons/Mr. Bomb_16x16.ico +0 -0
  18. data/icons/Mr. Bomb_24x24.ico +0 -0
  19. data/icons/Orange Ball.ico +0 -0
  20. data/icons/Orange Ball_16x16.ico +0 -0
  21. data/icons/Orange Ball_24x24.ico +0 -0
  22. data/icons/Pause.ico +0 -0
  23. data/icons/Play.ico +0 -0
  24. data/icons/Play_24x24.ico +0 -0
  25. data/icons/Red Ball.ico +0 -0
  26. data/icons/Red Ball_16x16.ico +0 -0
  27. data/icons/Red Ball_24x24.ico +0 -0
  28. data/icons/Run.ico +0 -0
  29. data/icons/Stop.ico +0 -0
  30. data/icons/Stop_24x24.ico +0 -0
  31. data/icons/Terminal.ico +0 -0
  32. data/icons/Transfer.ico +0 -0
  33. data/icons/Transfer_16x16.ico +0 -0
  34. data/icons/User.ico +0 -0
  35. data/icons/User_16x16.ico +0 -0
  36. data/icons/User_24x24.ico +0 -0
  37. data/icons/Web Browser.ico +0 -0
  38. data/icons/Web Browser_16x16.ico +0 -0
  39. data/icons/Write Document.ico +0 -0
  40. data/icons/Yellow Ball.ico +0 -0
  41. data/icons/Yellow Ball_16x16.ico +0 -0
  42. data/icons/Yellow Ball_24x24.ico +0 -0
  43. data/icons/advanced.ico +0 -0
  44. data/icons/advanced_16x16.ico +0 -0
  45. data/icons/advanced_24x24.ico +0 -0
  46. data/icons/applications.ico +0 -0
  47. data/icons/applications_16x16.ico +0 -0
  48. data/icons/applications_24x24.ico +0 -0
  49. data/icons/browser_16x16.ico +0 -0
  50. data/icons/browser_24x24.ico +0 -0
  51. data/icons/burn.ico +0 -0
  52. data/icons/burn_16x16.ico +0 -0
  53. data/icons/burn_24x24.ico +0 -0
  54. data/icons/calculator.ico +0 -0
  55. data/icons/calculator_24x24.ico +0 -0
  56. data/icons/cb_checked.ico +0 -0
  57. data/icons/cb_checked_orange.ico +0 -0
  58. data/icons/cb_unchecked.ico +0 -0
  59. data/icons/coin_24x24.ico +0 -0
  60. data/icons/conversation.ico +0 -0
  61. data/icons/conversation_24x24.ico +0 -0
  62. data/icons/engine.ico +0 -0
  63. data/icons/filter.ico +0 -0
  64. data/icons/folder.ico +0 -0
  65. data/icons/folder_16x16.ico +0 -0
  66. data/icons/fuzzer_16x16.ico +0 -0
  67. data/icons/fuzzer_24x24.ico +0 -0
  68. data/icons/go-down_16x16.png +0 -0
  69. data/icons/go-up_16x16.png +0 -0
  70. data/icons/help.ico +0 -0
  71. data/icons/help_16x16.ico +0 -0
  72. data/icons/help_24x24.ico +0 -0
  73. data/icons/iChat.ico +0 -0
  74. data/icons/iChat_16x16.ico +0 -0
  75. data/icons/iChat_24x24.ico +0 -0
  76. data/icons/icons.txt +3 -0
  77. data/icons/info.ico +0 -0
  78. data/icons/info_16x16.ico +0 -0
  79. data/icons/info_24x24.ico +0 -0
  80. data/icons/interceptor_24x24.ico +0 -0
  81. data/icons/lock.ico +0 -0
  82. data/icons/lock_12x12.ico +0 -0
  83. data/icons/lock_16x16.ico +0 -0
  84. data/icons/monitor.ico +0 -0
  85. data/icons/plugin.ico +0 -0
  86. data/icons/plugin_24x24.ico +0 -0
  87. data/icons/scan_16x16.png +0 -0
  88. data/icons/send.ico +0 -0
  89. data/icons/server.ico +0 -0
  90. data/icons/server_16x16.ico +0 -0
  91. data/icons/siberas_logo_x24.gif +0 -0
  92. data/icons/tag_blue_32x32.ico +0 -0
  93. data/icons/watobo-48x48.png +0 -0
  94. data/icons/watobo-logo.png +0 -0
  95. data/icons/watobo.ico +0 -0
  96. data/lib/watobo/adapters/data_store.rb +38 -0
  97. data/lib/watobo/adapters/file/file_store.rb +211 -0
  98. data/lib/watobo/adapters/session_store.rb +27 -0
  99. data/lib/watobo/adapters.rb +26 -0
  100. data/lib/watobo/config.rb +143 -0
  101. data/lib/watobo/constants.rb +92 -0
  102. data/lib/watobo/core/active_check.rb +404 -0
  103. data/lib/watobo/core/cookie.rb +69 -0
  104. data/lib/watobo/core/fuzz_gen.rb +160 -0
  105. data/lib/watobo/core/http_socket.rb +142 -0
  106. data/lib/watobo/core/interceptor.rb +729 -0
  107. data/lib/watobo/core/passive_check.rb +141 -0
  108. data/lib/watobo/core/project.rb +1058 -0
  109. data/lib/watobo/core/scanner.rb +396 -0
  110. data/lib/watobo/core/session.rb +1320 -0
  111. data/lib/watobo/core/simple_ca.rb +393 -0
  112. data/lib/watobo/core.rb +34 -0
  113. data/lib/watobo/defaults.rb +40 -0
  114. data/lib/watobo/external/diff/lcs/array.rb +42 -0
  115. data/lib/watobo/external/diff/lcs/block.rb +72 -0
  116. data/lib/watobo/external/diff/lcs/callbacks.rb +343 -0
  117. data/lib/watobo/external/diff/lcs/change.rb +190 -0
  118. data/lib/watobo/external/diff/lcs/hunk.rb +279 -0
  119. data/lib/watobo/external/diff/lcs/ldiff.rb +247 -0
  120. data/lib/watobo/external/diff/lcs/string.rb +40 -0
  121. data/lib/watobo/external/diff/lcs.rb +1124 -0
  122. data/lib/watobo/external/ntlm/ntlm.rb +797 -0
  123. data/lib/watobo/externals.rb +28 -0
  124. data/lib/watobo/framework/create_project.rb +55 -0
  125. data/lib/watobo/framework/init.rb +149 -0
  126. data/lib/watobo/framework/init_modules.rb +116 -0
  127. data/lib/watobo/framework/license_text.rb +50 -0
  128. data/lib/watobo/framework.rb +26 -0
  129. data/lib/watobo/gui/about_watobo.rb +68 -0
  130. data/lib/watobo/gui/browser_preview.rb +460 -0
  131. data/lib/watobo/gui/certificate_dialog.rb +132 -0
  132. data/lib/watobo/gui/chat_diff.rb +415 -0
  133. data/lib/watobo/gui/chatviewer_frame.rb +427 -0
  134. data/lib/watobo/gui/checkboxtree.rb +221 -0
  135. data/lib/watobo/gui/checks_policy_frame.rb +123 -0
  136. data/lib/watobo/gui/client_cert_dialog.rb +227 -0
  137. data/lib/watobo/gui/confirm_scan_dialog.rb +67 -0
  138. data/lib/watobo/gui/conversation_table.rb +386 -0
  139. data/lib/watobo/gui/conversation_table_ctrl.rb +175 -0
  140. data/lib/watobo/gui/csrf_token_dialog.rb +446 -0
  141. data/lib/watobo/gui/dashboard.rb +341 -0
  142. data/lib/watobo/gui/define_scope_frame.rb +380 -0
  143. data/lib/watobo/gui/edit_comment.rb +70 -0
  144. data/lib/watobo/gui/edit_scope_dialog.rb +69 -0
  145. data/lib/watobo/gui/finding_info.rb +212 -0
  146. data/lib/watobo/gui/findings_tree.rb +459 -0
  147. data/lib/watobo/gui/full_scan_dialog.rb +269 -0
  148. data/lib/watobo/gui/fuzzer_gui.rb +1522 -0
  149. data/lib/watobo/gui/hex_viewer.rb +106 -0
  150. data/lib/watobo/gui/interceptor_gui.rb +994 -0
  151. data/lib/watobo/gui/interceptor_settings_dialog.rb +201 -0
  152. data/lib/watobo/gui/log_viewer.rb +97 -0
  153. data/lib/watobo/gui/login_wizzard.rb +301 -0
  154. data/lib/watobo/gui/main_window.rb +1815 -0
  155. data/lib/watobo/gui/manual_request_editor.rb +1105 -0
  156. data/lib/watobo/gui/master_pw_dialog.rb +142 -0
  157. data/lib/watobo/gui/password_policy_dialog.rb +98 -0
  158. data/lib/watobo/gui/plugin/base.rb +82 -0
  159. data/lib/watobo/gui/plugin_board.rb +95 -0
  160. data/lib/watobo/gui/preferences_dialog.rb +116 -0
  161. data/lib/watobo/gui/progress_window.rb +102 -0
  162. data/lib/watobo/gui/project_wizzard.rb +369 -0
  163. data/lib/watobo/gui/proxy_dialog.rb +550 -0
  164. data/lib/watobo/gui/quick_scan_dialog.rb +242 -0
  165. data/lib/watobo/gui/request_editor.rb +480 -0
  166. data/lib/watobo/gui/save_chat_dialog.rb +158 -0
  167. data/lib/watobo/gui/scanner_settings_dialog.rb +360 -0
  168. data/lib/watobo/gui/select_chat_dialog.rb +169 -0
  169. data/lib/watobo/gui/session_management_dialog.rb +688 -0
  170. data/lib/watobo/gui/sites_tree.rb +347 -0
  171. data/lib/watobo/gui/status_bar.rb +88 -0
  172. data/lib/watobo/gui/table_editor.rb +445 -0
  173. data/lib/watobo/gui/tagless_viewer.rb +62 -0
  174. data/lib/watobo/gui/templates/plugin.rb +80 -0
  175. data/lib/watobo/gui/templates/plugin2.rb +103 -0
  176. data/lib/watobo/gui/text_viewer.rb +247 -0
  177. data/lib/watobo/gui/transcoder_window.rb +215 -0
  178. data/lib/watobo/gui/utils/gui_utils.rb +129 -0
  179. data/lib/watobo/gui/utils/init_icons.rb +106 -0
  180. data/lib/watobo/gui/utils/load_icons.rb +54 -0
  181. data/lib/watobo/gui/utils/load_plugins.rb +94 -0
  182. data/lib/watobo/gui/utils/master_password.rb +90 -0
  183. data/lib/watobo/gui/utils/save_default_settings.rb +99 -0
  184. data/lib/watobo/gui/utils/save_project_settings.rb +21 -0
  185. data/lib/watobo/gui/utils/save_proxy_settings.rb +45 -0
  186. data/lib/watobo/gui/utils/save_session_settings.rb +21 -0
  187. data/lib/watobo/gui/utils/session_history.rb +134 -0
  188. data/lib/watobo/gui/workspace_dialog.rb +89 -0
  189. data/lib/watobo/gui/www_auth_dialog.rb +348 -0
  190. data/lib/watobo/gui/xml_viewer_frame.rb +114 -0
  191. data/lib/watobo/gui.rb +139 -0
  192. data/lib/watobo/mixins/httpparser.rb +664 -0
  193. data/lib/watobo/mixins/request_parser.rb +210 -0
  194. data/lib/watobo/mixins/shapers.rb +345 -0
  195. data/lib/watobo/mixins/transcoders.rb +88 -0
  196. data/lib/watobo/mixins.rb +32 -0
  197. data/lib/watobo/utils/check_regex.rb +36 -0
  198. data/lib/watobo/utils/copy_object.rb +29 -0
  199. data/lib/watobo/utils/crypto.rb +74 -0
  200. data/lib/watobo/utils/expand_range.rb +45 -0
  201. data/lib/watobo/utils/file_management.rb +73 -0
  202. data/lib/watobo/utils/load_chat.rb +219 -0
  203. data/lib/watobo/utils/load_icon.rb +47 -0
  204. data/lib/watobo/utils/print_debug.rb +34 -0
  205. data/lib/watobo/utils/response_hash.rb +143 -0
  206. data/lib/watobo/utils/secure_eval.rb +57 -0
  207. data/lib/watobo/utils/text2request.rb +96 -0
  208. data/lib/watobo/utils.rb +32 -0
  209. data/lib/watobo.rb +76 -0
  210. data/modules/active/Apache/mod_status.rb +123 -0
  211. data/modules/active/Flash/crossdomain.rb +102 -0
  212. data/modules/active/directories/dirwalker.rb +89 -0
  213. data/modules/active/discovery/fileextensions.rb +151 -0
  214. data/modules/active/discovery/http_methods.rb +135 -0
  215. data/modules/active/domino/domino_db.lst +164 -0
  216. data/modules/active/domino/domino_db.rb +128 -0
  217. data/modules/active/fileinclusion/lfi_simple.rb +134 -0
  218. data/modules/active/jboss/jboss_basic.rb +119 -0
  219. data/modules/active/sap/business_objects.rb +73 -0
  220. data/modules/active/sap/its_commands.rb +101 -0
  221. data/modules/active/sap/its_service_parameter.rb +105 -0
  222. data/modules/active/sap/its_services.rb +103 -0
  223. data/modules/active/sap/its_xss.rb +98 -0
  224. data/modules/active/sqlinjection/sql_boolean.rb +262 -0
  225. data/modules/active/sqlinjection/sqli_simple.rb +205 -0
  226. data/modules/active/xss/xss_simple.rb +179 -0
  227. data/modules/passive/cookie_options.rb +97 -0
  228. data/modules/passive/cookie_xss.rb +85 -0
  229. data/modules/passive/detect_code.rb +89 -0
  230. data/modules/passive/detect_fileupload.rb +80 -0
  231. data/modules/passive/detect_infrastructure.rb +98 -0
  232. data/modules/passive/detect_one_time_tokens.rb +86 -0
  233. data/modules/passive/dirindexing.rb +81 -0
  234. data/modules/passive/disclosure_emails.rb +82 -0
  235. data/modules/passive/disclosure_ipaddr.rb +87 -0
  236. data/modules/passive/filename_as_parameter.rb +85 -0
  237. data/modules/passive/form_spotter.rb +75 -0
  238. data/modules/passive/hotspots.rb +86 -0
  239. data/modules/passive/in_script_parameter.rb +92 -0
  240. data/modules/passive/multiple_server_headers.rb +98 -0
  241. data/modules/passive/possible_login.rb +134 -0
  242. data/modules/passive/redirect_url.rb +88 -0
  243. data/modules/passive/redirectionz.rb +96 -0
  244. data/modules/passive/xss_dom.rb +91 -0
  245. data/plugins/catalog/catalog.ico +0 -0
  246. data/plugins/catalog/catalog.rb +726 -0
  247. data/plugins/catalog/db_tests +6483 -0
  248. data/plugins/catalog/db_variables +29 -0
  249. data/plugins/filefinder/dbs/hbci.db +12 -0
  250. data/plugins/filefinder/filefinder.rb +602 -0
  251. data/plugins/sslchecker/cli/sslchecker_cli.rb +21 -0
  252. data/plugins/sslchecker/gui/cipher_table.rb +260 -0
  253. data/plugins/sslchecker/gui/gui.rb +245 -0
  254. data/plugins/sslchecker/gui/sslchecker.rb +26 -0
  255. data/plugins/sslchecker/icons/green_16x16.ico +0 -0
  256. data/plugins/sslchecker/icons/grey_16x16.ico +0 -0
  257. data/plugins/sslchecker/icons/red_16x16.ico +0 -0
  258. data/plugins/sslchecker/icons/sslchecker.ico +0 -0
  259. data/plugins/sslchecker/lib/check.rb +117 -0
  260. metadata +317 -0
@@ -0,0 +1,211 @@
1
+ # .
2
+ # file_store.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ class FileSessionStore < SessionStore
24
+ def num_chats
25
+ get_file_list(@conversation_path, "*-chat").length
26
+ end
27
+
28
+ def num_findings
29
+ get_file_list(@findings_path, "*-finding").length
30
+ end
31
+
32
+ def add_finding(finding)
33
+ finding_file = File.join("#{@findings_path}", "#{finding.id}-finding")
34
+ if not File.exists?(finding_file) then
35
+
36
+ finding_data = {
37
+ :request => finding.request.map{|x| x.inspect},
38
+ :response => finding.response.map{|x| x.inspect},
39
+ :details => Hash.new
40
+ }
41
+ finding_data[:details].update(finding.details)
42
+
43
+ if not File.exists?(finding_file) then
44
+ fh = File.new(finding_file, "w+b")
45
+ fh.print YAML.dump(finding_data)
46
+ fh.close
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ def delete_finding(finding)
53
+ finding_file = File.join("#{@findings_path}", "#{finding.id}-finding")
54
+ File.delete finding_file if File.exist? finding_file
55
+
56
+ end
57
+
58
+ def update_finding(finding)
59
+ finding_file = File.join("#{@findings_path}", "#{finding.id}-finding")
60
+ finding_data = {
61
+ :request => finding.request.map{|x| x.inspect},
62
+ :response => finding.response.map{|x| x.inspect},
63
+ :details => Hash.new
64
+ }
65
+ finding_data[:details].update(finding.details)
66
+
67
+ if File.exists?(finding_file) then
68
+ fh = File.new(finding_file, "w+b")
69
+ fh.print YAML.dump(finding_data)
70
+ fh.close
71
+ end
72
+
73
+ end
74
+
75
+ # add_scan_log
76
+ # adds a chat to a specific log store, e.g. if you want to log scan results.
77
+ # needs a scan_name (STRING) as its destination which will be created
78
+ # if the scan name does not exist.
79
+ def add_scan_log(chat, scan_name = nil)
80
+ begin
81
+ return false if scan_name.nil?
82
+ puts ">> scan_name"
83
+ path = File.join(@scanlog_path, scan_name)
84
+
85
+ Dir.mkdir path unless File.exist? path
86
+
87
+ log_file = File.join( path, "log_" + Time.now.to_f.to_s)
88
+
89
+ chat_data = {
90
+ :request => chat.request.map{|x| x.inspect},
91
+ :response => chat.response.map{|x| x.inspect},
92
+ }
93
+ puts log_file
94
+ chat_data.update(chat.settings)
95
+ File.open(log_file, "w") { |fh|
96
+ YAML.dump(chat_data, fh)
97
+ }
98
+ return true
99
+ rescue => bang
100
+ puts bang
101
+ puts bang.backtrace if $DEBUG
102
+ end
103
+ return false
104
+ end
105
+
106
+ def add_chat(chat)
107
+ chat_file = File.join("#{@conversation_path}", "#{chat.id}-chat")
108
+ chat_data = {
109
+ :request => chat.request.map{|x| x.inspect},
110
+ :response => chat.response.map{|x| x.inspect},
111
+ }
112
+
113
+ chat_data.update(chat.settings)
114
+ if not File.exists?(chat_file) then
115
+ File.open(chat_file, "w") { |fh|
116
+ YAML.dump(chat_data, fh)
117
+ }
118
+ chat.file = chat_file
119
+ end
120
+ end
121
+
122
+ def each_chat(&block)
123
+ get_file_list(@conversation_path, "*-chat").each do |fname|
124
+ chat = Watobo::Utils.loadChatYAML(fname)
125
+ next unless chat
126
+ yield chat if block_given?
127
+ end
128
+ end
129
+
130
+ def each_finding(&block)
131
+ get_file_list(@findings_path, "*-finding").each do |fname|
132
+ f = Watobo::Utils.loadFindingYAML(fname)
133
+ next unless f
134
+ yield f if block_given?
135
+ end
136
+ end
137
+
138
+
139
+
140
+ def initialize(project_name, session_name)
141
+
142
+ wsp = Watobo.workspace_path
143
+ return false unless File.exist? wsp
144
+ puts "* using workspace path: #{wsp}"
145
+ project_path = File.join(wsp, project_name)
146
+ unless File.exist? project_path
147
+ puts "* create project path: #{project_path}"
148
+ Dir.mkdir(project_path)
149
+ end
150
+ session_path = File.join(project_path, session_name)
151
+
152
+ unless File.exist? session_path
153
+ puts "* create session path: #{session_path}"
154
+ Dir.mkdir(session_path)
155
+ end
156
+ sext = Watobo::Conf::General.session_settings_file_ext
157
+ puts "SEXT: #{sext}"
158
+ @session_file = File.join(session_path, session_name + sext)
159
+ @project_file = File.join(project_path, project_name + Watobo::Conf::General.project_settings_file_ext)
160
+
161
+ @conversation_path = File.expand_path(File.join(session_path, Watobo::Conf::Datastore.conversations))
162
+
163
+ @findings_path = File.expand_path(File.join(session_path, Watobo::Conf::Datastore.findings))
164
+ @log_path = File.expand_path(File.join(session_path, Watobo::Conf::Datastore.event_logs_dir))
165
+ @scanlog_path = File.expand_path(File.join(session_path, Watobo::Conf::Datastore.scan_logs_dir))
166
+
167
+ [ @conversation_path, @findings_path, @log_path, @scanlog_path ].each do |folder|
168
+ if not File.exists?(folder) then
169
+ puts "create path #{folder}"
170
+ begin
171
+ Dir.mkdir(folder)
172
+ rescue SystemCallError => bang
173
+ puts "!!!ERROR:"
174
+ puts bang
175
+ rescue => bang
176
+ puts "!!!ERROR:"
177
+ puts bang
178
+ end
179
+ end
180
+ end
181
+
182
+ # @chat_files = get_file_list(@conversation_path, "*-chat")
183
+ # @finding_files = get_file_list(@findings_path, "*-finding")
184
+ end
185
+
186
+
187
+ def save_session_settings(session_settings)
188
+
189
+ end
190
+
191
+ def load_session_settings()
192
+
193
+ end
194
+
195
+ def save_project_settings(project_settings)
196
+
197
+ end
198
+
199
+ def load_project_settings()
200
+
201
+ end
202
+
203
+ private
204
+
205
+ def get_file_list(path, pattern)
206
+ Dir["#{path}/#{pattern}"].sort_by{ |x| File.basename(x).sub(/[^0-9]*/,'').to_i }
207
+ end
208
+
209
+ end
210
+
211
+ end
@@ -0,0 +1,27 @@
1
+ # .
2
+ # session_store.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ class SessionStore
24
+
25
+ # TODO: Define default methods here
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ # .
2
+ # adapters.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ %w( data_store session_store ).each do |lib|
23
+ require "watobo/adapters/#{lib}"
24
+ end
25
+
26
+ require "watobo/adapters/file/file_store"
@@ -0,0 +1,143 @@
1
+ # .
2
+ # config.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ module Conf
24
+
25
+ @@settings = Hash.new
26
+ @count = 0
27
+ @@modules = []
28
+ def self.each(&b)
29
+ @@modules.each do |m|
30
+ yield m if block_given?
31
+ end
32
+ @@modules.length
33
+ end
34
+
35
+ def self.add(group, settings)
36
+ # puts "* create new configuration for #{group}"
37
+
38
+ module_eval("module #{group}; @settings = #{settings} end")
39
+ m = const_get(group)
40
+ m.module_eval do
41
+ def self.to_file
42
+ n = self.to_s.gsub(/(Watobo)?::/, "/").gsub(/([A-Z])([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr("-","_").downcase
43
+ n << ".yml"
44
+ end
45
+
46
+ def self.update(filename=nil, &b)
47
+ n = self.to_file
48
+ file = filename unless filename.nil?
49
+ file = File.join( Watobo::Conf::General.working_directory, n )
50
+ if File.exist? file
51
+ puts " [#{self}] update settings from file #{file}"
52
+ @settings.update YAML.load_file(file)
53
+ puts @settings.to_yaml
54
+ puts self.dump if $DEBUG
55
+ else
56
+ puts "! [#{self}] could not update settings from file #{file}" if $DEBUG
57
+ end
58
+ end
59
+
60
+ def self.set(settings)
61
+ return false unless settings.is_a? Hash
62
+ @settings = YAML.load(YAML.dump(settings))
63
+ end
64
+
65
+ def self.save(path=nil, &b)
66
+
67
+ n = self.to_file
68
+ p = Conf::General.working_directory
69
+ unless path.nil?
70
+ if File.exist? path
71
+ p = path
72
+ end
73
+ end
74
+
75
+ file = File.join( p, n )
76
+
77
+ s = YAML.load(YAML.dump(@settings))
78
+ s.each_pair do |k,v|
79
+ yield k,v if block_given?
80
+ end
81
+
82
+ if File.exist?(File.dirname(file))
83
+ puts "* save config #{self} to: #{file}"
84
+ puts s.to_yaml
85
+ File.open(file, "w") { |fh|
86
+ YAML.dump(s, fh)
87
+ }
88
+ else
89
+ puts "Could not save file to #{File.dirname(file)}"
90
+ end
91
+ end
92
+
93
+ def self.respond_to?(f)
94
+ # puts "* respond_to?"
95
+ # puts f
96
+ return true if @settings.has_key? f.to_sym
97
+ # puts @settings.to_yaml
98
+ super
99
+ end
100
+
101
+ def self.dump
102
+ @settings
103
+ end
104
+
105
+ #@@settings = settings
106
+ def self.method_missing(name, *args, &block)
107
+ # puts "* instance method missing (#{name})"
108
+ if name =~ /(.*)=$/
109
+ @settings.has_key? $1.to_sym || super
110
+ @settings[$1.to_sym] = args[0]
111
+ else
112
+ # puts @settings[name.to_sym]
113
+ @settings[name.to_sym]
114
+
115
+ end
116
+ end
117
+
118
+ def self.included(clazz)
119
+ puts "* #{self} gets included into #{clazz}"
120
+ @settings.each_key do |k|
121
+ puts "* add method for #{k}"
122
+
123
+ clazz.class_eval "
124
+ @@#{k} ||= #{self}.#{k}
125
+
126
+ def #{k}=(value)
127
+ @@#{k} = value
128
+ end
129
+
130
+ def #{k}
131
+ @@#{k}
132
+ end
133
+ "
134
+
135
+ end
136
+ end
137
+
138
+ end
139
+ @@modules << m
140
+ end
141
+
142
+ end
143
+ end
@@ -0,0 +1,92 @@
1
+ # .
2
+ # constants.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ $debug_project = false
23
+ $debug_active_check = false
24
+ $debug_scanner = false
25
+
26
+
27
+ module Watobo
28
+ module Constants
29
+ CHAT_SOURCE_UNDEF = 0x00
30
+ CHAT_SOURCE_INTERCEPT = 0x01
31
+ CHAT_SOURCE_PROXY = 0x02
32
+ CHAT_SOURCE_MANUAL = 0x03
33
+ CHAT_SOURCE_FUZZER = 0x04
34
+ CHAT_SOURCE_MANUAL_SCAN = 0x05
35
+ CHAT_SOURCE_AUTO_SCAN = 0x06
36
+
37
+ FINDING_TYPE_UNDEFINED = 0x00
38
+ FINDING_TYPE_INFO = 0x03
39
+ FINDING_TYPE_HINT = 0x01
40
+ FINDING_TYPE_VULN = 0x02
41
+
42
+ VULN_RATING_UNDEFINED = 0x00
43
+ VULN_RATING_INFO = 0x01
44
+ VULN_RATING_LOW = 0x02
45
+ VULN_RATING_MEDIUM = 0x03
46
+ VULN_RATING_HIGH = 0x04
47
+ VULN_RATING_CRITICAL = 0x05
48
+
49
+ # ActiveCheck Groups
50
+ AC_GROUP_GENERIC = "Generic"
51
+ AC_GROUP_SQL = "SQL-Injection"
52
+ AC_GROUP_XSS = "XSS"
53
+ AC_GROUP_ENUMERATION = "Enumeration"
54
+ AC_GROUP_FILE_INCLUSION = "File Inclusion"
55
+
56
+ AC_GROUP_DOMINO = "Lotus Domino"
57
+ AC_GROUP_SAP = "SAP"
58
+ AC_GROUP_TYPO3 = "Typo3"
59
+ AC_GROUP_JOOMLA = "Joomla"
60
+ AC_GROUP_JBOSS = "JBoss AS"
61
+ AC_GROUP_FLASH = "Flash"
62
+ AC_GROUP_APACHE = "Apache"
63
+
64
+ ICON_PATH = "icons"
65
+
66
+ FIRST_TIME_FILE = "first_time_file"
67
+
68
+ # Transfer Encoding Types
69
+ TE_NONE = 0x00
70
+ TE_CHUNKED = 0x01
71
+ TE_COMPRESS = 0x02
72
+ TE_GZIP = 0x04
73
+ TE_DEFLATE = 0x08
74
+ TE_IDENTITY = 0x10
75
+
76
+ # Log Level
77
+ LOG_INFO = 0x00
78
+ LOG_DEBUG = 0x01
79
+
80
+ # Authentication Types
81
+ AUTH_TYPE_NONE = 0x00
82
+ AUTH_TYPE_BASIC = 0x01
83
+ AUTH_TYPE_DIGEST = 0x02
84
+ AUTH_TYPE_NTLM = 0x04
85
+
86
+ GUI_SMALL_FONT_SIZE = 7
87
+ GUI_REGULAR_FONT_SIZE = 9
88
+
89
+ DEFAULT_PORT_HTTP = 80
90
+ DEFAULT_PORT_HTTPS = 443
91
+ end
92
+ end