The Burp Suite User Forum will be discontinued on the 1st November 2024.

Burp Suite User Forum

For support requests, go to the Support Centre. To discuss with other Burp users, head to our Discord page.

SUPPORT CENTRE DISCORD

Create new post

Turbo Intruder Headless Error

Federico | Last updated: Oct 08, 2024 04:25PM UTC

Good evening, I wanted to run the Turbo Intruder extension in headless mode using only the .jar file. I’ve cloned the repository provided by James Kettle on his GitHub, and I’ve built the source code via the ./gradlew command as it was specified. When I try to run a basic python script along with this extension, it works like it is supposed to. The problem arises when I try to use the race-single-packet-attack.py script. In fact, the attack fails with the following stack trace: Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 6, in queueRequests File "<string>", line 290, in __init__ at burp.BurpRequestEngine.<init>(BurpRequestEngine.kt:35) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:501) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:485) at org.python.core.PyReflectedConstructor.constructProxy(PyReflectedConstructor.java:211) java.lang.NullPointerException: java.lang.NullPointerException: Cannot invoke "burp.IBurpExtenderCallbacks.getHelpers()" because "burp.Utils.callbacks" is null at org.python.core.Py.JavaError(Py.java:546) at org.python.core.Py.JavaError(Py.java:537) at org.python.core.PyReflectedConstructor.constructProxy(PyReflectedConstructor.java:221) at org.python.core.PyReflectedConstructor.__call__(PyReflectedConstructor.java:180) at org.python.core.PyObject.__call__(PyObject.java:419) at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:237) at org.python.core.PyMethod.__call__(PyMethod.java:228) at org.python.core.PyMethod.__call__(PyMethod.java:223) at org.python.core.Deriveds.dispatch__init__(Deriveds.java:19) at org.python.core.PyObjectDerived.dispatch__init__(PyObjectDerived.java:1112) at org.python.core.PyType.type___call__(PyType.java:1713) at org.python.core.PyType.__call__(PyType.java:1696) at org.python.core.PyObject.__call__(PyObject.java:431) at org.python.core.PyObject.__call__(PyObject.java:435) at org.python.pycode._pyx0.__init__$66(<string>:306) at org.python.pycode._pyx0.call_function(<string>) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyBaseCode.call(PyBaseCode.java:307) at org.python.core.PyBaseCode.call(PyBaseCode.java:198) at org.python.core.PyFunction.__call__(PyFunction.java:482) at org.python.core.PyFunction.__call__(PyFunction.java:476) at org.python.core.PyInstance.__init__(PyInstance.java:124) at org.python.core.PyClass.__call__(PyClass.java:193) at org.python.core.PyObject.__call__(PyObject.java:394) at org.python.pycode._pyx1.queueRequests$1(<string>:18) at org.python.pycode._pyx1.call_function(<string>) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyBaseCode.call(PyBaseCode.java:153) at org.python.core.PyFunction.__call__(PyFunction.java:423) at org.python.pycode._pyx2.f$0(<string>:1) at org.python.pycode._pyx2.call_function(<string>) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1386) at org.python.core.Py.exec(Py.java:1430) at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:267) at burp.Fast_httpKt.evalJython(fast-http.kt:59) at burp.Fast_httpKt.main(fast-http.kt:440) Caused by: java.lang.NullPointerException: Cannot invoke "burp.IBurpExtenderCallbacks.getHelpers()" because "burp.Utils.callbacks" is null at burp.BurpRequestEngine.<init>(BurpRequestEngine.kt:35) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:501) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:485) at org.python.core.PyReflectedConstructor.constructProxy(PyReflectedConstructor.java:211) ... 35 more User Python error, check extender for full details: Cannot invoke "burp.IBurpExtenderCallbacks.getHelpers()" because "burp.Utils.callbacks" is null From what I understand, the cause of this is the engine.BURP2 which is used by the script to launch the attack, and I suppose it is related to the stack that the script is going to use (not sure about this last part). When the script performs the initialization of the engine, it meets these issue because - for some reason - the callbacks element is never initialized (maybe it is done via the setBurpPresent method? But it is never called…) so it gets this null pointer exception. Can you help me fix this issue? I really need this to work on my master thesis! I also point out that I did not modify the script as it is on the GitHub repo, and I did not touch the source code. I am working on a MacOS environment. The command I am using to launch the extension via command line is: java -jar turbo-intruder-all.jar race-single-packet-attack.py request.txt http://example.com foo Thank you for your time!

Hannah, PortSwigger Agent | Last updated: Oct 10, 2024 10:46AM UTC

From the error message you are receiving, it looks like the script you are using is trying to use Burp's network stack. However, as you've launched this as a standalone tool on the command line, it does not have access to Burp's network stack. You will need to change your Engine type to one of the standalone non-Burp network stacks. E.g., Engine.THREADED or Engine.HTTP2 (Swapping request engines - https://portswigger.net/research/turbo-intruder-embracing-the-billion-request-attack).

You must be an existing, logged-in customer to reply to a thread. Please email us for additional support.