今まで見た中で最悪のセキュリティホールは何ですか?有罪を保護するために詳細を限定しておくことはおそらく良い考えです。
何それの価値については、こちらです質問あなたはセキュリティホールを見つけた場合はどうするかについては、と別の会社が応答(ように見える)しない場合、いくつかの有用な答え。
今まで見た中で最悪のセキュリティホールは何ですか?有罪を保護するために詳細を限定しておくことはおそらく良い考えです。
何それの価値については、こちらです質問あなたはセキュリティホールを見つけた場合はどうするかについては、と別の会社が応答(ように見える)しない場合、いくつかの有用な答え。
回答:
オンラインストアの初期の頃から:
ショッピングカートの数量フィールドに.1と入力すると、90%割引になります。ソフトウェアは総コストを.1 *コストとして適切に計算し、注文を梱包する人間は奇妙な "。"を単純に覆い隠しました。梱包する数量の前に:)
最も許されにくいセキュリティホールであり、残念ながら非常に一般的であり、簡単に見つけられるのは、Googleハッキングです。適例:
http://www.google.com/search?q=inurl%3Aselect+inurl%3A%2520+inurl%3Afrom+inurl%3Awhere
特に政府のサイトであるインターネット上のページ数が、クエリ文字列を介してSQLクエリを渡すのは驚くべきことです。これは最悪のSQLインジェクションの形態であり、脆弱なサイトを見つけるのにまったく労力を要しません。
マイナーな調整により、phpMyAdminの保護されていないインストール、MySQLの保護されていないインストール、ユーザー名とパスワードを含むクエリ文字列などを見つけることができました。
ソーシャルエンジニアリング:
<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.
bash.orgから
マイクロソフトでの最初の頃の実話。
目を覚ましてZDNet.comの見出しを見るその日まで、あなたは恐怖を知りませんでした " Blah "で発見された最悪のInternet Explorerのセキュリティホールがここにある "Blah"が6か月前に自分で記述したコードである。
すぐに仕事に取り掛かったとき、変更ログをチェックしたところ、別のチームの誰か(製品の変更を信頼できる誰か)が私のコードをチェックアウトし、正当な理由なく一連のセキュリティレジストリキー設定を変更していることがわかりました。再度チェックインしましたが、コードレビューを受けたり、それについて誰かに伝えたりすることはありませんでした。今日まで、私は彼がいったい何をしていると思ったのか分かりません。その後まもなく会社を辞めた。(彼自身の合意の)。
(更新:コメントで提起された問題に対するいくつかの応答:
まず、セキュリティキーの変更は意図的ではなく、悪意ではなく不注意または不慣れに基づいているという慈善的な立場を取ることに注意してください。どちらの方法でも証拠はありませんが、間違いを人間の誤謬に帰することが賢明だと信じています。
次に、私たちのチェックインシステムは、12年前よりもはるかに強力になりました。たとえば、チェックインシステムが変更リストを関係者に電子メールで送信しないと、コードをチェックインできなくなります。特に、出荷サイクルの後半に行われた変更には、その周りに多くの「プロセス」があり、製品の安定性とセキュリティを確保するために適切な変更が行われていることを確認します。
とにかく、バグは、Internet Explorerからの使用が安全ではないオブジェクトが、「スクリプトを実行しても安全」とマークされているとして誤ってリリースされたということでした。オブジェクトは、バイナリファイル(実際にはOLEオートメーションタイプライブラリ)を任意のディスクの場所に書き込むことができました。これは、攻撃者が悪意のあるコードの特定の文字列を含むタイプライブラリを作成し、それを既知の実行可能な場所であるパスに保存し、スクリプトを実行させるものの拡張子を付け、何らかの形でユーザーが誤ってコードを実行します。この脆弱性を利用した成功した「実世界」の攻撃については知りませんが、それを利用して実用的なエクスプロイトを作成することは可能でした。
そのパッチはすぐに出荷されました。
私はJScriptにさらに多くのセキュリティホールを引き起こし、その後修正しましたが、そのどれもが広報活動に近づくことはありませんでした。
ここで何が悪いのかを見つけられるといいのですが。(実際にはひどく間違っています):
String emailBody = "";
for (int i = 0; i < subscribers.Count; i++)
{
emailBody += "Hello " + subscribers[i].FirstName + ",";
emailBody += "this is a reminder with your account information: \n\n:";
emailBody += "Your username: " + subscribers[i].Username + "\n";
emailBody += "Your password: " + subscribers[i].Password + "\n";
emailBody += "Have a great day!";
emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}
最後の受信者は最も幸せでした;)
私が今まで見た中で最悪のセキュリティホールは、実際に実際にコード化されており、Googleボットにデータベース全体を削除させました。
私が最初にClassic ASPを学んでいた頃、私は自分の基本的なブログアプリケーションをコーディングしていました。すべての管理スクリプトを含むディレクトリは、IISのNTLMによって保護されていました。ある日、私は新しいサーバーに移動して、IISのディレクトリを再保護するのを忘れていました(おっと)。
ブログのホームページにはメインの管理画面へのリンクがあり、メインの管理画面には各レコードのDELETE LINKがありました(確認なし)。
ある日、データベースのすべてのレコードが削除されているのを発見しました(数百の個人エントリ)。一部の読者がサイトに侵入し、悪意を持ってすべてのレコードを削除したと思いました。
ログから知るようになりました。Googleボットはサイトをクロールし、管理リンクをたどり、すべてのDELETE LINKSをたどり、データベース内のすべてのレコードを削除しました。Googleボットにうっかり妥協されて、ダンバズオブザイヤーを受賞するに値すると感じました。
ありがたいことに、バックアップがありました。
私が今まで見た中で最悪の穴は、空のユーザー名とパスワードを与えると管理者としてログインするWebアプリケーションのバグでした:)
私はこれをデイリーWTFで見ました。
<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
if (form.id.value=="buyers") {
if (form.pass.value=="gov1996") {
location="http://officers.federalsuppliers.com/agents.html"
} else {
alert("Invalid Password")
}
} else {
alert("Invalid UserID")
}
}
//-->
</script>
このIMHOに勝るものはありません。
名前のないままの大学でも、彼らはすべてのアクションクエリをフォームの代わりにURLを介して渡していた。
Google Botが登場してすべてのURLを調べ、データベースを一掃するまでは、問題はありませんでした。
誰もソーシャルエンジニアリングを取り上げていないことに驚いたが、私はこの記事から抜け出した。
概要:悪意のあるユーザーは、数十個のフラッシュドライブを購入し、自動実行ウイルスまたはトロイの木馬をロードしてから、深夜に会社の駐車場にフラッシュドライブを振りかけることができます。翌日、みんなが現れて、キャンディーの形をした光沢のある魅力的なハードウェアにつまずき、「ああ、無料のフラッシュドライブ、何が入っているのだろう」と自分に言い聞かせます。-20分後、会社全体のネットワークが解放されます。
マイクロソフトボブ
(クレジット:ダンの20世紀の放棄ウェア)
3回目にパスワードを誤って入力すると、パスワードを忘れたかどうかを尋ねられます。
http://img132.yfrog.com/img132/8397/msbob10asignin15.gif
しかし、セキュリティを確保する代わりに、パスワードが入力されるまで正しいパスワードの入力を求め続けたり、何度か間違って入力した後にロックアウトしたりするのではなく、新しいパスワードを入力すると、元のパスワードが置き換えられます。誰でも、パスワードで保護されたMicrosoft Bobアカウントでこれを実行できます。
事前の認証は必要ありません。つまり、User1は自分のパスワードを3回間違えて入力し、4回目に新しいパスワードを入力するだけで、自分のパスワードを変更できます。「パスワードの変更」を使用する必要はありません。
これは、User1がUser2、User3 ...のパスワードをまったく同じ方法で変更できることも意味します。どのユーザーも他のユーザーのパスワードを3回間違えて入力し、プロンプトが表示されたら新しいパスワードを入力するだけで、そのアカウントにアクセスできます。
私はジョーXの以前の自宅住所を持っていて、同じ都市の彼の新しい現在の住所を知る必要がありましたが、彼に連絡する方法がありませんでした。私は彼がメールカタログの通常の毎日の山を受け取っていると思ったので、(ビクトリアの秘密、またはスイスのコロニー、または他の大きなメーラーとは対照的に)シーズキャンディーの800番を任意に呼び出しました:
私:「こんにちは、ジョーXです。私の古いアドレスと新しいアドレスの両方で、メーリングリストに2度アクセスしていると思います。コンピュータは、[古いアドレス]または[偽のアドレス]に表示しますか? ?」
オペレーター:「いいえ、[新しい住所]でお見せします。」
テキストボックスに1 = 1を与えると、システム内のすべてのユーザーがリストされます。
生活のためのアプリケーションセキュリティコンサルタントであるため、何かを介してWebサイトの管理者になることができる多くの一般的な問題があります。しかし、本当にすばらしいのは、100万ドル相当の靴下を購入できる場合です。
それはこのギグで作業している私の友人でしたが、その趣旨は、現在非常に人気の高いオンラインブック(およびその他すべて)のショップのアイテムの価格がHTML自体に非表示フィールドとして保存されていることです。初期の頃、このバグは多くのオンラインショップでしたが、彼らはウェブを理解し始めたばかりでした。セキュリティの認識はほとんどありません。つまり、HTMLをダウンロードし、隠しフィールドを編集して、注文を再送信するのは誰ですか?
当然、価格を0に変更し、100万足の靴下を注文しました。価格をマイナスに変更することもできますが、これによりバックエンドの課金ソフトウェアのバッファオーバーフローの一部が発生し、トランザクションが終了します。
別のものを選択できるとしたら、それはWebアプリケーションのパス正規化の問題でしょう。foo.com?file=../../../../etc/passwdを実行できるのは素晴らしいことです
誤って、データベースのルートパスワードをソース管理にコミットしています。Sourceforgeでのソース管理だったので、それはかなり悪かった。
言うまでもなく、パスワードはすぐに変更されました。
主要なIT従業員が退職するときに管理者パスワードを変更しない。
これは私が今まで見た中で最悪のセキュリティホールではありませんが。しかし、これは少なくとも私が自分で発見した最悪のものです。
オーディオブックのかなり成功したオンラインショップでは、認証に成功した後、Cookieを使用して現在のユーザーの識別情報を保存しました。しかし、Cookie内のユーザーIDを簡単に変更し、他のアカウントにアクセスして購入することができます。
.com時代の幕開けの頃、私は海外の大手小売店で働いていました。競合他社が数か月前にオンラインストアを立ち上げたとき、私たちは非常に興味深く見守っていました。もちろん、実際に試してみましたが、すぐにショッピングカートが混同されていることに気づきました。クエリ文字列を少し遊んだ後、お互いのセッションをハイジャックできることに気付きました。適切なタイミングで、配送先住所を変更できますが、支払い方法はそのままにしておきます...カートにお気に入りの商品を入れた後は、それですべてです。
私が現在勤務している会社に初めて入社したとき、上司は新しいクライアント候補の既存のeコマースWebサイトを見ていました。これは、IISとeコマースの両方のかなり初期の段階であり、セキュリティは厳密ではありませんでした。
長い話を短くするために、彼は(単に好奇心から)URLを変更し、ディレクトリの参照がオフになっていないことに気付いたので、URLの末尾からページ名を切り取って、上のすべてのファイルを見ることができました。ウェブサーバー。
ダウンロードしたAccessデータベースを含むフォルダーを参照することになりました。これは、eコマースの顧客/注文データベース全体であり、暗号化されていない数千のクレジットカード番号でいっぱいです。
私が13歳のとき、私の学校は学生のためのソーシャルネットワークを開設しました。彼らにとって残念なことに、URIを「?userID = 123」のような別のユーザーIDに変更し、そのユーザーのログインになり得るセキュリティバグを発見しました。明らかに私は友達に話しました、そして結局、学校のソーシャルネットワークはポルノでいっぱいでした。
それをお勧めしませんが。
スーパーユーザーアクセスの空白のユーザー名/パスワードフィールドは、最悪だと思います。しかし、私が見たのは
if (password.equals(requestpassword) || username.equals(requestusername))
{
login = true;
}
一人のオペレーターが悪すぎると、そのような大きな違いが生まれます。
鉱山は私が顧客であった銀行のためのものでしょう。ログオンできなかったので、カスタマーサービスに連絡しました。彼らは私にユーザー名だけを要求しました-セキュリティの質問も私の身元の確認もしませんでした。次に、パスワードのリセットを登録済みのメールアドレスに送信する代わりに、送信先のメールアドレスを尋ねました。私は彼らに私が登録していたものとは異なるアドレスを与え、私のパスワードをリセットすることができました。
つまり、基本的に、ハッカーが必要とするのは私のユーザー名だけであり、それから彼は私のアカウントにアクセスできます。これは、米国の人々の少なくとも90%が聞いたことがある主要な銀行のためでした。これは約2年前に起こりました。十分に訓練されていないカスタマーサービス担当者だったのか、それが標準的な手順だったのかはわかりません。
作成したものを共有します。やや。
何年も前に、私が働いていた会社がASP Webサイトでインデックスを作成したいと思っていました。それで、私はインデックスサーバーをセットアップし、いくつかの管理ディレクトリを除外して、すべてが良かったです。
しかし、営業担当者が自宅から仕事ができるようにWebサーバーへのFTPアクセスを許可していた誰かが私には知らなかった。これはダイヤルアップの日々であり、ファイルを交換する最も簡単な方法でした...そして彼は物事をアップロードし始めました。私たちのサービスのマークアップの詳細を含むドキュメントを含みます...インデックスサーバーはインデックスを付け、人々が「コスト」を検索したときにサービスを開始します。
子供を覚えて、ブラックリストではなくホワイトリスト。
最も単純であるが、実際にコストに見合うものの1つは、
PayPalなどのエンジンを使用する支払いシステムは、支払いが成功した後のPayPalからの応答が正しくチェックされないため、欠陥がある可能性があります。
例えば:
CD購入のWebサイトにアクセスして、カートにコンテンツを追加すると、通常、チェックアウト段階で、ページ上にpaypalのフィールドが入力されたフォームと、[Pay]への送信ボタンが表示されます。
DOMエディターを使用して、「ライブ」フォームに移動し、値をから£899.00
に変更できます。£0.01
て、[送信]をクリックします...
PayPal側にいると、金額が1ペニーであることを確認できるので、それを支払うと、PayPalはいくつかのパラメーターを最初の購入サイトにリダイレクトします。 payment_status=1
。支払額を検証します。
十分なログが記録されていない場合、または製品が自動的に発送される場合は、コストがかかる可能性があります。
最悪の種類のサイトは、アプリケーション、ソフトウェア、音楽などを配信するサイトです。
あなたが覚えることができるすべてのセキュリティ許可を設定することを可能にしたオンラインドキュメントマネージャーはどうですか...
ダウンロードページにアクセスするまでです... download.aspx?documentId = 12345
はい、documentIdはデータベースID(自動インクリメント)であり、すべての番号をループして、だれでもすべての会社のドキュメントを取得できます。
この問題について警告されたとき、プロジェクトマネージャーの応答は次のとおりです。しかし、誰もこれに気づいていないので、そのままにしましょう。
ノルウェーのピザ配達にはセキュリティホールがあり、新しい光沢のあるインターネットポータルで負の量のピザを注文して無料で入手することができました。