😎
OWASP ZAPからAPIをPOST実行する
やりたいこと
JSONを受け取るAPIをPOSTメソッドでOWASP ZAPから実行をしたい。
OWASP ZAPのバージョンは2.10.0
です。
やり方
1
OWASP ZAPの画面左上の「スクリプトタブ」にある「Stand Alone」を右クリックして新規スクリプトを作成する。
2
Script engine
はECMAScript : 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
Discussion