2016-04-02 1 views
0

脆弱なWebサイトをスキャンするプログラムを作成していますが、脆弱性が存在するサイトが2つあり、SQL構文エラーが返されることがありますが、プログラムを実行するとスキップしますこれらのサイトは、どこにファイルが保存されているのかを見つけ出したり出力したりすることはありません。このプログラムはペンテストに使用されており、サイトのすべての所有者はこの脆弱性を認識しています。URLをスキップするWebcrawler

出典:

[22:49:29 INFO]Checking if sites are vulnerable. 
[22:49:53 WARNING]URL: http://www.police.bd/content.php?id=275' failed with error: [execution expired] dumped to non_exploitable.txt 

を含むファイルのURL:

http://www.bible.com/subcat.php?id=2' 
http://www.cidko.com/pro_con.php?id=3' 
http://www.slavsandtat.com/about.php?id=25' 
http://www.police.bd/content.php?id=275' 
http://www.icdcprage.org/index.php?id=10' 
http://huawei.com/en/plugin.php?id=hwdownload' 
https://huawei.com/en/plugin.php?id=unlock' 
https://facebook.com/profile.php?id' 
http://www.footballclub.com.au/index.php?id=43' 
http://www.mesrs.qc.ca/index.php?id=1525' 

あなたはプログラムが3つのURLをスキップし、まっすぐに行く見ることができるように、使用の

def get_urls 
    info("Searching for possible SQL vulnerable sites.") 
    @agent = Mechanize.new 
    page = @agent.get('http://www.google.com/') 
    google_form = page.form('f') 
    google_form.q = "#{SEARCH}" 
    url = @agent.submit(google_form, google_form.buttons.first) 
    url.links.each do |link| 
    if link.href.to_s =~ /url.q/ 
     str = link.href.to_s 
     str_list = str.split(%r{=|&}) 
     urls = str_list[1] 
     next if str_list[1].split('/')[2] == "webcache.googleusercontent.com" 
     urls_to_log = urls.gsub("%3F", '?').gsub("%3D", '=') 
     success("Site found: #{urls_to_log}") 
     File.open("#{PATH}/temp/SQL_sites_to_check.txt", "a+") {|s| s.puts("#{urls_to_log}'")} 
    end 
    end 
    info("Possible vulnerable sites dumped into #{PATH}/temp/SQL_sites_to_check.txt") 
end 

def check_if_vulnerable 
    info("Checking if sites are vulnerable.") 
    IO.read("#{PATH}/temp/SQL_sites_to_check.txt").each_line do |parse| 
    begin 
     Timeout::timeout(5) do 
     parsing = Nokogiri::HTML(RestClient.get("#{parse.chomp}")) 
     end 
    rescue Timeout::Error, RestClient::ResourceNotFound, RestClient::SSLCertificateNotVerified, Errno::ECONNABORTED, Mechanize::ResponseCodeError, RestClient::InternalServerError => e 
     if e 
     warn("URL: #{parse.chomp} failed with error: [#{e}] dumped to non_exploitable.txt") 
     File.open("#{PATH}/lib/non_exploitable.txt", "a+"){|s| s.puts(parse)} 
     else 
     success("SQL syntax error discovered in URL: #{parse.chomp} dumped to SQL_VULN.txt") 
     File.open("#{PATH}/lib/SQL_VULN.txt", "a+"){|vuln| vuln.puts(parse)} 
     end 
    end 
    end 
end 

例第4の理由は、なぜですか?

私はこれが起こる場所に何か間違っていますか?

+0

ようこそスタックオーバーフロー。 「[mcve]」をお読みください。コードはそのまま実行されません。一貫性を保つためには、実行するために変更する必要がなくても機能することが重要です。定義されていない定数と決して呼び出されない2つのメソッドがあります。 –

答えて

1

ブロックrescueがあるべきかどうかはわかりません。あなたはparsing = Nokogiri::HTML(RestClient.get("#{parse.chomp}"))で取り込んだ内容で何もしていないし、最初の3つはおそらく動作し、例外もエラー出力もない。その行の後にいくつかの出力を追加して、それらがフェッチされていることを確認します。

+0

フェッチされているHTMLを表示するために 'puts'を追加する必要があります。 – 13aal

+0

これは例外を全く発生させないパースされたコンテンツをどうするかと考えています。 –

+0

それはあなたのために働いた@ 13aal? –

関連する問題