
CVE-2016-5195(Dirty COW)の個人用POCおよびエクスプロイト
このCVEのシンプルなPOCです。以下のようにファイルpoc.cをコンパイルします。
$ gcc poc.c -o poc -static -lpthread
以下のように実行します。
./poc コピー先ファイル コピー元ファイル
コピー先ファイルは少なくとも読み取り可能であることを確認してください。コピー先ファイルの内容はコピー元ファイルの内容で上書きされます。失敗した場合は、成功するまで何度か試してください。
元のファイルの長さの範囲内の内容のみが書き込まれます。
以下のようにファイルroot_newuser.cをコンパイルします。
$ gcc root_newuser.c -o dirty -static -lpthread -lcrypt
その後、以下のように実行します。
$ ./dirty 新しいユーザー名 新しいパスワード
新しいユーザー名とパスワードを入力すると、ファイル/etc/passwdにルート権限を持つ新しいユーザーが生成されます。ファイルの最初の行を確認して成功したかどうかを確認し、新しいユーザー名とパスワードでログインしてください。あとはルートの力を楽しむだけです。
以下のようにファイルroot_suid.cをコンパイルします。
$ gcc root_suid.c -o dirty -static -lpthread
その後、追加の引数なしで実行するだけです。/usr/bin/passwdが変更されたかどうかを確認し(sha256sumが役立つかもしれません)、その後実行します。そして、ルートの時間がやってきます!
このCVEの詳細については、私のブログをご覧ください。