2010-11-23 23 views
2

私は現在、Webサイト上のXSSの脆弱性をチェックするネットワークセキュリティプロジェクトに取り組んでいます。これはうまくいけばペンテスターに​​も使えるはずです私はいくつかのスクリプトのキディーだと思う、ここにクラスのウェブサイト:http://netsec.cs.northwestern.edu/projects/)。Pythonを使用してHTMLページでJavaScriptを検出する

したがって、特定のHTMLページでJavaScriptを検出できません。私はPyV8とV8をインストールするのに多くの時間を費やしました。彼らは単純なJavaScript文を評価できるようです。しかし、より複雑なJavaScriptの問題(例えば警告ボックス)の場合、PyV8はそれをサポートしていないようです。だから、私はPyV8に任意のJavaScriptコードを供給して、対応するJavaScript出力を私に与えることができるかどうかは疑問だ。

DrEvalでこのJSサーバ/クライアントを見つけましたが、V8/PyV8の最新リビジョンで動作していないようです。

助けてください!私のプロジェクトは今日から約1週間で終わり、クラス内の誰も助けができないようです。

ええええええええ、私はこの質問に答えると事前に謝罪します以前のどこかで。私は少なくとも2時間このトピックを検索しました。

お返事ありがとうございます!

+1

なぜHTMLを解析して、スクリプトタグやJavaScript関数呼び出しを探していないのですか? JSが特定のページで使用されているかどうかを検出する方法は明らかです。 – nmichaels

+0

Nathon:これは本当に面倒です。 XSS攻撃にはさまざまな形があります。

0

私はあなたが何をしたいのか本当にわからないが、ここでいくつかの考えです:

  1. WebページのコンテキストでJavaScriptコードを実行したい場合は、ブラウザやエミュレーションを必要としますひとつの。試してくださいenvjs。しかし、JavaScriptインタプリタが必要なため、Javaが必要です。

    私はPythonと同じ機能を提供するライブラリを認識していません。多分あなたはそれを修正することができます。 envjsは主にJavaScriptで書かれていますが、インタプリタからのサポート機能(コンソールへの出力、データのダウンロード、ファイルのオープン)が必要です。

  2. XSSの脆弱性は、コードが既に存在していても、ページにJavaScriptコードを挿入できる場合に発生します。したがって、フォームのすべてのフィールドを確認し、フォームをサーバーに送信してから、次のページのすべての値を正しくエスケープする必要があります。

+0

こんにちはAaron、応答に感謝します。私はpythonスクリプトを使ってXSS文字列注入を使って私自身の(安全でない)フォーラムを攻撃しようとしています。私は正常に注射を実行することができますが、私は実際に私が注入したページからjavascriptの出力を読み取る方法を知りません。たとえば、警告ボックス付きの注入を実行した場合、人間はこの警告ボックスを表示しますが、すべてのスクリプトではHTTP応答のテキストが表示されます。私はそれが私のプロジェクトが書かれている必要があるので、Pythonでこれを行う方法があるのだろうかと思っています。私はその間にenvjsを探検し続けます.. – rith87

+0

他のページが ' "alert( 'XSS')" 'を入力してXSS攻撃に追加し、この正確な文字列を検索します。 –

+0

そのアプローチは、エンコードされていないXSS注射では効果的ですが、エンコードされたものはどうですか?たとえば、hj(html)です。したがって、エンコードされたXSS攻撃を構築することができます。この攻撃は、ブラウザでは通常表示されますが、ページソースにはエンコードされた文字として残ります。このため、解析/正規表現を使用する代わりにJSインタープリタを使用する方が好きです。 – rith87

0

PyV8は、V8 javascriptエンジンのPythonバインディングです。それは最も複雑なJavaScriptコードでさえ評価することができます。 Google Chromeでも使用されています。

言われているように、正しく動作させるためにはいくつか必要なことがあります。まず第一に、PyV8はjavascriptエンジンのみです。 DOMを構築しません。したがって、あなた自身でDOMを作成し、それを使ってPyV8コンテキストを実行する必要があります。

また、警告機能は動作しないと言いました。 alert();関数はDOMの一部であり、略語はwindow.alert();です。だから、DOMの各関数とプロパティを指定する必要があります。

PyV8ソースには、単純なDOMが付属しています。 http://code.google.com/p/pyv8/source/browse/

関連する問題