cybertのセキュリティ日記 このページをアンテナに追加 RSSフィード

2007-12-06 PHPで画像XSSの一味変わった対策。 このエントリーを含むブックマーク

IE仕様?をついた画像ファイルを使用したXSSというのがあります。なかなか決定的な対策がなく、私も困っています。画像の再コンバートとか、画像のファイルヘッダを確認するのも。コメントとかカラーパレットとかで、決定的なものがありません。

が、ちょっと作ってみたのが、

1.空の画像を作って

2.ユーザのアップロードしてきた画像を空の画像にコピーする

これだといけそうな気がしたので作っていました。

PHPのimagecopyを使って画像XSSをやっつける。どうぞHACKしてください。

http://tepppei.com/hackme/img.php






画像XSSの詳しくは有名な方々のブログの方にお任せ。



<html>
画像XSSの対策をしました。<br>
任意の画像ファイルをアップロードしてください。<br>
完了したら対策した画像のリンクが出ます。<br>
XSSが動いたらおめでとうですね。連絡ください。cybert.jp@gmail.com<br>
<form  action="img.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile">
<input type="submit" name="submit" value="送信">
</form>
<?
if(!$_FILES['userfile']['name']){
	die();
}
$user_filename = $_FILES['userfile']['name'];
$user_file = $_FILES['userfile']['tmp_name'];

//画像ファイルの高さ、幅のサイズ取得を試みる
list($width, $height) = getimagesize($user_file);
if(0 < $width + $height){} else {die("エラー:SIZEエラー");}

//拡張子を調べる
if(preg_match("/^.+\.jpeg$/i",$user_filename) OR preg_match("/.+\.jpg$/i",$user_filename)){
	$ftype = "JPG";
}elseif(preg_match("/^.+\.png$/i",$user_filename)){
	$ftype = "PNG";
}elseif(preg_match("/^.+\.bmp$/i",$user_filename)){
	$ftype = "BMP";
}elseif(preg_match("/^.+\.gif$/i",$user_filename)){
	$ftype = "GIF";
}else{
	die("エラー:サポートしてません");
}

//空の画像を作ります
$blank_img = imagecreatetruecolor($width + 1,$height + 1);

//イメージIDをGETします
switch ($ftype) {
    case "JPG":
		$user_img  = imagecreatefromjpeg($user_file);
        break;
    case "PNG":
        $user_img  = imagecreatefrompng($user_file);
        break;
    case "BMP":
        $user_img  = imagecreatefromwbmp($user_file);
        break;
    case "GIF":
        $user_img  = imagecreatefromgif($user_file);
        break;
    default:
    	die("エラー");
}

//ここがポイント。空の画像に、ユーザの画像をコピーします。
imagecopy($blank_img,$user_img,0,0,0,0,$width + 1,$height + 1);


//コピーした画像を上書きします
switch ($ftype) {
    case "JPG":
		imagejpeg($user_img,$user_file);
        break;
    case "PNG":
        imagepng($user_img,$user_file);
        break;
    case "BMP":
        imagewbmp($user_img,$user_file);
        break;
    case "GIF":
        imagegif($user_img,$user_file);
        break;
    default:
    	die("エラー");
}

//メモリ上の画像を破棄します
imagedestroy($blank_img);
imagedestroy($user_img);

$fname = time() . "." . $ftype;
move_uploaded_file($_FILES['userfile']['tmp_name'], dirname(__FILE__)  . "/". $fname );

print "<a href=\"{$fname}\">アップロード完了</a>";


2007-06-28 セキュリティ動向

[]セキュリティ動向

金融検査マニュアル

FISC 金融情報システムセンター

JSOX

トレンド

現在:法令遵守(上記のものを守る必要がある。

過去:ユーザの保護(エンドユーザの保護、企業価値資産を守る。

2007-05-16 Re:ウェブアプリケーションセキュリティとバッドノウハウ、そしてグ

[]Re:ウェブアプリケーションセキュリティバッドノウハウ、そしてグッドラッパーの関係

kanatokoさんが、「ウェブアプリケーションセキュリティバッドノウハウ、そしてグッドラッパーの関係」という記事をかかれてます。

私のように、にわかセキュリティ屋にとって一つの答えとなるものがあります。

開発とセキュリティにおいての3つの役割

kanaokoさんは、以下のように書かれています。

引用

----------------------------------

3つの役割

----------------------------------

 さらに考察を進めるために、ウェブアプリケーション開発とセキュリティにおいて存在する3つの役割を示す。

ウェブアプリケーション開発者

グッドラッパー提供者

セキュリティ研究者

 これら3つの役割はそれぞれ異なる目的を持ち、また異なる活動を行う。

私はおそらく、

ウェブアプリケーション開発者 1割

グッドラッパー提供者 4割

セキュリティ研究者 5割

に当てはまると思います。


グッドラッパー提供者が、セキュリティ屋から必要な情報(バッドノウハウ)を集めて開発者に分かり易い形にして(ラッパー)、情報を提供するのが大事

2007-05-01

[]検証したいツールたち


検査ツール

  • WebScarab
  • ProxMon
  • AppScan試用可能

ブラウザ自動化

2007-03-27 Yahooのログインシール。フィッシングを防止できるか?

[]Yahooログインシール。フィッシングを防止できるか?


20年後ぐらい先まで有効期限がある。Cookieを使っている。

Cookie消したら意身ない。




書くつもり。乞うご期待。