😎

OWASP ZAPからAPIをPOST実行する

2021/09/06に公開

やりたいこと

JSONを受け取るAPIをPOSTメソッドでOWASP ZAPから実行をしたい。

OWASP ZAPのバージョンは2.10.0です。

やり方

1

OWASP ZAPの画面左上の「スクリプトタブ」にある「Stand Alone」を右クリックして新規スクリプトを作成する。

2

Script engineECMAScript : Oracle Nashornを選択し、保存する。

3

スクリプトコンソールで以下のソースコードを貼り付けて実行する。

/**
 * 設定値
 */
// URI
var uri = 'xxxxxx';

// リクエストパラメータ
var params = {
  field1: "value1",
  field2: "value2"
};

/**
 * Javaのパッケージのインポート
 */
var HttpRequestHeader = Java.type('org.parosproxy.paros.network.HttpRequestHeader');
var HttpRequestBody   = Java.type('org.zaproxy.zap.network.HttpRequestBody');
var HttpMessage       = Java.type('org.parosproxy.paros.network.HttpMessage');
var HttpSender        = Java.type('org.parosproxy.paros.network.HttpSender');
var Model             = Java.type('org.parosproxy.paros.model.Model');
var TreeSet           = Java.type('java.util.TreeSet');

// Sender生成
var sender = new HttpSender(Model.getSingleton().getOptionsParam().getConnectionParam(), true, 6);

// リクエストヘッダ
var requestHeader = new HttpRequestHeader();
requestHeader.setMethod("POST");
requestHeader.setURI(convertStrToURI(uri));
requestHeader.setHeader("Content-Type", "application/json");

// リクエストボディ
var requestBody = new HttpRequestBody(
  JSON.stringify(params)
);

// リクエストヘッダとリクエストボディをまとめる
var msg = new HttpMessage(requestHeader, requestBody);

// リクエスト送信 & レスポンス受信
sender.sendAndReceive(msg);

// リクエストの結果を確認
var responseHeader = msg.getResponseHeader().toString();
var responseBody = msg.getResponseBody().toString();
print(responseHeader);
print(responseBody);

// URI文字列をURIオブジェクトにする
function convertStrToURI(uristr){
  return new org.apache.commons.httpclient.URI(uristr);
}

参考URL

https://securitymemo.blogspot.com/2016/06/owasp-zap-part3.html

Discussion