Burp Suite User Forum

Create new post

Headless BurpPro in Docker requires X11

Sven | Last updated: Mar 07, 2023 08:13AM UTC

Hi, I am trying to run Burp Pro within Docker using the following startup command: /usr/lib/jvm/jdk-17/bin/java -Djava.awt.headless=true -jar /home/user/burpsuite_pro.jar --data-dir=/home/user/ --project-file=/home/user/proj01.burp --auto-repair --unpause-spider-and-scanner --disable-auto-update This results into the following stacktrace: burp-burpy-1 | java.lang.InternalError: java.lang.reflect.InvocationTargetException burp-burpy-1 | at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) burp-burpy-1 | at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) burp-burpy-1 | at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) burp-burpy-1 | at java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) burp-burpy-1 | at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) burp-burpy-1 | at java.desktop/sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1242) burp-burpy-1 | at java.desktop/javax.swing.JComponent.getFontMetrics(JComponent.java:1691) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:251) burp-burpy-1 | at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1725) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1446) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1394) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.java:2815) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:224) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:204) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:251) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:448) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:458) burp-burpy-1 | at java.desktop/javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:502) burp-burpy-1 | at java.desktop/javax.swing.JList.setSelectedIndex(JList.java:2232) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicComboPopup.setListSelection(BasicComboPopup.java:1273) burp-burpy-1 | at java.desktop/javax.swing.plaf.basic.BasicComboPopup$Handler.itemStateChanged(BasicComboPopup.java:1097) burp-burpy-1 | at java.desktop/javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1257) burp-burpy-1 | at java.desktop/javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1318) burp-burpy-1 | at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1365) burp-burpy-1 | at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:127) burp-burpy-1 | at java.desktop/javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:94) burp-burpy-1 | at java.desktop/javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:132) burp-burpy-1 | at java.desktop/javax.swing.JComboBox.addItem(JComboBox.java:746) burp-burpy-1 | at burp.zlb.<init>(Unknown Source) burp-burpy-1 | at burp.t0f.L(Unknown Source) burp-burpy-1 | at burp.cx.X(Unknown Source) burp-burpy-1 | at burp.tql.lambda$new$2(Unknown Source) burp-burpy-1 | at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) burp-burpy-1 | at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771) burp-burpy-1 | at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) burp-burpy-1 | at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) burp-burpy-1 | at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) burp-burpy-1 | at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) burp-burpy-1 | at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) burp-burpy-1 | at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) burp-burpy-1 | Caused by: java.lang.reflect.InvocationTargetException burp-burpy-1 | at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) burp-burpy-1 | at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) burp-burpy-1 | at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) burp-burpy-1 | at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) burp-burpy-1 | at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) burp-burpy-1 | at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) burp-burpy-1 | ... 44 more burp-burpy-1 | Caused by: java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null burp-burpy-1 | at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) burp-burpy-1 | at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) burp-burpy-1 | at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) burp-burpy-1 | at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) burp-burpy-1 | at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) burp-burpy-1 | at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) burp-burpy-1 | at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) burp-burpy-1 | at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:315) burp-burpy-1 | at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35) burp-burpy-1 | at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56) burp-burpy-1 | ... 50 more burp-burpy-1 | Failed to create Burp project: java.lang.reflect.InvocationTargetException When adding an X11 config for the container, Burp is starting as expected: environment: DISPLAY: $DISPLAY volumes: - /tmp/.X11-unix:/tmp/.X11-unix - /home/user/.Xauthority:/home/user/.Xauthority However, my requirement is to startup BurpPro with "-Djava.awt.headless=true" and not requiring an X11 socket. How could that be archived? Ta Sven

Michelle, PortSwigger Agent | Last updated: Mar 07, 2023 01:49PM UTC

Thanks for getting in touch. Burp Suite Professional is designed with manual testing in mind. Can you tell us more about your setup and the scenario that requires you to run Burp headlessly without an X11 socket? If you'd rather share these details directly rather than on the public forum, you can contact us using support@portswigger.net.

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