ZAP API mapped to a port other than 8080

444 views
Skip to first unread message

Kav

unread,
May 17, 2021, 6:03:13 AM5/17/21
to OWASP ZAP User Group
Hi, 
I am trying to access ZAP API via the docker image. Here is my docker-compose file:
version: "3.8"
services:
    image: owasp/zap2docker-stable
    command: zap.sh -daemon -host 0.0.0.0 -config api.disablekey=true -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true
    ports:
     - "8081:8080"

Everything works fine if I map it to 8080 on the host with "8080:8080". But if I map it to any other port, I only get this error at http://localhost:8081:

ZAP Error [java.net.ConnectException]: Connection refused (Connection refused) Stack Trace: java.net.ConnectException: Connection refused (Connection refused) at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) at java.base/java.net.Socket.connect(Socket.java:609) at org.zaproxy.zap.ZAP$ProtocolSocketFactoryImpl.createSocket(ZAP.java:434) at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:728) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:457) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:207) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.parosproxy.paros.network.HttpSender.executeMethod(HttpSender.java:429) at org.parosproxy.paros.network.HttpSender.runMethod(HttpSender.java:671) at org.parosproxy.paros.network.HttpSender.send(HttpSender.java:626) at org.parosproxy.paros.network.HttpSender.sendAuthenticated(HttpSender.java:601) at org.parosproxy.paros.network.HttpSender.sendAuthenticated(HttpSender.java:584) at org.parosproxy.paros.network.HttpSender.sendAndReceive(HttpSender.java:489) at org.parosproxy.paros.network.HttpSender.sendAndReceive(HttpSender.java:459) at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:562) at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:333) at java.base/java.lang.Thread.run(Thread.java:834)

No other error in zap.log file. Does ZAP only work when mapped to 8080 on the host machine? I have to ultimately run the ZAP service on a remote server (where 8080 is not a free port).

Thanks, 
Kavitha

Simon Bennetts

unread,
May 17, 2021, 6:08:33 AM5/17/21
to OWASP ZAP User Group
Hi Kavitha,

8080 is the default ZAP port.
To change that just use the `-port` parameter as per https://www.zaproxy.org/docs/desktop/cmdline/

Cheers,

Simon

Kav

unread,
May 17, 2021, 7:06:59 AM5/17/21
to OWASP ZAP User Group
Hi Simon, 

Thanks , that worked! So the "port" option has to be used to specify which port ZAP API is exposed on the host.
 I need to run in it a remote server and I cannot control which ports can be used by ZAP. How to go about this? Can ZAP choose a random available port on host which I can then see via docker ps and then access the API from it?

Best Regards,
Kavitha
Reply all
Reply to author
Forward
0 new messages