0×01 はじめに
労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぐ必要があります。
ソースコードの静的セキュリティ監査では、手動による脆弱性マイニングの代わりに自動ツールを使用することで、監査作業の効率を大幅に向上させることができます。自動化されたコード監査ツールの使用方法を学ぶことは、すべてのコード監査者にとって不可欠な能力です。 PHP ソースコード監査を学ぶ過程で、私はさまざまな自動化ツールを収集して使用しました。この記事では、RIPS、VCG、Fortify SCA という 3 つのより実用的なツールを簡単に紹介します。
RIPS は、強力な脆弱性マイニング機能を備えたオープンソースの自動コード監査ツールです。これは PHP 言語で書かれており、PHP コードのセキュリティを静的に監査するために使用されます。
VCG (VisualCodeGrepper) は、C/C++、C#、VB、PHP、Java、PL/SQL をサポートする無料のコード セキュリティ監査ツールです。シンプルな機能で使いやすい辞書ベースの検出ツールです。
Fortify SCA (Static Code Analyzer) は、Fortify Software Company (HP が買収) によって開発された商用ソース コード監査ツールです。独自のデータ フロー分析テクノロジーを使用して、複数のレイヤーおよび言語にわたるコードの脆弱性を分析します。現在、すべての主流の開発言語をサポートしています。
この記事では、アプリケーション例の分析を組み合わせて、3 つのツールの使用法と特徴を紹介します。
0x02 RIPS
RIPS の主な機能は次のとおりです:
1) XSS、SQL インジェクション、ファイル漏洩、ローカル/リモート ファイルの組み込み、リモート コマンド実行、およびより多くの種類の脆弱性を検出できます。
2) スキャン結果の表示とデバッグ支援には 5 つのレベルのオプションがあります。
3) 脆弱なコード行をマークします。
4) 変数を強調表示します。
5) ユーザー定義関数の上にカーソルを置くと、関数呼び出しが表示されます。
6) 関数定義と呼び出しの間を柔軟にジャンプします。
7) すべてのユーザー定義関数 (定義と呼び出しを含む)、すべてのプログラム エントリ ポイント (ユーザー入力)、およびスキャンされたすべてのファイル (インクルード ファイルを含む) を詳細にリストします。
8) ソース コード ファイル、インクルード ファイル、関数、およびそれらの呼び出しを視覚的な図で表示します。
9) CURL を使用して、マウスを数回クリックするだけで、検出された脆弱性の EXP インスタンスを作成します。
10) 各脆弱性の説明、例、PoC、パッチ、セキュリティ機能を詳細にリストします。
11) 7 つの異なる構文強調表示モード。
12) トップダウンまたはボトムアップの方法を使用して、スキャン結果を遡及的に表示します。
13) PHP をサポートするローカルサーバーとブラウザーは、使用上のニーズを満たすことができます。
14) 通常の検索機能。
RIPS の最新バージョンは 0.55 です。ダウンロード リンクは次のとおりです:
https://sourceforge.net/projects/rips-scanner/
ダウンロードした zip ファイルを Web サーバー Web サイトのディレクトリに解凍します。ブラウザに Web サーバーのアドレスと対応するディレクトリを入力します。 RIPS ツールのユーザー インターフェイスは次のとおりです。
上部はすべての機能ボタンのメニューです。
スキャン タスクが完了すると、メニューに 4 つの新しいボタンが表示されます。これらのボタンは、スキャンされたファイル、ユーザー入力ポイント、スキャン ステータス情報、スキャンされた機能という 4 つのスキャン結果ウィンドウの表示/非表示を切り替えるために使用されます。
次に、RIPS の使用法を説明する簡単な例を見てみましょう。ダウンロード リンクは次のとおりです。
http://jsdx.down.chinaz.com/201603/webjoker_v2.2.0.zip
この PHP アプリケーション特定の Web サイトへのユーザーの訪問をカウントするには、プログラムのバックグラウンドでログインして詳細なアクセス情報を表示できます。ダウンロードしたプログラムを解凍し、RIPS の「パス/ファイル」オプションにプログラム解凍ディレクトリを入力し、他のオプションはデフォルトのままにし、「スキャン」ボタンをクリックしてスキャン タスクを開始します。
スキャンが完了したら、ウィンドウ メニューの 4 つのボタンをクリックしてタスクの詳細を表示します。
テキスト部分には、スキャンされた脆弱性の詳細が表示され、「すべて非表示」ボタンをクリックすると、各ファイルの詳細な脆弱性結果リストを表示/非表示にします。
脆弱性の 1 つについて詳しく見てみましょう。init.php のソース コードには SQL インジェクションの脆弱性があります。
フィルタリングされていない $procookie パラメータは、cheatcookie() 関数によって直接呼び出されます。 cheatcookie() 関数の上にカーソルを置くと、cheatcookie() 関数がどのように定義されているかが表示されます。
cheakcookie() 関数は main.php ファイルで定義されており、フィルターされていないパラメーターが実行のために SQL ステートメントに直接取り込まれていることがわかります。
脆弱性の詳細は、$procookie パラメータが $_COOKIE[count_admin] によって渡されることを示しています。init.php ソース コードのコンテキストから、このパラメータはバックグラウンド ログイン Cookie 値の検証用であることがわかります。 count_admin 値がデータベース内のデータと一致しない場合、検証は失敗します。
POST パッケージの Cookie の count_admin を「' or 1=1 #」に変更して、Cookie の検証をバイパスし、バックグラウンドに直接入力します。
0x03 VCG
VCG は、ユーザーがスキャンする必要のあるデータをカスタマイズできる辞書ベースの自動ソース コード スキャン ツールです。ソース コード内の潜在的に危険な関数とテキストをすべて迅速に特定できます。
VCG のダウンロード リンクは次のとおりです。
http://sourceforge.net/projects/visualcodegrepp/
ダウンロードした msi ファイルをダブルクリックしてインストールします。
各言語のスキャン設定ファイルは、[設定] -> [オプション] -> [ConfigFiles] で編集できます。
[設定] オプションをクリックし、スキャンするターゲット言語の種類を選択します。 [ファイル] -> [新しいターゲット ディレクトリ] オプションをクリックし、スキャンするソース コード ファイルが保存されているディレクトリを選択します。上記のアプリケーション インスタンスのストレージ ディレクトリを選択します。 [スキャン] -> [フル スキャン] オプションをクリックしてスキャンを開始します。
スキャン結果は、スキャンされたファイルのデータに関する統計をアイコンの形式で作成します。この機能は少し役に立ちません。 [結果] パネルと [概要テーブル] パネルに表示されるコンテンツに焦点を当てます。
[結果] パネルには、セキュリティ リスクのあるすべてのソース コードが表示され、右クリックして結果を並べ替えたりフィルターしたりできます。
[概要テーブル] パネルは、[結果] パネルの内容の概要表示です。
VCG は、辞書を照合することで、潜在的に危険なソース コードの断片を検出します。そのスキャン原理は比較的単純であり、その焦点は RIPS とは異なり、アプリケーションの脆弱性を深く調査することはありません。 VCG は、ソース コードのリスク関数を迅速に特定するための補助ツールとして使用できます。
0×04 Fortify SCA
Fortify SCA は商用ソフトウェアで、価格が比較的高価なので、試用用の初期バージョンしか見つかりませんでした。商用ソフトウェアなので詳しい使用方法のドキュメントが用意されており、参照するのに非常に便利です。いくつかの IDE プラグイン機能をサポートしており、インストール中にオプションがあります。
Fortify SCA のコード監査機能は、そのルール ベース ファイルに依存しており、更新されたルール ベースをダウンロードして、インストール ディレクトリ内の対応する場所に配置できます。 bin ファイルはインストール ディレクトリの下の Coreconfigrules フォルダーに配置され、xml ファイルは CoreconfigExternalMetadata フォルダーに配置されます (フォルダーが存在しない場合は、新しいフォルダーを作成します)。
AuditWorkbench を開き、[新しいプロジェクトの開始] -> [詳細スキャン] オプションをクリックして、監査タスクをすぐに開始します。監査する必要があるアプリケーション ルート ディレクトリを選択し、追加オプションで使用するルール ベースを選択し、監査ガイドで提示された 4 つの質問から対応するオプションを選択して、[スキャンの実行] をクリックします。
監査結果は 5 つのパネルで表示されます。
RIPS 監査結果と同じ SQL インジェクションの問題を見てみましょう。左側の問題をクリックすると、ソース コード パネルが問題が発生したソース コード行を自動的に見つけます。
分析追跡パネルには、詳細なデータ傾向が表示されます。 COOKIE から読み取る -> 変数 $procookie に代入 -> cheatCookie() 関数を取り込む -> 変数 $sql に代入する -> mysqli_query() 関数を取り込む
左側の各アイコンの意味については、ユーザーマニュアルをご覧ください。各行をクリックすると、対応するソース コード行が自動的に検索されます。同時に、問題監査パネルの図には、脆弱性の原因を直感的に示す、より鮮明なデータ フロー図が表示されます。
監査パネルの他のタブには、RIPS などのオープンソース ソフトウェアと比較して、脆弱性情報が詳細に表示されます。 「ツール」→「レポートの生成」機能では、ユーザーのニーズに応じて監査結果のレポートを生成することもできます。
0×05 概要
VCG は他の 2 つのツールとは異なり、辞書に基づいてスキャン機能を実装するシンプルなリスク関数スキャンおよび位置決めツールです。 RIPS と Fortify SCA は、ソース コードの脆弱性を静的に詳細に分析するための強力なツールであり、それぞれのテクノロジーを使用してアプリケーションの実行プロセスを追跡および分析し、詳細な脆弱性マイニング作業を実行します。 RIPS は導入と使用が簡単で、単純なアプリケーション機能の自動監査分析ツールとして使用できます。 Fortify SCA はより強力で、より複雑なアプリケーション自動分析を実行できます。実際の監査作業では、2 つのツールを組み合わせて使用して、互いの長所を学ぶことができます。
自動静的コード監査ツールは、コード監査の人件費を節約でき、コード監査の効率を向上させる重要な手段です。ただし、すべての脆弱性スキャン ツールと同様、自動化ツールは完全にインテリジェントではないことに注意する必要があります。誤検知率は依然として大きな問題です。したがって、レポートに示されている脆弱性は、実際に存在するかどうかについて監査人によるさらなる確認が必要です。さらに、自動化ツールには大きな制限があります。一般的な Web アプリケーションの脆弱性タイプのみをマイニングでき、Web 2.0 時代に出現したビジネス ロジックの脆弱性をマイニングすることはできません。したがって、経験豊富なコード監査人にとって、監査ツールはサポート的な役割を果たすだけであり、ツールを使用して自身の経験を組み合わせて、より深い脆弱性を掘り出すことになります。
* この記事は istr33 によって投稿されました。FreeBuf Hackers and Geeks (FreeBuf.COM) からのものであることを明記してください

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Dreamweaver Mac版
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
