問題タブ [exploit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - cygwinで.exeファイルを実行するprintf
脆弱なコードの一部を「壊す」という課題がありました。スニペット:
結局、私はそれがとても驚くほど簡単で、成績が悪いのではないかと心配していることがわかりました...私の解決策:
- 実行可能ファイルをホームディレクトリにコピーします... freecell.exeを使用しました
$ ./VulnerableCode 8 `freecell.exe`
ふふっ!! フリーセルをやっています。なぜこれが機能したのですか?
javascript - このエクスプロイトを難読化解除できる人はいますか?
AV ソフトウェアからの警告により、次のエクスプロイトに遭遇しました。それは、私のサイトの 1 つでバナー広告を配信する広告サーバーから発信されました。
Wget でコンテンツを取得し、pastebin にコピーしました。
http://pastebin.com/m6fa38fac
[警告: リンクにはマルウェアが含まれている可能性があります - 脆弱な PC からアクセスしないでください。]
コードはすべて 1 行に表示されるため、ペーストビンを水平方向にスクロールする必要があることに注意してください。
エクスプロイトが実際に何をするのか、誰でも知ることができますか?
ありがとうございました。
security - エクスプロイトの作成に関する高度で最新のリソースにはどのようなものがありますか?
Reversing: Secrets of Reverse EngineeringとHacking: The Art of Exploitation の両方を読み、読み終えました。どちらも独自の方法で光を当てていましたが、それらの中で提示された多くのテクニックや情報は、ある程度時代遅れになっているように感じます.
悪名高い Phrack の記事、Smashing the Stack for Fun and Profitが書かれた 1996 年は、私がコンピューター セキュリティの「黄金時代」と考える直前のことでした。
その後の数年間、エクスプロイトを作成するのは比較的簡単でした。被害者のマシンでバッファ オーバーフローを実行し、任意のシェル コードを実行するために必要なのは、C とアセンブリの基本的な知識だけでした。
簡単に言えば、物事ははるかに複雑になっています。現在、セキュリティ エンジニアは、Address Space Layout Randomization (ASLR)、Data Execution Prevention (DEP)、Stack Cookies、Heap Cookies などと戦わなければなりません。エクスプロイトの作成の複雑さは、少なくとも 1 桁増加しました。
最新の保護をオフにするための一連のフラグを使用してコンパイルしないと、今日見られるチュートリアルのバッファ オーバーラン エクスプロイトのほとんどをイベント実行することはできません。
エクスプロイトを作成する場合は、DEP を無効にする方法を考案し、シェル コードをヒープに何百回もスプレーして、シェルコードに近いランダムなメモリ位置を推測する必要があります。これらの脆弱性に関しては、はるかに安全なマネージド言語が現在使用されていることは言うまでもありません。
10 年前のシステムのおもちゃのエクスプロイトを書くことを超えて、セキュリティの知識を広げたいと考えています。上記で概説したすべての保護に直面してエクスプロイトを作成する際の問題に対処するのに役立つリソースを見つけるのに苦労しています。
最新のシステムのエクスプロイトを作成するという課題に対処するための、より高度で普及している論文、本、またはその他のリソースは何ですか?
php - PHP GET 変数配列インジェクション
PHP GET 変数に配列を挿入してコードを実行できることを最近知りました。
.php?a[]=asd&a[]=asdasd&b[]=$a
それが私が与えられた例でした。それがどのように機能するのかわかりませんが、これが可能かどうか疑問に思っていましたか?
c - SecureCおよびSecureCイディオムの作成
「平均的な人は自由になりたくない。彼は単に安全になりたいだけだ。」-HLメンケン
私は非常に安全なCを書き込もうとしています。以下に、私が使用しているテクニックのいくつかをリストし、私が思うほど安全であるかどうかを尋ねます。私のコード/先入観を細かく裂くことを躊躇しないでください。最も些細な脆弱性を見つけたり、新しいアイデアを教えてくれたりする答えは、高く評価されます。
ストリームからの読み取り:
GNU Cプログラミングチュートリアルgetlineによると:
getline関数は、realloc関数を介して、必要に応じてメモリのブロックを自動的に拡大するため、スペースが不足することはありません。getlineが非常に安全である理由の1つです。[..] getlineは、入力行の長さに関係なく、入力行を安全に処理できることに注意してください。
getlineは、すべての入力で、ストリームからの読み取り時にバッファオーバーフローが発生しないようにする必要があると思います。
- 私の仮定は正しいですか?これがエクスプロイトにつながる可能性のある入力および/または割り当てスキームはありますか?たとえば、ストリームの最初の文字が奇妙な制御文字である場合、おそらく0x08 BACKSPACE(ctl-H)です。
- getlineが安全であることを数学的に証明するために何か作業が行われましたか?
Mallocは失敗時にNullを返します:
mallocでエラーが発生した場合、mallocはNULLポインターを返します。NULL(0x0)ポインターにポインター演算を適用できるため、これにはセキュリティ上のリスクがあります。したがって、ウィキペディアでは
安全なsscanf:
sscanfを使用するとき、オーバーランの可能性を回避するために、抽出する文字列のサイズを入力文字列のサイズに割り当てる習慣があります。例えば:
str1とstr2はinputStrのサイズであり、inputStrからstrlen(inputStr)を超える文字を読み取ることはできないため、inputStrのすべての可能な値がバッファオーバーフローを引き起こすことを考えると、不可能のように思われますか?
- 私は正しいですか?思いもよらなかった奇妙なコーナーケースはありますか?
- これを書くためのより良い方法はありますか?すでにそれを解決した図書館?
一般的な質問:
私はたくさんの質問を投稿しましたが、誰もがそれらすべてに答えることは期待していません。質問は、私が探している種類の回答へのガイドラインです。私は本当に安全なCの考え方を学びたいです。
- 他にどのような安全なCイディオムがありますか?
- 常にチェックする必要があるコーナーケースは何ですか?
- これらのルールを適用するための単体テストを作成するにはどうすればよいですか?
- どうすればテスト可能性または証明可能な正しい方法で制約を適用できますか?
- Cに推奨される静的/動的分析技術またはツールはありますか?
- どのような安全なCプラクティスに従い、自分自身や他の人にそれらをどのように正当化しますか?
資力:
リソースの多くは回答から借りたものです。
- DavidWheelerによるLinuxおよびUnix用の安全なプログラミングHOWTO
- セキュアCプログラミング-SUNMicrosystems
- 例による安全でないプログラミング
- NOPSをさらに追加-これらの問題をカバーするブログ
- CERTセキュアコーディングイニシアチブ
- flawfinder-静的分析ツール
- ヤニック・モイによる安全性を証明するためのThmProversの使用
- libsafe
c++ - C++を使用したWindowsアカウントの作成
まず、状況の基本的な概要を説明します。私は、主要なゲームエンジン(ソース)内のエクスプロイトの犠牲になっているゲームサーバーレンタル会社で働いています。基本的に、開発者はコード内に1つではなく2つのエクスプロイトを残しました。1つはファイルの送受信、もう1つはクライアントがプラグインを実行できるようにするものです。何が起こっているのかというと、クライアントはプラグインを実行し、カスタムプラグインをサーバーにアップロードしてから、サーバーがそれらを実行し、その結果、これらの悪用者がマシンにアクセスするために使用するリモートデスクトップアカウントを作成します。(実際には、誰かが私たちの箱の1つに侵入したビデオがYouTubeにあります笑)
サーバー側でSendFile()関数とRecieveFile()関数をブロックすることで、これに対する修正を1日中作成しましたが、雇用主から、これを実行している間、エクスプロイトを使用してボックスにアクセスするように求められました。にパスワードを紛失しました。したがって、これらの悪用者が行っているように一時的なアカウントを作成できる必要があることを除いて、必要なコードをすべて作成しました。したがって、C++からWindowsアカウントを作成するためのコードに関するヘルプをいただければ幸いです。グーグルにはたくさんのサンプルがあると言われていますが、どうやらグーグルのスキルは標準に達していません。
php - PHP magic_quotes_gpc の脆弱性
私は会社のレガシー Web アプリケーションの 1 つに割り当てられました。ソースを 1 日か 2 日調べてみたところ、次のような SQL インジェクション ベクトルが見つかりました。
これに対して SQL インジェクション テストを実行しようとしましたが、PHP のmagic_quotes_gpc
モジュールがオンになっているために失敗します。
magic_quotes_gpc
がdirtyであることはわかっていますが、上記のようなコードは数千行とは言わないまでも数百行あります。magic_quotes_gpc
このようなコードは攻撃に対して無防備なままになるため、スイッチをオフにするわけにはいきません。
上記のコードがどの程度「悪用可能」であるか、すぐに修正する必要があるのか、それとも修正作業を他のリファクタリング タスクに含める必要があるのかを知りたいです。
php - Webアプリケーションでのエクスプロイトの検出とその進め方
PHP / MySQL Webアプリケーションのエクスプロイトを検出する方法はありますか(GET、POST、COOKIE配列の特定の文字またはコードの一部をチェックする/一般的なエクスプロイトのすべてのパターンを含むデータベースを備えたライブラリを使用する(存在する場合))? )そして、1つが検出された場合、どのように進めればよいですか?
たとえば、誰かがGETリクエストメソッドを使用してPHP / MySQL WebアプリケーションでSQLインジェクションを見つけようとした場合、ユーザーが実行したアクションをデータベースに保存する必要があります。アプリケーションに電子メールを送信してもらい、IPを禁止します。ユーザーにメッセージを表示します。「申し訳ありませんが、アカウントから有害なアクションが検出されました。これは確認されます。アカウントが無効になっており、IPアドレスから特定の機能が無効になっている可能性があります。これが間違いの場合はe -すべての詳細をメールでお送りください。」
ありがとう。
exploit - シェルコードは\x20で切り捨てられます
\x20
シェルコードが文字列によってコピーされて2番目の脆弱なプログラムにスタックされるときに、シェルコードがオペコードの後に切り捨てられるのはなぜですか?
c - GCC、Windows XP、x86 でバッファ オーバーフロー エクスプロイトを作成する方法は?
上記のデモはここからです:
http://insecure.org/stf/smashstack.html
しかし、ここでは機能しません:
そして、著者は次のように考えていますが、なぜ8なのかわかりません。
少し計算すると、距離は 8 バイトであることがわかります。
呼ばれる私のgdbダンプ:
私の場合、距離は - = 5 のはずですが、うまくいかないようです..
ローカル変数に56バイトfunction
が必要なのはなぜですか?( )sub $0x38,%esp