Code Monkey home page Code Monkey logo

ronin-exploits's People

Contributors

flavorjones avatar postmodern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ronin-exploits's Issues

Add rubocop

Add rubocop to the repository.

  • Add the rubocop gem to the Gemfile.
  • Start with the template rubocop.yml file which closely matches Ronin's general code style.
  • Add the rubocop task and add it to the CI.

ronin-exploit issue with Ruby1.9.3 / Ruby2.0

bundle install
bin/ronin-exploit
.../.rvm/gems/ruby-1.9.3-p392/gems/parameters-0.4.4/lib/parameters/options.rb:171:in `define':  [PAYLOAD]: incompatible argument styles (ArgumentError)
OptionParser::Switch::RequiredArgument, OptionParser::Switch::PlacedArgument
from .../.rvm/gems/ruby-1.9.3-p392/bundler/gems/ronin-9114bdf2fdef/lib/ronin/ui/cli/command.rb:641:in `block (2 levels) in option_parser'

Replace all database properties with class methods for declaring metadata

Replace all database model properties that store the Exploit's metadata with class methods for declaring the metadata.

  • ronin/exploits/advisory
  • ronin/exploits/target
  • ronin/exploits/exploiit
  • ronin/exploits/mixins/has_targets
  • ronin/exploits/mixins/has_payload
  • ronin/exploits/memory_corruption
  • ronin/exploits/stack_overflow
  • ronin/exploits/heap_overflow
  • ronin/exploits/web
  • ronin/exploits/lfi
  • ronin/exploits/rfi
  • ronin/exploits/sqli

Example

class Exploit

  def self.foo(value=nil)
    if value
      @foo = value
    else
      @foo
    end
  end

  # ...    
end
class ExampleExploit < Exploit

  foo "Some value"
  # ...
  
end

Refactor `Ronin::Exploits::Exploit` classes to be plain Ruby Classes

Reduce the amount of meta-programming and define Ronin::Exploits::Exploit classes as plain Ruby classes.

  • Remove Ronin::Script and Ronin::Behaviors.
  • Remove the helper method in favor of just including Mixin modules.
  • Replace all database properties with metadata getter/setter class methods.
  • Add a reigster class method that registers the exploit class with Ronin::Exploits/Ronin::Core::ModuleRegistry.

  • Ronin::Exploits::Exploit
  • Ronin::Exploits::Web
  • Ronin::Exploits::MemoryCorruption
  • Ronin::Exploits::StackOverflow
  • Ronin::Exploits::HeapOverflow
  • Ronin::Exploits::LFI
  • Ronin::Exploits::RFI
  • Ronin::Exploits::SQLI

Incompatibility with ruby2.0

Error when trying to run ronin-exploit (clone from git and bundle install)
bin/ronin-exploit:18:in require': /tmp/ronin-exploits/lib/ronin/ui/cli/commands/exploit.rb:66: syntax error, unexpected tLABEL (SyntaxError) Payloads:Exception: e ^ from bin/ronin-exploit:18:in

'

Add `ronin-c2` as a dependency

Add ronin-c2 to gemspec.yml as a dependency. The Ronin::Exploits classes may include Ronin::C2 functionality (ex: LFI exploit may provide the file-read capability).

Eventually support truffleruby

Due to issues with how TruffleRuby implements keyword argument splatting, command_kit fails to pass specs on TruffleRuby. Will have to hold off on TruffleRuby support until TruffleRuby fixed keyword argument splatting or adds support for Ruby 3.0.

Remove `ronin/vuln.rb`

Since we will not be storing exploits in the database, remove the ronin/vuln.rb model.

Replace `options={}` with keyword arguments

Switch from options={} to keyword arguments.

  • lib/ronin/exploits/exploit.rb: def use_target!(options={})
  • lib/ronin/exploits/exploit.rb: def build_payload!(options={})
  • lib/ronin/exploits/exploit.rb: def build!(options={},&block)
  • lib/ronin/exploits/exploit.rb: def exploit!(options={},&block)
  • lib/ronin/exploits/web.rb: def self.test(uri,options={})
  • lib/ronin/exploits/web.rb: def http_request(options={},&block)

Add a `new` subcommand

Add a new sub-command for generating a boilerplate exploit or payload file. Add options to support generating different types of exploits or payloads. Try to reuse the .erb templates in data/ronin/gen/exploits/.

Remove payload and encoder files in favor of `ronin-payloads`

Remove payload files in favor of the new ronin-payloads dependency.

  • bin/ronin-encoder*
  • bin/ronin-payload*
  • examples/bin_sh_amd64.rb
  • examples/bin_sh.rb
  • examples/local_shell.rb
  • lib/ronin/database/migrations/encoders.rb
  • lib/ronin/database/migrations/encoders/
  • lib/ronin/database/migrations/payloads/
  • lib/ronin/database/migrations/payloads.rb
  • lib/ronin/encoders/
  • lib/ronin/encoders.rb
  • lib/ronin/payloads/
  • lib/ronin/payloads.rb
  • lib/ronin/gen/generators/payloads/
  • data/ronin/gen/payloads/
  • lib/ronin/ui/cli/commands/*encoder*
  • lib/ronin/ui/cli/commands/*payload*
  • spec/payloads/
  • spec/encoders/
  • spec/helpers/encoders.rb
  • spec/helpers/payloads.rb
  • spec/helpers/scripts/payloads/
  • spec/gen/generators/payloads/

Add a `Ronin::Exploits::CLI::Commands::New` subcommand

Add a Ronin::Exploits::CLI::Commands::New sub-command which generates boilerplate exploit modules. Reuse the .erb templates in data/ronin/gen/exploits/. Add options based on the parameters in the lib/ronin/gen/generators/exploits/... classes.

Add top-level Examples for Exploit classes

Exploit classes need full Examples added to their top-level documentation. These Examples must be short, functional and copy-pastable.

  • ronin/exploits/stack_overflow
  • ronin/exploits/seh_overflow
  • ronin/exploits/lfi
  • ronin/exploits/rfi
  • ronin/exploits/sqli

Add `print_debug` statements to all networking methods.

When debugging output is enabled it will allow the user to see what data is being sent and received by the Network methods.

  • Ronin::Exploits::Mixins::RemoteTCP
  • Ronin::Exploits::Mixins::RemoteUDP
  • Ronin::Exploits::Mixins::HTTP

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.