にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2017/06/21. 12:29:12.

NUL文字で拡張子指定を迂回する攻撃

先日の情報処理技術者試験、「テクニカルエンジニア(情報セキュリティ)」では、Perlソースコード中に埋め込まれているファイル拡張子の指定をどうやったら無視して、任意のファイルを指定する攻撃が可能かを問う問題がありました。

出題されているのは、Web上の入力フォームからの文字列を変数 $fname に格納して、その$fnameの末尾に「.cep」という拡張子を合体させてファイル名として扱うプログラムです。入力フォームに「abcde」と入力すれば、「abcde.cep」というファイルにアクセスすることになります。

問題文中での担当者は、ソース中で「.cep」という拡張子を埋め込んでいるのだから、このシステムでは拡張子.cep以外のファイルにアクセスできることはない、と考えています。でも、「Perlの文字列の処理方法を十分に調査して」再検討しなさいと言われてしまいます。

それはなぜか?を問う問題です。

私は分かんなかったんですが(^^;)、どうやらNUL文字を渡すことで、その後に続く文字列を無効化できてしまうようです。水無月ばけらさんとこで解説されてました。↓

情報処理試験でNUL文字攻撃の問題など(@水無月ばけらのえび日記)

入力フォームから、「passwd.dat%00」などという文字列を送ってやると、プログラム中で文字列の末尾に.cepがくっつけられて、「passwd.dat%00.cep」というファイル名が作られるのだけど、NUL文字(%00)以降は無視されてしまうので、「passwd.dat」というファイルにアクセスできてしまうのだそうです。

そうだったのか…。

正確には、PerlがNUL文字以降を無視するのではなく、NUL文字を含むパスをそのままOSのAPIに渡してしまうため、OS側がNUL文字以降を無視するため、攻撃が成り立つようですが。言語によっては、パスにNUL文字が含まれる場合にエラーを吐くものもあり、そういう言語の場合はNUL文字を使った攻撃はできないことになります。

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※ご投稿頂いた内容は、掲載前に管理者が確認する設定にしている場合があります。たいていは数日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

著者紹介


にしし(西村文宏)

にししでございます。本書いたり記事書いたりしてます。あと萌えたり。著書5冊発売中です(Web製作系4冊+小説1冊)。著書や記事は「西村文宏」名義。記事は主にAll Aboutで連載。本の最新刊は2011年3月に発売されたライトノベルでございますよ。

Twitter:にしし/西村文宏
にしし/西村文宏 on facebook にしし/西村文宏 on mixi にしし/西村文宏 on Google+ フォローはお気軽に!

にしし(西村文宏)連絡先
☕ コーヒーをおごる

著書一覧と詳細

関連する記事など

※下記には、本サイト内外の関連記事などが8本くらい自動で表示されています。

にししふぁくとりー Sakura scope内限定での主要なカテゴリ

--- 当サイト内を検索 ---