createJob
    • PDF

    createJob

    • PDF

    記事の要約

    注意

    顧客所有のWebサーバでない対象を診断する場合に発生し得る各種法的責任(業務妨害、情報通信網法の違反等に関する民事・刑事上の責任)はご本人にあることを予めご案内いたします。顧客が本APIを使用した場合、これに同意したものと見なします。

    概要

    • createJob APIは「Web Security Checker」から提供される機能で、ユーザーが診断を登録するAPIです。

    サポート範囲及び注意事項

    リクエスト

    MethodRequest URI
    PUThttps://wsc.apigw.ntruss.com/api/v1/job

    Path Variables

    パラメータ必須有無タイプ説明
    StartUrlYesstring診断対象URL
    (例:"https://www.ncloud.com")
    ExcludeUrlYeslist診断除外URLリスト
    (例:[ "https://www.ncloud.com/events"、"https://www.ncloud.com/product/security/webSecurityChecker"])
    HeadersNoobject認証のためのHTTP Header情報
    (ex. { "Cookie": "JSESSIONID=AB123123123123ASAS", "Accept": "text/html.....", "Authorization": "Bearer ejs...")
    VulnItemsYeslist診断項目リスト
    (例:[ "ALL" ]["XSS", "SSI Injection", ...])
    UserAgentYesstring診断作業に利用するブラウザ(User-Agent)情報を選択
    ("Android""iPhone""PC Chrome""PC IE"の予約語のうち1つを選択)
    SpeedYesstring診断作業の速度を調整
    ("1"-普通、"2"-やや早く、"3"-早くの3つのうち1つを選択)
    MemoNostringメモ
    (例:"上半期のセキュリティ診断")
    MasterInstanceNoNostring再診断作業を作成する、完了済み診断のインスタンス番号(InstanceNo)
    再診断のためのインスタンス番号は、getJobs (Web Security Checker) APIから確認できます。
    (例:"1234111231")

    リクエストヘッダー

    IAM認証のためのリクエストヘッダーです。

    ヘッダー名説明
    x-ncp-apigw-timestamp1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒単位(Millisecond)で表したものです。
    API Gatewayサーバとの時間差が5分以上ある場合、有効でないリクエストとして見なします。
    x-ncp-iam-access-keyNAVERクラウドプラットフォームのIAMから発行されたAccessKeyです。
    x-ncp-apigw-signature-v2リクエストパスやヘッダーをAccessKeyとマッピングされるSecretKeyで暗号化した署名で
    HMACの暗号化アルゴリズムはHmacSHA256を使用します。

    予約語の説明

    UserAgentの予約語リスト

    Web Securtiy Checkerは、ユーザーのウェブサイトに最適なブラウザを選択できるように診断オプションを提供します。

    APIユーザーは、次のテーブルの予約語に関する説明を参考にして予約語を選択してからAPIを呼び出します。

    予約語説明
    PC ChromePC環境のChromeブラウザ
    PC IEPC環境のInternet Explorerブラウザ
    iPhoneモバイル環境のiPhoneブラウザ
    Androidモバイル環境のAndroidブラウザ

    診断項目の予約語リスト

    診断作成APIは、診断項目を明示して、希望する診断を選択して行えるような機能を提供します。

    診断項目に関する詳しい内容は、Web Security Checker紹介ページ > 診断項目 からも確認できます。

    • すべての点検項目で診断を実行する場合、ALLキーワードを使用してください。
    • 一部の点検項目だけで診断を実行する場合、次のテーブルから希望するキーワードを選択してください。
    予約語説明
    ALLWeb Security Checkerがサポートするすべての診断項目で診断を実行します。(推奨オプション)
    LFIWebサーバの内部に存在する、悪意のあるファイルをIncludeして、そのファイルを実行する脆弱性です。
    SQL InjectionWebアプリケーションで使用されるSQL構文に攻撃者が任意の構文を注入(Injection)して、内部データベースのデータを流出・変造する脆弱性です。
    XSS攻撃者がWebページに悪性スクリプトを挿入する脆弱性です。
    RFI遠隔地の攻撃者サーバに存在する、悪意のあるファイルをIncludeして、そのファイルを実行する脆弱性です。
    SSRF外部からはアクセスできない内部の他のサーバにリクエストするように介入し、内部サーバに意図していない行為をさせる脆弱性です。
    File Upload悪意のあるスクリプトファイルをWebサーバにアップロードしてアクセスする場合、Webサーバのユーザー権限で実行されてしまう脆弱性です。
    File Downloadサーバに存在するファイルが意図せずにクライアントにダウンロードされる脆弱性です。
    XXEXML文書で動的に外部URIのリソースを含めるExternal Entity機能を悪用し、意図していない動作をさせる脆弱性です。
    Command Injection攻撃者がサーバに直接コマンドを伝えて実行させる脆弱性です。
    Insufficient Authorization一般的にユーザーに非表示にすべき特定のWebアプリケーションに対するアクセス可能有無を点検する項目です。
    Specific Vulnerability特定のアプリケーションに関して影響力の大きい脆弱性について点検する項目です。
    File ManagementWebサーバの運用に不要なファイルはすべて削除するか、他のシステムで管理する必要があります。
    Directory Listingディレクトリ内のファイルリストが表示される脆弱性です。
    Source Code DisclosureWebサーバがスクリプトファイルを正常に処理できないことにより、ソースコードがそのまま表示される脆弱性です。
    Information DisclosureWebサービスでサーバ情報、エラー情報などの攻撃に活用できる情報が表示される脆弱性です。
    URL Redirectionユーザーが意図していないページに移動させる脆弱性です。
    Insecure SSL/TLS安全でないSSL/TLSバージョンの使用によって発生し得る脆弱性を点検する項目です。
    Mixed Content保護されるべき重要なコンテンツがHTTPを介して伝送されてしまう脆弱性です。
    HTTP Request Smuggling攻撃者が偽装されたHTTPパケットをWebサーバに転送し、遠隔地にいる不特定のユーザーがWebサーバに転送するHTTPパケットを偽装する脆弱性です。
    Personal Information Exposure住民登録番号、クレジットカード番号などの個人情報がWebサービスに平文で露出される脆弱性です。
    SSI InjectionSSI(Server-Side Includes)設定によって悪意のある動的HTMLコードが実行されてしまう脆弱性です。

    • 次の例を参考にしてAPIを使用してください。

    リクエスト例1(診断作業の作成)

    curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
       --data-raw '{
        "StartUrl": "https://www.ncloud.com",
        "ExcludeUrl": [
            "https://www.ncloud.com/event",
            "https://www.ncloud.com/robot.txt"
        ],
        "Headers": {
            "Upgrade-Insecure-Requests": "1",
            "Accept": "text/html.....",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
            "Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
            "X-Custom-Header": "Bar"
        },
        "VulnItems": [
            "ALL"
        ],
        "UserAgent": "Android",
        "Speed": "1",
        "Memo": "OPEN API TEST"
    }'
    

    リクエスト例2(再診断作業の作成)

    リクエスト例2-1.再診断できる診断検索(手動)

    1. getJobs(Web Security Checker) APIを利用して診断リストを呼び出します。
    2. レスポンスでresources > record_dataプロパティの項目のうち、"rescan_button": "possible"と表記された項目を検索します。
    3. 前段階で検索した項目のinstanceNoをコピーします。
    • 備考:rescan_buttonの値がnullまたはexpiredの場合は再診断できません。
    curl -X GET "https://wsc.apigw.ntruss.com/api/v1/jobs?limit=10&page=1"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
    {
        "returnCode": "0",
        "returnDesc": "Request Success",
        "returnMessage": "成功",
        "resources": {
            "total_cnt": 1,
            "total_page_cnt": "1",
            "current_start_page": "1",
            "current_end_page": "10",
            "record_data": [
                {
                    "instanceNo": "12311231",
                    "start_date": "2020-12-02 23:34:54",
                    "end_date": "2020-12-02 23:36:43",
                    "status": "Complete",
                    "start_url": "http://ncloud.com",
                    "crawl_cnt": "10",
                    "scan_cnt": "1",
                    "memo": "OPEN APIテスト(#1)",
                    "result_button": "report",
                    "result_desc": null,
                    "rescan_button": "possible",
                    "slave_data": null
                },
            ]
        }
    }
    

    リクエスト例2-1-1.再診断できる診断検索(ユーティリティ使用)

    • getJobs(Web Security Checker) APIとjqユーティリティを利用して再診断できるinstanceNoリストを確認します。
      • この例で、instanceNoは「12311231」です。
      • もし、instanceNoがない場合、再診断できる診断作業がないことを意味します。
    curl -X GET "https://wsc.apigw.ntruss.com/api/v1/jobs?limit=10&page=1"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}" | jq '.resources.record_data[] | select( .rescan_button == "possible" ) | .instanceNo'
    %"12311231"
    

    リクエスト例2-2.診断作業呼び出し

    • masterInstanceNoパラメータに先ほど取得した"12311231"を入力します。
      • 必ず文字列タイプで番号を入力してください。
    curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
       --data-raw '{
        "StartUrl": "https://www.ncloud.com",
        "ExcludeUrl": [
            "https://www.ncloud.com/event",
            "https://www.ncloud.com/robot.txt"
        ],
        "Headers": {
            "Upgrade-Insecure-Requests": "1",
            "Accept": "text/html.....",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
            "Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
            "X-Custom-Header": "Bar"
        },
        "VulnItems": [
            "ALL"
        ],
        "UserAgent": "Android",
        "Speed": "1",
        "Memo": "OPEN API TEST",
        "MasterInstanceNo": "12311231"
    }'
    %{
        "returnCode": "0",
        "returnDesc": "Request Success",
        "returnMessage": "成功",
        "resources": null
    }
    

    レスポンス例1(診断作業の作成完了)

    {
        "returnCode": "0",
        "returnDesc": "Request Success",
        "returnMessage": "成功",
        "resources": null
    }
    

    レスポンス例2(予約語の入力エラー)

    ユーザーリクエストのVulnItemsパラメータに診断項目の予約語リストにないキーワードが存在する場合、次のようなエラーが発生します。

    また、ALL予約語をXSSなどの予約語と一緒に使用する場合、次のようなエラーが発生します。

    {
        "error": {
            "errorCode": 160433,
            "message": "Param Value Not Define - VulnItems"
        }
    }
    

    レスポンス例2-1(予約語の入力エラー)

    • ALL予約語を使用する場合、他の予約語は使用できません。
    curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
       --data-raw '{
        "StartUrl": "https://www.ncloud.com",
        "ExcludeUrl": [
            "https://www.ncloud.com/event",
            "https://www.ncloud.com/robot.txt"
        ],
        "Headers": {
            "Upgrade-Insecure-Requests": "1",
            "Accept": "text/html.....",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
            "Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
            "X-Custom-Header": "Bar"
        },
        "VulnItems": [
            "ALL",
            "XSS"
        ],
        "UserAgent": "Android",
        "Speed": "1",
        "Memo": "OPEN API TEST"
    }'
    %{
        "error": {
            "errorCode": 160433,
            "message": "Param Value Not Define - VulnItems"
        }
    }
    

    レスポンス例2-2(パラメータのタイプエラー)

    • VulnItemsパラメータは配列(list)タイプのみを許可します。
    • VulnItems: "ALL"を入力する場合、エラーが発生します。
    curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
       -H "accept: application/json"
       -H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
       -H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
       -H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
       --data-raw '{
        "StartUrl": "https://www.ncloud.com",
        "ExcludeUrl": [
            "https://www.ncloud.com/event",
            "https://www.ncloud.com/robot.txt"
        ],
        "Headers": {
            "Upgrade-Insecure-Requests": "1",
            "Accept": "text/html.....",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
            "Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
            "X-Custom-Header": "Bar"
        },
        "VulnItems": "ALL",
        "UserAgent": "Android",
        "Speed": "1",
        "Memo": "OPEN API TEST"
    }'
    %{
        "error": {
            "errorCode": 160431,
            "message": "VulnItems should be list"
        }
    }
    

    レスポンス例3(サーバ所有有無のチェック)

    顧客本人の資産でないサーバに対して診断をリクエストする場合、次のようなエラーが発生します。

    APIを利用するアカウントのサーバに対する権限を確認してください。

    {
        "error": {
            "errorCode": 160451,
            "message": "Assets_Check_Fail"
        }
    }
    

    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.