問題タブ [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.
assembly - バッファオーバーフローを利用する必要があります。エクスプロイトコードを実行した後、スタックの破損を防ぐ方法がわかりませんか?
基本的に私が利用している機能はこれです:
メインプログラムを実行すると、関数は5回実行され、bufの場所が変わるたびに、%ebpの場所も変わります。私がすることになっているのは、特定の16進値(たとえば0xFFFFFFFF)を変数に配置することです。メインプログラムは、その変数が存在するかどうかを毎回チェックします。そうである場合は、5回すべてが完了し、プログラムが静かに終了するまで、再度実行されます。
私が抱えている問題は、16進値のチェックの直前に、定数である別の値、たとえば0x12345678のチェックがあることです。0x12345678が破損していて、そこにない場合、プログラムが爆発します。
0x12345678が-0x10(%ebp)に格納されていることがわかったので、%ebpに基づいており、毎回%ebpのアドレスを知っていますが、エクスプロイトを機能させることができるのは初めてです。これを行うには、基本的に496バイトをnopsledし、このマシンコードをバイト形式にします。
これは最終的に5ワードになり、リターンロングのバイトになります。これを0x313131で埋めて、6ワードの長さにします。この時点で、私のエクスプロイト文字列は520バイトの長さであり、これはバッファが%ebpを下回っている正確な量です。したがって、古いebpのアドレスと、nopsled内のどこかにアドレスを追加して、%ebpの現在の値とリターンを上書きします。 getbufnのアドレス。
問題は、プログラムが2回目に実行されるときに、%ebpが前のアドレスよりも0x10低いアドレスにあるため、%ebpを破損しない方法が機能せず、mainが0x12345678が-0x10(%ebp)にないことを検出することです。%ebpを破損しないようにするにはどうすればよいですか?
c - return-to-libc 攻撃を書いていますが、libc はメモリの 0x00 にロードされています
システム セキュリティ クラスの libc 攻撃への復帰を書いています。まず、脆弱なコード:
return to libc 攻撃を使用したい。プログラムのコンパイルとデバッグ:
loadconfig
攻撃を実行するには、バッファをのリターン アドレス (別名)にオーバーフローさせ、 のリターン アドレス、次に のリターン アドレス(実際のリターン アドレスが必要なため)、コマンド名 (のアドレス$esp+4
) に置き換えます。プラス 6、パーツをトリムします)。これは、1024文字のがらくたの環境変数を作成し、次に、、、、およびのリトルエンディアンアドレスを作成することで可能になるはずです。system
exit
system
SHELL=/bin/bash
SHELL=
$HOME
system
exit
/bin/bash
ただし、私が試したすべてのコンピューターでsystem
は、0x00 で始まるアドレスに読み込まれます。これにより、sprintf
読み取り中の文字列が null で終了し、攻撃が停止します。メモリの他の場所に強制的libc
にロードする方法はありますか、それとも攻撃を誤解していますか?
gcc
参考までに、バージョン 4.6.1 およびgdb
バージョン 7.3-2011.08の VirtualBox (Windows ホスト) で Ubuntu Server 11.10 仮想マシンを実行しています。編集: ASLR が無効になっており-fno-stack-protector
、カナリアを削除するためにコンパイルしました。スタックから何も実行していないので、その必要はありませんexecstack
。
c - access() セキュリティホール
私はシェルの作成を行ってきましたがaccess()
、ファイルが存在するかどうか、読み取り可能かどうかなどを確認するための推奨事項に出会いました。実装が非常に簡単で、stat()
. そのマニュアルページを見始めたとき、セキュリティホールにつながる可能性があるため、使用が推奨されていないことに気付きました。マニュアルページには次のように書かれています:
open(2) を使用して実際にファイルを開く前に、ユーザーがファイルを開く権限を持っているかどうかを確認するために access() を使用すると、セキュリティ ホールが作成されます。
これがどのように悪用されるか、またはopen()
ファイルをチェックした後にのみ使用することに関連するかどうかを知っている人はいますか? stat()
多くの人が代わりに使用すると言っていることは知っていますaccess()
が、特に私が使用したシェルでは、実装が非常に簡単です。
security - multipayloadを使用したMetasploitジェネリック/カスタムペイロード
私は新しいMSF4(フレームワーク:4.1.0-release.13988、コンソール:4.1.0-release.13581)のマルチペイロードサポートをmsfvenomとカスタム/汎用ペイロードを使用して遊んでいますが、エンコーディングと互換性の観点からペイロードがサポートするものに関する情報。
基本的に、サーバー側のサービスをシャットダウンして、メータープリターにバインドされていないポートでリッスンさせる方法を検討しています。(エクスプロイトは別のポートに侵入します)
基本的に、msgboxとMeterpreterをexe、raw、および.rbとして連続して使用して、msfvenomを使用してマルチペイロードを作成しました。エンコーディング設定をそのままにして、Noneに設定してみました。(カスタム/汎用ペイロード.rbソースは、Noneエンコーディングのみを許可することについて何かを言っていることに注意してください)
EXITFUNCを「none」に設定して試してみました。
次に、generic / customペイロードが使用できるものにrawmultipayloadを書き込む必要があります:(raw、exe、.rb形式に書き込んでみたことに注意してください)
最後に、generic / customでmultipayloadを試してみましょう:(設定してエクスプロイトを試みる前に、毎回エクスプロイトをリロードしたことに注意してください)
そこで、「エンコーダがエンコードされていません...」というエラーの意味についての説明を見つけました。(http://en.wikibooks.org/wiki/Metasploit/Frequently_Asked_Questions)これは、ステージャーのペイロードが入ってくる場所だと思います。
エラーの原因は、ステージングされていないため、windows / msgboxペイロードですか?それとも、マルチペイロードがステージングされていないということですか?それが遅い場合、ステージングされない限り、マルチペイロードがどのように機能するかはわかりません。2つのペイロードを組み合わせると、1つのペイロードよりも大きくなる可能性があります。
誰かが少なくともジェネリック/ペイロードペイロードと互換性があるはずのエンコーディングとフォーマットを説明して、それを除外できるようにできますか?マルチペイロードサポートへの参照は2、3しか見つかりませんでした。
前もって感謝します!一度これを機能させた方法で返信することを約束します。
php - .gifエクスプロイトのPHPコード
内部にphpコードを含むGIFを生成する方法、またはgifを変更してこれを追加し、wordpressでアバターアップロードプラグインのテストを実行できるようにする方法を知る必要があります-安全であることを確認したいだけです。または、誰かがすでにテストイメージを持っている場合、コードを表示したり変更したりするために開くことができますか?
javascript - 悪にどう対処するか?System.Shell.execute(); の前にユーザー入力を検証しています。
私は Windows ガジェットの API を使用して URL を起動していますがeval()
、System.Shell.execute(); などの最悪でより危険なものについての破壊力を知っています。
しかし、いくつかの調査の結果、execute() を使用せずにデフォルトのブラウザーで URL を起動するより良い方法はないと思います。URL はユーザー入力から取得されるため、ユーザーが悪意のあるコードを実行するのを防ぐにはどうすればよいですか? 私のコードは安全ですか、それとも悪用される可能性がありますか? cmd.exe /c REG QUERY HKCU etc
管理者権限でcmd.exeを起動するようなことを防ぎます。
編集:
この 2 つのプロトコルを許可することは安全file:///
ではなく、javascript:
実行できる例:
file:///c:/windows/system32/ping.exe
javascript:void( window.open('http://file:///c:/windows/system32/ping.exe','','_blank') );
c - このCコードの何が脆弱ですか?
私の理解では、上記のコードは任意のコード(またはプログラム)の実行を許可します—これを脆弱にする理由と、これをどのように利用するのでしょうか?
java - Java - 動的 jar ロードはどのように悪用可能ですか?
私は、JAR ファイルを分析するクローズド ソースの Java アプリに取り組んでいます。Java は簡単に逆コンパイルでき、難読化は大した問題ではないため、サーバーでアプリを実行し、fernflower のように結果を返すオンライン サービスを提供したいと考えています: www.reversed-java.com/fernflower /。
問題は、jar を実行したことがないにもかかわらず、アプリが潜在的に有害な jar をサーバーにロードするという災害のレシピではないかと心配していることです。私がやっているのは、URLClassLoaderとJarInputStreamを使用してそれらをロードすることだけです。
悪意のあるコードを実行したり、プログラムを台無しにしたりするために、ロードしている jar が元のアプリのクラスをオーバーライドすることはありますか?
jar を動的にロードする際のリスクは何ですか?
security - セキュリティ: スタック実行のセキュリティ上の欠陥についていまだに耳にするのはなぜですか?
セキュリティ: NX ビット DEPやASLRなどのメカニズムが何年も前から存在しているにも関わらず、スタック実行のセキュリティ上の欠陥についていまだに耳にするのはなぜでしょうか? ハッカーはこれらを回避する方法を見つけましたか?
MS と Adobe の比較的最近修正されたセキュリティ上の欠陥に目を通すと、攻撃者がシステムを制御できるエクスプロイトを見つけることができます。これは、バッファ オーバーラン (DEP/NX/ ASLR)?
security - Art of Exploitation book のバッファ オーバーフローの例
私はこの本 Art of Exploitation を読んでいましたが、これはちょっと良い本で、exploit_notesearch.c ファイルからその例に出くわしました。
簡単に言うと、作者は notesearch.c からプログラムをオーバーフローさせようとします。
メイン関数の引数は検索文字列配列にコピーされ、引数が 100 バイトより大きい場合、メイン関数からの戻りアドレスがオーバーフローします。
作成者は、exploit_notesearch.c にシェルコードを用意し、脆弱な notesearch.c を呼び出します。
シェルコードが NOP スレッドと、その NOP スレッドを指すリターン アドレスと組み合わされていることがわかります。作成者はローカル変数 i のアドレスを参照点として使用し、270 バイトを減算して、NOP スレッドのおおよその位置を把握しようとします。
私が理解しているように、著者は、脆弱な notesearch.c のメイン関数のスタックフレームが、exploit_notesearch.c のメイン関数のスタックフレームと同じスタック セグメントにあると想定しています。これは、ローカル変数 i のアドレスを使用したこの操作のみが機能するためだと思います。
しかし、著者は、この system(command) のように system() を使用して、脆弱な notesearch.c を呼び出します。私のポイントは、この関数 system() が内部のどこかで fork() を使用して子プロセスを生成し、その後 exec() 関数を使用してプロセスのイメージを変更することです。しかし、画像が変更された場合、スタック セグメントが新しくなり、exploit_notesearch.c のメイン関数のローカル変数 i のアドレスを使用したすべての操作が役に立たなくなりますが、どういうわけかこのエクスプロイトが機能するため、完全に混乱します。