エラーメッセージの危険性Webアプリケーションに潜むセキュリティホール(4)

» 2003年08月21日 00時00分 公開
[国分裕三井物産セキュアディレクション]

※ご注意

他社および他組織のWebサイトなどへのポートスキャンおよびデータの取得などの行為で得た情報を侵入などに悪用するか、または同じ目的を持つ第三者に提供した時点で違法となります。ご注意ください。

本稿の内容を検証する場合は、必ず影響を及ぼさない限られた環境下で行って下さい。

また、本稿を利用した行為による問題に関しましては、筆者および株式会社アットマーク・アイティは一切責任を負いかねます。ご了承ください。



 完璧なアプリケーションをいきなり作り上げられる人はまずいないだろう。多くの人はアプリケーション中にデバッグ用のメッセージやコメントを残しながら開発を進めていくことになる。またユーザーにとって重要なのがエラーメッセージである。エラーメッセージを頼りにアプリケーションを利用していく。しかし、ユーザーにとって有用な情報なのだが、同様に攻撃者にも有用な情報を与えてしまうことにもなることがある。今回は、開発者として知っておいてほしい攻撃者に悪用されないためのいくつかの例を紹介する。

エラーメッセージの危険性

 次のような画面を見たことがあるだろうか。

図1 ODBCエラー画面 図1 ODBCエラー画面

 ODBC使使

 MicrosoftODBC SQL Server DriverSQL ServerMicrosoft SQL Server使SQLSQL Injection2 

 
〜 WHERE ***=<nameパラメータ> AND users.role = 1 〜

といったSQL文で使われているのではないかと想像できる。それならば、

name=0 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--

とするとどうなるだろうか。

図2 図1と同じデータベースに対してODBCのパラメータを変更させた結果 図2 図1と同じデータベースに対してODBCのパラメータを変更させた結果

 エラーメッセージが変わり、

Syntax error converting the nvarchar value 'Customers' to a column of data type int. 

となった。この結果から

〜 WHERE ***=0 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-- AND users.role = 1 〜 

UNION SELECT  INFORMATION_SCHEMA.TABLESQL1SQLCustomersSQL
〜 WHERE ***=0 Customers AND users.role = 1 〜

0CustomersCustomers111使

 

 '()
図3 Internal Server Error(パラメータ値にシングルクオートを入れた結果によるエラーメッセージ 図3 Internal Server Error(パラメータ値にシングルクオートを入れた結果によるエラーメッセージ)

 WebApache

 IDS23


 


debug=1






便使 


 

LDAPLDAP Injection


 2003729SPI LabsLDAP Injectionhttp://www.spydynamics.com/whitepapers/LDAPinjection.pdf 

 SQL InjectionSQL InjectionSQLLDAPURL
http://www.example.com/cgi-bin/profile?name=kokubu

 そしてこのアプリケーション内では、次のようなLDAPサーチフィルタ(検索条件)が発行される。

(uid=kokubu)

 これに対して、

http://www.example.com/cgi-bin/profile?name=kokubu)(|(objectclass=*)

とアクセスすると、

(uid=kokubu)(|(objectclass=*))

というサーチフィルタが発行され、objectclass(RDBでいうところのカラム名のようなもの)の一覧が取得できてしまう。

 また、

http://www.example.com/cgi-bin/profile?name=*

とアクセスすると、

(uid=*)

LDAP

 LDAPSQL InjectionWebWebWebLDAP

BasicIDXSTCross-Site Tracing


 WhiteHat Security20031http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf

 XSSXSSXSSCookieXST XSSBasicIDWebID

 Cross-Site TracingHTTPTRACETRACEHTTP/1.1
$ telnet www.example.com 80
Trying 192.168.0.1...
Connected to www.example.com
Escape character is '^]'.
TRACE / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.2.1) Gecko/20030225
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: ja, en-us;q=0.66, en;q=0.33
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: Shift_JIS, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Authorization: Basic a29rdWJ1Om1pY2hhaXlhLS0=
Cookie: sessionid=5addd3c01848f941496720549ac9af8e
Connection: Close
HTTP/1.1 200 OK
Date: Tue, 19 Aug 2003 14:17:36 GMT
Server: Apache/2.0.40 (Red Hat Linux)
Content-Length: 559
Connection: close
Content-Type: message/http
TRACE / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.2.1) Gecko/20030225
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: ja, en-us;q=0.66, en;q=0.33
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: Shift_JIS, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Authorization: Basic a29rdWJ1Om1pY2hhaXlhLS0=
Cookie: sessionid=5addd3c01848f941496720549ac9af8e
Connection: Close

 最初に送信したリクエストメッセージが、完全な形でレスポンスメッセージに含まれているのが分かる。

 攻撃者は、クライアントのブラウザがこのTRACEメソッドを発行するように仕向けてそのレスポンスを奪うことで、Basic認証のパスワードを盗むことができる、というものだ。

 XSSの脆弱性を使うことで、攻撃者はユーザーに任意のスクリプトを実行させることができる。では、次のようなスクリプトが実行された場合はどうだろうか。

<script type="text/javascript">
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("TRACE", "http://www.example.com/",false);
xmlHttp.send();
xmlDoc=xmlHttp.responseText;
alert(xmlDoc);
</script>
図4 スクリプトの実行結果 図4 スクリプトの実行結果

 FormTRACEIEMicrosoft.XMLHTTPActiveXNetscapeXMLDOM使TRACEAuthorizationBasicIDTRACE

 Cookie使Basic使XSS


 4Web 

  

 Web

第3回」へ

第5回」へ


著者紹介

国分裕(こくぶ ゆたか)

三井物産セキュアディレクション勤務。セキュリティコンサルタントとして、不正アクセス監視やセキュリティ検査などに従事している。金融機関、官公庁、大手製造業などへのセキュリティシ ステムの導入、セキュリティ 検査などの実績を持つ。

三井物産セキュアディレクション

主に、不正アクセス監視サービス、セキュリティ検査、セキュリティポリシー策定支援などのサービス提供している。また、セキュリティに関する教育サービスも実施中。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。