web-dev-qa-db-ja.com

引用符で囲まれていないサービスパスを利用できない

Windows 10コンピューターで、引用符で囲まれていないサービスパスを使用するサービスを見つけました。パスには引用符が含まれていないため、Windowsは次の方法で.exeファイルを探します。

C:\Program.exe

C:\Program Files (x86)\Donald.exe

C:\Program Files (x86)\Donald Duck\Donald_Duck.exe <original path>

現在の問題は、C:\ Program Files(x86)\ Donald.exeにサービスを実行させたい別のexeファイルを置くと、次のエラーメッセージが表示されることです。

"A timeout (30000 milliseconds) was reached while waiting for a transaction response from the Donald Duck service".

起動時にこのプロセスを開始するサービスはNT AUTHORITY\SYSTEMであり、両方のファイルへのフルアクセス権があります。このエラーが発生したので、ファイルが正しいパスにあると確信していますが、イベントビューアから詳細情報が得られないため、この脆弱性をさらに悪用する方法はわかりません。

ファイルの実行前にハッシュチェックの形式が存在する可能性はありますか?

1
user3316995

サービスは常に適切な時間内にWindowsサービスマネージャ(SIM)に戻る必要があります... .exeファイルがバックドアの場合、明らかにWindowsサービスマネージャに戻りません... donald.exeを別のプロセスを開始して安全にウィンドウに戻ります。他のプロシージャはバックドアにすることができます。msnでcreateprocessの例を確認してください。

1
Vinod Pn

Vinodには正しい情報がありますが、少し詳しく説明します。

Service Control Manager (SCM、次も参照 [〜#〜] msdn [〜#〜] )は、すべてのWindowsサービスの親プロセスであり、- リモートプロシージャコール (RPC)サーバー。サービスが開始されると(そしてサービスが共有バイナリ(通常、Microsoftが作成したサービスで主に使用される構成である_svchost.exe_)にないと仮定すると)、SCMはサービスコマンドを起動します(例ではC:\Program Files (x86)\Donald Duck\Donald_Duck.exeそしてサービスがRPC経由でSCMに接続し、サービスが起動中であることを報告するのを待ちます。サービスがSCMへのレポートに失敗した場合(または何らかの理由で起動できなかった場合、または起動から実行状態への移行に失敗した場合)に制限時間(30000ミリ秒、つまり30秒)以内にSCMがプロセスを強制終了します

悪用の目的で、これを回避する方法は3つあります。

  • 30秒のウィンドウ内で作業を行います(十分にロードされたマシンでは、そのウィンドウの多くがCPU時間またはI/Oの待機に費やされる可能性があるため、理想的にはウィンドウ内で実行してください)。たとえば、レジ​​ストリキーを変更したり、ファイルにアクセスしたり、DLLを別の特権プロセスに挿入したりすることなどです。
  • 実際の作業を行う子プロセスを起動します。 SCMは起動したプロセスを強制終了しますが、そのプロセスの子は実行を継続できます。
  • あなたが実際にハイジャックされたサービスであり、正しいことをしていることをSCMに報告します。これは重要なことではありませんが、Cプログラミング、特にWin32プログラミングを知っている場合はそれほど難しくありません(特に、RPCはWin32 ServiceDoThing() AP​​Iにラップされているため、RPCについて知る必要はありません) )。たとえば、エクスプロイトシナリオでサービスが実行されているように見えることが重要である場合(おそらく他のコンポーネントがサービスの開始に成功したかどうか、または起動に失敗した場合に監視プロセスが誰かに不平を言うでしょう) 。あなたがサービスプログラムであることの報告に関するドキュメントは MSDNで です。

これに関係なく、他に考慮すべき点があります。 誰かがNTFSのアクセス許可をデフォルトから変更していない限り、実際にはalreadyが管理者でなければ、これらのファイルを作成することはできません!デフォルトでは、管理者以外のユーザーはドライブのルートにディレクトリを作成(または編集)できますただしファイルではありません。もちろん、Program Files (x86)ディレクトリはすでに存在するため、次のことはできません。それの新しいコピーを作成します。また、名前を変更して、自分が管理する別のディレクトリに置き換えることもできません。また、管理者権限がないと、_Program Files_またはProgram Files (x86)の内容を作成、編集、または名前変更することもできません。

管理者権限を持つことはSYSTEM権限を持つことと同じであるため(つまり、管理者は、通常はSYSTEMのみであっても、アクセスしたいすべてのオブジェクトに対してACLを制御および編集するか、単にSYSTEMとしてプログラムを起動することができます)、このコーディングエラーを悪用するのに十分な特権を持っている場合、あなたはそれがあなたに与えるすべての特権をすでに持っています。つまり、ここには特権の昇格はありませんです。それはisコーディングエラーであり、誤って構成されたシステムにセキュリティ上の影響を与える可能性がありますが、その時点で、ドライブのルートまたはProgram Files (x86)ディレクトリ。

1
CBHacking

https://gallery.technet.Microsoft.com/scriptcenter/Windows-Unquoted-Service-190f0341 -などの修正が実装されている可能性はありますか?

0
atdre