2012-03-06 10 views
0

Rubyを初めて使っている人を許していますが、これは実際に私が取り上げた初めてのラングです。Ruby/Metasploit NoMethodError定義されていないメソッド `code '

Metasploit用のmodを記述すると、システムまたはネット上でファイルの302/500エラーをスキャンします。それ以降の攻撃で使用できるScriptResource.axd。

それはそれを実行すると、起動し、その後、エラーでクラッシュ:ここ

msf auxiliary(Scriptresource) > exploit 

[*] hxxp://192.168.0.18:80 hxxp://192.168.0.18:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 302 
[*] hxxp://192.168.0.5:80 hxxp://192.168.0.5:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 302 
[*] hxxp://192.168.0.106:80 hxxp://192.168.0.106:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 302 
[*] hxxp://192.168.0.4:80 hxxp://192.168.0.4:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 302 
[*] hxxp://192.168.0.43:80 hxxp://192.168.0.43:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 500 
[*] hxxp://192.168.0.236:80 hxxp://192.168.0.236:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 500 
[*] hxxp://192.168.0.238:80 hxxp://192.168.0.238:80/scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1 500 
[-] Auxiliary failed: NoMethodError undefined method `code' for nil:NilClass 
[-] Call stack: 
[-] /root/.msf4/modules/auxiliary/scanner/http/Scriptresource.rb:50:in `block in run_host' 
[-] /root/.msf4/modules/auxiliary/scanner/http/Scriptresource.rb:39:in `each' 
[-] /root/.msf4/modules/auxiliary/scanner/http/Scriptresource.rb:39:in `run_host' 
[-] /opt/metasploit-4.2.0/msf3/lib/msf/core/auxiliary/scanner.rb:92:in `block in run' 
[-] /opt/metasploit-4.2.0/msf3/lib/msf/core/thread_manager.rb:64:in `call' 
[-] /opt/metasploit-4.2.0/msf3/lib/msf/core/thread_manager.rb:64:in `block in 

はプログラムです:

は 'レックス/プロト/ HTTP' 必要 'MSF /コア' を必要と

クラスMetasploit3 < Msf ::補助

include Msf::Exploit::Remote::HttpClient 
include Msf::Auxiliary::WmapScanDir 
include Msf::Auxiliary::Scanner 

def initialize(info = {}) 
    super(update_info(info, 
     'Name'   => 'ScriptResource Scanner', 
     'Description' => %q{ 
      This module Will scan for the 302/500 response codes associated 
      with ScriptResource.axd on a traget machine or network. This 
      file is required for ASP.Net Oracle Padding attack. 
     }, 
     'Author'  => [ 'MyChickenNinja' ], 
     'License'  => BSD_LICENSE,)) 

    register_options(
     [ 
      OptString.new('PATH', [ true, "The path to identify vulnerable files", '/', 
       ] 
      ) 
     ], self.class) 

end 

def run_host(ip) 

    cypher = ['scriptresource.axd?d=AAAAAAAAAAAAAAAAAAAAAA1'] 

    conn = false 

    spath = datastore['PATH'] 

    cypher.each do |cy| 
     queue << cy.strip 

     begin 
      crypt = cy 
      res = send_request_cgi({ 
       'uri'  => spath+crypt, 
       'method' => 'GET', 
       'ctype'  => 'text/plain' 
      }, 20) 

      if res.code == 500 or res.code == 302 
       print_status("#{wmap_base_url} #{wmap_base_url}#{spath}#{crypt} #{res.code}") 

      end 

     rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout 
      conn = false 
     rescue ::Timeout::Error, ::Errno::EPIPE 
     end 

    end 
end 

end

"res.code"を参照してください。私はそれを見ましたが、Metasploitがres.codeを扱ったという印象を受けました。これはプログラムがクラッシュする前にres.code出力を得ているという事実によって確認されていませんか?だから今私は迷っている...はい、私はここのサイトで他の質問を見ましたが、通常答えは定義されていないということです。しかし、Metasplotはこの変数を定義しています。だから...?

私が言ったように、私はRubyを初めて使っているので、ちょっと詳細な答えを得ることができれば、とても感謝しています。 ありがとう!

答えて

1

無回答を処理するために空白のレスキューが必要になりました。

関連する問題