2012-05-03 9 views
0

私は、SQLインジェクションの脆弱性のより明白な種類を特定する方法を「直感的に」知っています。しかし、私は、(2002年のJoomlaコードベースかもしれない)さまざまな脆弱性を持つ大きなコードベースを与えられたとすれば、正直なところでも、すべての(遡及的に知られている)エクスプロイトを検出するという点では、すべてのコードは完全に。PHPコードベースの脆弱性を発見するためのハウツー記事、コードレビューガイドライン、マニュアルなどがありますか?

Webアプリケーションの脆弱性を特定のPHPや類似のコードベースで体系的に見つけ出すための手法が公開されていますか?あなたがPHPコードベースで悪用を見つけることを任されていたなら、あなたは何をしますか?

答えて

0

大規模なコードベースを監査する場合、セキュリティ問題をチェックするための可能な行のリストを作成するのにgrep kung-fuを使用すると特に便利です。ファイル名と行番号によってmalloc関数に

egrep "malloc\(.*\)" ~/some/source/dir/ -r 

上記リストのすべての呼び出し:ラップするallovationのサイズのために使用される値を可能にするユーザ制御の割り当てのためのCのソースコードを監査する場合、例えば、次の点を考慮し指定されたディレクトリ内で再帰的に実行されます。これには膨大な数の偽陽性が含まれるので、コードの誤用に関する知識を使用して、呼び出しを制御できないことが分かっているケースのリストをパージする他のgrepステートメントを構築できます。私が何を意味するのかを説明するために、それを構築しましょう。

char *buffer2 = (char *) malloc(DEVMAPPER_BUFFER_SIZE); 

上記の行は明らかにラップできないため、偽陽性です。正規表現に次のようなすべてのケースをパージするように追加できます。

これでリストは小さくなりましたが、まだゴミの結果が残っています。一般的に使用される知られている一般的な機能ごとにこれを行う

egrep "malloc\(.*\)" ~/some/source/dir/ -r | egrep "malloc\([ ]*[A-Z_]+\)" -v | egrep "malloc\([ ]*[0-9]+\)" -v | egrep "malloc\(sizeof\(.*\)\)" -v 

:結局、あなたが誤っていることがわかっている例をそれぞれオフ剪定、正規表現のステートメントにそれらを翻訳することで、あなたは次のように何かに得ることができますあなたの言語のソフトウェアの脆弱性を引き起こし、それらを素早いpython/bashスクリプトに入れて、手動で結果を出す各呼び出しを監査します。

PHPを監査する場合は、次のリンクを参考にしてください。

http://pentestlab.org/simple-kung-fu-grep-for-finding-common-web-vulnerabilities-backdoor-shells/

関連する問題