JP4193196B1 - Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム - Google Patents
Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム Download PDFInfo
- Publication number
- JP4193196B1 JP4193196B1 JP2007144116A JP2007144116A JP4193196B1 JP 4193196 B1 JP4193196 B1 JP 4193196B1 JP 2007144116 A JP2007144116 A JP 2007144116A JP 2007144116 A JP2007144116 A JP 2007144116A JP 4193196 B1 JP4193196 B1 JP 4193196B1
- Authority
- JP
- Japan
- Prior art keywords
- response
- request
- negative
- service providing
- positive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
【解決手段】 パラメータ変形部11は、ポジティブリクエスト生成部13とネガティブリクエスト生成部14に、正当なリクエスト中のパラメータを変形したポジティブリクエストとネガティブリクエストを生成させる。ステータス抽出部22〜特殊文字列抽出部25は、リクエスト送信部15がWebサービス提供システム60に送信し、レスポンス受信部21が受信したポジティブリクエストとネガティブリクエストに対する各々のレスポンス中の特徴的な情報のパターンを抽出する。レスポンス情報比較部27は、ネガティブレスポンスに対する全てのレスポンスのパターンが、ポジティブレスポンスに対するどのレスポンスのパターンにも一致しない場合には脆弱性ありと判定する。
【選択図】 図1
Description
図1は、本発明を適用した一実施形態に係る検査装置の構成を概念的に示すブロック図である。この検査装置は、例えばネットワーク経由でWebサーバをフロントエンドとしたアプリケーションサービスを提供するWebサービス提供システム60の脆弱性の検査を行うもので、Webサービス提供システム60に対するリクエストを生成するリクエスト生成部10と、Webサービス提供システム60の応答を解析するレスポンス解析部20と、検査者からの指示を入力する装置操作部30と、リクエスト生成部10,レスポンス解析部20等の制御を行う検査制御部40と、脆弱性の判定結果を出力する表示部等の判定結果出力部50とを備えている。なお、リクエスト生成部10,レスポンス解析部20等はプログラムで構成されている。
ところで、Webアプリケーション62には、パラメータ入力値に特定の文字列が含まれていると、想定外の処理が実行されるインジェクション系脆弱性が存在する場合があるが、フロントエンドのWebサーバ61の構成やWebアプリケーション62の構成等によっては、単純にWebサーバ61からの応答(HTTPレスポンス)中の文字列とエラーが生じた場合の文字列のパターンを比較するだけでは脆弱性を検出できない場合もある。
以下、SQLインジェクション脆弱性の場合を例に検査の詳細を説明する。
SQLインジェクション脆弱性を検査する場合には、例えば図12に処理の概要を示すように、
(1)検査対象となるURL(例えば“url 1”)に対してパラメータ入力値(例えば“パラメータ1−1”,“パラメータ1−2”)を変形したリクエスト(ポジティブリクエストとネガティブリクエスト)を複数生成し、
(2)各々のリクエストをサービス提供システム60側に送信し、
(3)各々のリクエストに対するWebサービス提供システム60のHTTPレスポンスを取得し、
(4)ポジティブリクエストに対するHTTPレスポンスとネガティブリクエストに対するHTTPレスポンスを比較し、ネガティブレスポンスだけから得られたHTTPレスポンスの有無を確認することによって行う。このHTTPレスポンスの比較は、各々のHTTPレスポンスから抽出した特徴的な情報のパターンを比較することによって行う。
Webアプリケーション62に、SQLインジェクション脆弱性がある場合には、入力パラメータの値に、正当なリクエスト中では使用されない。例えば「’」,「−−」,「%」等の文字列が含まれている場合にエラーを生じる可能性があることが知られている。このため、SQLインジェクション脆弱性の検査用には、ネガティブリクエストを生成する文字列として例えば「’ and . and ’1’=’1」,「−−」,「%」等が選択されており、ポジティブリクエストを生成する文字列としてこれら以外の文字列であって正当なリクエスト中では使用されない文字種を含む文字列、例えば「<」,「>」,「/」,「!」等が選択されている。同様に、他の脆弱性に対してもネガティブリクエストを生成する文字列とポジティブリクエストを生成する文字列とが選択されている。これらの文字列は、正当なパラメータ入力値(例えば正当なユーザ名“john”)の「前」,「途中」,「後」にこれらの文字列を挿入される。また、正当なパラメータ入力値を持つリクエスト及びパラメータの値を削除したリクエストもポジティブリクエストに含まれる。ただし、正当なパラメータ入力値のどこにこれらの文字列を挿入するかは、検査時間の短縮等の目的によって「前」のみにする等適宜変更するようにしてもよい。
レスポンス長抽出部23は、HTTPレスポンスのボディ部分の長さを検出する。HTTPレスポンスは、例えば上述の図19に示すように、ヘッダ部分とボディ部分から構成されており、これらの部分は空白行により分割されている。レスポンス長抽出部23では、空白行以降のHTTPレスポンスのボディ部分のバイト数をカウントし、レスポンス長とする。
また、ヘッダ情報抽出部24は、例えばHTTPレスポンス中のLocationヘッダとSet−Cookieヘッダを抽出し、各々のヘッダの有無をヘッダ情報とする。Locationヘッダは、クライアントのリクエストを他のURLに転送したい場合に、次に取得するべきURLを指定する。また、Set−Cookieヘッダは、新たなCookieを設定するために付加される。Cookieはセッション管理に利用されるため、Set−Cookieヘッダが含まれるということは、既存のセッションを破棄することを意味している。
また、ステータス抽出部22は、HTTPレスポンス中のステータス部からステータスコードを抽出する。HTTPのステータスコードは、以下のように、Webサービス提供システム60内部でリクエストがどのように処理されたかを示している。
1XX:情報。サーバはリクエストを受信したが、最終結果はまだ利用可能でない。
2XX:成功。サーバはリクエストを正常に処理した。
3XX:リダイレクト。リクエストは別のURLにリダイレクトされる。
4XX:クライアントエラー。リクエストにエラーがあり正常に処理できなかった。
5XX:サーバエラー。サーバはリクエストを正常に処理できなかった。
なお、これらの処理結果は、脆弱性が原因とは限らないが、ステータスコードが異なれば、Webサービス提供システム60内部の処理が異なることがわかる。
これにより、例えば図26及び図27に示すようなHTTPレスポンスのステータスコードを抽出した結果は、図28に示すようになる。
特殊文字列抽出部25は、例えば図29に示すように、予め設定された特定の文字列がHTTPレスポンス内に存在するか否かを検出し、検出した文字列を抽出する。Webサービス提供システム60側で脆弱性が原因のエラーが発生した場合、HTTPレスポンスに「エラー」や「不正」「Error」といった特徴的なメッセージが含まれることがあるため、このような特定の文字列を予め設定しておき、HTTPレスポンス内にこれらの文字列が含まれる場合には抽出する。これにより、例えば図30及び図31に示すようなHTTPレスポンス中の特定文字列を抽出した結果は、図32に示すようになる。
ステータス抽出部22〜特殊文字列抽出部25は、上述のように、各々のポジティブレスポンス及び各々のネガティブレスポンス毎に、特徴的な情報を抽出し、レスポンス情報保存部26に供給する。例えば図33に示すように、登録ユーザ毎に、情報提供を行うWebアプリケーション62では、例えば図34(A)に示すようなログイン画面に対してユーザが入力したユーザ名とパスワードを、DB64に格納されている認証情報と照合し、ユーザ名とパスワードが正しい組み合わせであれば同図(B)に示すような情報提供サービスを提供し、ユーザ名とパスワードが正しくない場合には同図(C)に示すような再入力画面を表示させるWebアプリケーション62を想定し、具体的なポジティブレスポンスとネガティブレスポンスについて説明する。
以上、SQLインジェクション脆弱性の検出の場合について説明したが、この検査装置では、Webアプリケーション62の他のインジェクション系脆弱性の検出も行う。LDAPインジェクション脆弱性は、Webアプリケーションのプログラム内部においてLDAP文を生成する際に、ユーザからの入力がそのままLDAP文に含まれることが問題となって発生する。例えば、各々のユーザ毎に住所録を提供するWebアプリケーション62を想定する。このようなWebアプリケーションにおいて、例えば上述の図15のようなリクエストに応じてLDAP文を生成し、各々のユーザが登録した住所録を表示させるような場合には、LDAP発行部62bが、リクエスト中のパラメータ「username」のユーザからの入力「john」を取り出し、予め設定しておいたLDAP文の一部に埋め込み、LDAPサーバに処理を要求して、”john”というuidで登録されている情報を取得するLDAP文が生成される。
(uid=john)
このとき、Webアプリケーション62にLDAPインジェクション脆弱性があると、ユーザからの入力に「john)(|(objectclass=*)」が指定された場合に、以下のようLDAP文が生成されてしまう。
(uid=john)(|(objectclass=*))
このように、LDAP文の生成に利用される特殊文字をユーザが指定し、これがそのままLDAP文の生成に使用される場合にはLDAPインジェクション脆弱性が存在する。このような場合には、予め想定されたものとは異なるLDAP文が生成され得るため、ユーザは任意のLDAP文を実行可能である。
string(//user[name/text()=’john’]/account/text())
このとき、Webアプリケーション62にXPathインジェクション脆弱性があると、ユーザからの入力に「’ or ’1 ’=’1」が指定された場合、以下のようなXPath式が生成されてしまう。
string(//user[name/text()=’’ or ’ 1 ’=’1’]/account/text())
このように、XPath式の生成に利用される特殊文字をユーザが指定し、これがそのままXPath式の生成に使用される場合には、XPathインジェクション脆弱性が発生する可能性がある。このような場合には、予め想定されたものとは異なるXPath式が生成され得るため、ユーザは任意のXPath式を実行可能である。
system(“ls −l john”)
このとき、Webアプリケーション62にコマンドインジェクション脆弱性があると、ユーザからの入力に「; cat /etc/passwd」が指定された場合に、以下のようなOSコマンドが生成されてしまう。
system(“ls −l ; cat /etc/passwd”)
このように、OSコマンドの組み立てに利用される特殊文字をユーザが指定し、これがそのままOSコマンドの生成に使用される場合には、OSコマンドインジェクション脆弱性が存在する。このような場合には、予め想定されたものとは異なるOSコマンドが生成され得るため、ユーザは任意のOSコマンドを実行可能である。
<!――#exec cmd=“/bin/ls john”――>
このとき、Webアプリケーション62にSSIインジェクション脆弱性があると、例えばユーザからの入力が「john” ――> <!――#exec cmd=“/bin/cat /etc/passwd」である場合には、以下のようなSSIコマンドが生成されてしまう。
<!――#exec cmd=“/bin/ls john” ――> <!――#exec cmd=“/bin/cat /etc/passwd”――>
このように、SSIコマンドに利用される特殊文字をユーザが指定し、これがそのままSSIコマンドの生成に使用される場合には、SSIインジェクション脆弱性が存在する。このような場合には、予め想定されたものとは異なるSSIコマンドが生成され得るため、ユーザは任意のSSIコマンドを実行可能である。
上述のように、このWebサービス提供システム検査装置では、脆弱性毎に検査文字列を定義しておき、これに応じてパラメータ入力値を変化させたリクエストを生成し、これらのリクエストに対するWebサービス提供システム60側のHTTPレスポンス中の特徴的な情報を抽出し、これらを総合的に判断して脆弱性の有無を判断しているため、Webアプリケーション62等によって構成されるWebサービス提供システムに存在する脆弱性の検出の確実性を向上させることができる。
Claims (4)
- Webサーバを介してサービス提供サーバが提供するアプリケーションサービスを提供するWebサービス提供システムのインジェクション脆弱性の検査を行うWebサービス提供システム検査装置であって、
正当なリクエスト中のパラメータを予め設定されたポジティブリクエスト文字列に基づいて変形して複数のポジティブリクエストを生成するポジティブリクエスト生成手段と、
正当なリクエスト中のパラメータを予め設定されたネガティブリクエスト文字列に基づいて変形して複数のネガティブリクエストを生成するネガティブリクエスト生成手段と、
前記各ポジティブリクエストと前記各ネガティブリクエストを前記Webサービス提供システムに供給する供給手段と、
前記各ポジティブリクエストと前記各ネガティブリクエストに対する前記Webサービス提供システムの各々の応答を取得する取得手段と、
取得した前記各ポジティブリクエストと前記各ネガティブリクエストに対する前記Webサービス提供システムの各々の応答中の複数の特徴的な情報(応答パターン)を抽出する特徴抽出手段と、
前記各ネガティブリクエストに対する前記各々の応答パターンのうち、前記各ポジティブリクエストに対する各々の応答パターンのいずれとも一致しないものが1つでもあるときに脆弱性が存在すると判定する判定手段と
を備えることを特徴とするWebサービス提供システム検査装置。 - 前記応答中の特徴的な情報として、
前記応答のレスポンス長
前記応答に含まれるヘッダ情報
前記応答に含まれるステータスコード
前記応答に含まれる予め規定した特定の文字列
のうちの少なくとも2以上を用いる
ことを特徴とする請求項1記載のWebサービス提供システム検査装置。
- 前記応答中の特徴的な情報として、
前記応答のレスポンス長及び前記応答に含まれるヘッダ情報及び前記応答に含まれるステータスコード及び前記応答に含まれる予め規定した特定の文字列を用いることを特徴とする請求項1記載のWebサービス提供システム検査装置。
- Webサーバを介してサービス提供サーバが提供するアプリケーションサービスを提供するWebサービス提供システムのインジェクション脆弱性の検査を実行させるWebサービス提供システム検査プログラムであって、
コンピュータに、
正当なリクエスト中のパラメータを予め設定されたポジティブリクエスト文字列に基づいて変形した複数のポジティブリクエストを生成させ、
正当なリクエスト中のパラメータを予め設定されたネガティブリクエスト文字列に基づいて変形した複数のネガティブリクエストを生成させ、
前記各ポジティブリクエストと前記各ネガティブリクエストを前記Webサービス提供システムに供給させ、
前記各ポジティブリクエストと前記各ネガティブリクエストに対する前記Webサービス提供システムの各々の応答を取得させ、
取得した前記各ポジティブリクエストと前記各ネガティブリクエストに対する前記Webサービス提供システムの各々の応答中の複数の特徴的な情報(応答パターン)を抽出させ、
前記各ネガティブリクエストに対する前記各々の応答パターンのうち、前記各ポジティブリクエストに対する各々の応答パターンのいずれとも一致しないものが1つでもあるときに脆弱性が存在すると判定させる
ことを特徴とするWebサービス提供システム検査プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007144116A JP4193196B1 (ja) | 2007-05-30 | 2007-05-30 | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007144116A JP4193196B1 (ja) | 2007-05-30 | 2007-05-30 | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4193196B1 true JP4193196B1 (ja) | 2008-12-10 |
JP2008299540A JP2008299540A (ja) | 2008-12-11 |
Family
ID=40173020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007144116A Expired - Fee Related JP4193196B1 (ja) | 2007-05-30 | 2007-05-30 | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4193196B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112165489A (zh) * | 2020-09-28 | 2021-01-01 | 彩讯科技股份有限公司 | 未授权访问漏洞检测方法、系统、服务器和存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5522850B2 (ja) * | 2010-11-10 | 2014-06-18 | 京セラコミュニケーションシステム株式会社 | 脆弱性診断装置 |
JP5801953B2 (ja) * | 2011-05-31 | 2015-10-28 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | アプリケーションのセキュリティ検査 |
US9501650B2 (en) | 2011-05-31 | 2016-11-22 | Hewlett Packard Enterprise Development Lp | Application security testing |
US9398041B2 (en) | 2013-03-12 | 2016-07-19 | International Business Machines Corporation | Identifying stored vulnerabilities in a web service |
JP5978368B2 (ja) * | 2015-08-26 | 2016-08-24 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | アプリケーションのセキュリティ検査 |
WO2021009820A1 (ja) * | 2019-07-12 | 2021-01-21 | 日本電信電話株式会社 | 脆弱性検査装置、脆弱性検査方法および脆弱性検査プログラム |
JP6942277B1 (ja) * | 2021-03-29 | 2021-09-29 | 株式会社ユービーセキュア | セキュリティテストシステム |
JP2023094338A (ja) * | 2021-12-23 | 2023-07-05 | エムオーテックス株式会社 | 脆弱性診断装置、脆弱性診断装置の制御方法および脆弱性診断プログラム |
-
2007
- 2007-05-30 JP JP2007144116A patent/JP4193196B1/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112165489A (zh) * | 2020-09-28 | 2021-01-01 | 彩讯科技股份有限公司 | 未授权访问漏洞检测方法、系统、服务器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2008299540A (ja) | 2008-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4193196B1 (ja) | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム | |
US10182068B2 (en) | Determine vulnerability using runtime agent and network sniffer | |
CN110221982B (zh) | 业务系统的性能测试方法、装置、设备及可读存储介质 | |
US20170068652A1 (en) | System, method and computer readable medium for binding authored content to the events used to generate the content | |
CN106502883B (zh) | 自动化测试时客户端与服务端的数据库同步方法及系统 | |
US20100192006A1 (en) | Database change verifier | |
US20090144612A1 (en) | Display of document data | |
CN109948334B (zh) | 一种漏洞检测方法、系统及电子设备和存储介质 | |
JP2007241906A (ja) | Webアプリケーション脆弱性動的検査方法およびシステム | |
CN110888838A (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN108632219A (zh) | 一种网站漏洞检测方法、检测服务器及系统 | |
CN103890734A (zh) | 遥测文件散列和冲突检测 | |
WO2022063133A1 (zh) | 敏感信息检测方法、装置、设备与计算机可读存储介质 | |
US9355269B2 (en) | Method and system for managing uniquely identifiable bookmarklets | |
CN109324958B (zh) | 一种rest统一校验方法、装置、设备及可读存储介质 | |
CN110716743B (zh) | 一种适合多方协作开发的聚合api开发方法及系统 | |
EP1696339A2 (en) | System and method for testing data format using targeted variant input | |
JP2012053893A (ja) | 検索結果提供方法及びシステム | |
JPWO2014156825A1 (ja) | ログ出力制御装置、方法及びプログラム | |
CN107797917B (zh) | 性能测试脚本生成方法及装置 | |
US20140337069A1 (en) | Deriving business transactions from web logs | |
JP2005316640A (ja) | ダウンロード入力帳票の検証方法およびシステム | |
KR102433764B1 (ko) | 서비스 모니터링 시스템 및 방법 | |
KR101329272B1 (ko) | 데이터 처리 방법 및 시스템 | |
KR20090028366A (ko) | 프로그램 소스코드 테스트 방법 및 시스템과 이를 위한프로그램 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080909 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080912 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111003 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees | ||
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |