Recovering secrets from IntelliJ plugins

IntelliJ has a deprecated PasswordUtil class that statically xors secrets for storage. Some plugins like Sonarlint (from Sonarqube) still use this outdated class to store passwords and tokens.

BraekerCTF 2024 source

This is the source code from the BraekerCTF 2024. I always wanted to create a large-scale, high-quality CTF, and I was working on it since Dec 2022. It is a jeopardy-style hacking competition, and it ran from 23 February 2024 to 24 February 2024. Over 700 teams participated.

Argon2 wordlist cracker

Modified the original Argon2 code for some simple password cracking.

Pentest report writing guide

Some pentesters struggle to effectively write about pentest results, causing findings and reports to end up in the bin. To create a healthy ecosystem we should share knowledge on what makes a pentest report work. Over the years I have developed my own methods for quickly producing high-quality deliverables. By sharing this knowledge I hope you can improve your writing as well.

Can we restore trust in cryptographic control?

Legislators and technologists have not reached consensus on regulations for cryptographic control. Let's look at arguments, history and the future in order to balance the discussion and to restore trust in controlling cryptography.

How to save money on a pentest

This short guide aims to aid companies by increasing the cost-effectiveness of penetration testing services.

Cracking Oracle Apex password hashes

We'll reverse the Oracle Apex engine and find out how to crack its hashes with hashcat.

Sharpen your monitoring capabilities with honeypots

I started out with this article to showcase vulnerabilities in honeypot software, but ended up believing that honeypots are the next step in leveling the cyber security playing field.

CVE-2021-22524 - DoS via XXE in NetIQ Access Manager

The NetIQ Access Manager was vulnerable to an XXE vulnerablity, allowing attackers to perform a Denial of Service attack on the IAM platform.

Harden your security team - Don't trust bug bounty reports

Pro-actively tighten security procedures or your security team might be subject to social engineering attacks.

Recovering passwords from pixelized screenshots

No tools were available for recovering a password from a pixelized screenshot, so I created a Proof of Concept. In this article I explain my algorithm and its implementation, but start with some history and the current state of deblurring techniques.

Lessons from password policy science

Password expiration and complexity rules are dead. We have proper password policy guidelines for over three years now. Stop trying to fix users and start fixing your infrastructure.

A widespread piece of .NET code allowing code execution

ViewState deserialization has been 'fixed' in .NET since 2012, but a vulnerable code snippet for creating a custom compressed ViewState is being passed around on the internet to this day.

Spot The Bug - An Open End

A new Spot The Bug challenge based on a vulnerability I found during an assignment.

Temporary intercom hack

The lock of the front door was broken, so I hacked together a way for housemates to open the door via their phones.

Viewing mssql backups files and extracting hashes

How to extract the sa password hash and view the content of the master database from an MSSQL database backup (.bak).

Siemens Spectrum Power Command Injection

During my time at Applied Risk I discovered a Command Injection vulnerability in Siemens Spectrum with the help of Rutger Hendriks. Siemens Spectrum is a control system for power grids.

OSCP - Fun and challenging but overrated

An article about my experiences with the OSCP course.

Owning Building Management Systems

When working for Applied Risk I got to contribute to research for hacking Building Mangement Systems. We'd found bugs and created exploits for owning buildings over the internet.

Loracrack - LoRaWAN session cracker

Application for cracking LoRaWAN sessions if the AppKey is known but the handshake is missed.

Only log required data for WPA cracking (aircrack-ng / airodump)

Patch for airodump for only logging relevant data for WPA cracking.

Simple libHackRF API example

Example program for interfacing with the HackRF.

To set currents in motion

Some blog article I wanted to write on information security.

Programming the Razer Tartarus Chroma on Linux

Program for using the Razer Tartarus Chroma on Linux because the normal drivers weren't working.

Staying Positive About False Negatives

How and why I failed a couple of times during a code review / pentest.

Secure Diffie-Hellman parameters for Lighttpd with SNI

A proper SNI configuration for lighttpd DH parameters.

Self-replicating binary infecting Mach-O files

Programming exercise for virus-making for getting to know assembly, Mach-O binaries and how virusses work.

Postfix mail bot for helping setting up PGP encrypted mail

Programming exercise for encrypting email. This is a mailbot in Python for Postfix for setting up PGP encrypted mail.

Fixing this "couldn't get 'max filedescriptors'" error

How I fixed the "couldn't get 'max filedescriptors'" error from Lighttpd.

Spot The Bug challenge 2018 warm-up

Warm-up for the Spot The Bug challenge 2018 from Securify.

Hoe begin je 2018 veilig op internet?

After reporting some vulnerabilities I found during SumOfPwn to a newspaper, they ask me to give some general internet safety tips for 2017-2018. The article contains a few of my practical tips. Here is the complete (Dutch) text I sent in regarding internet safety for the public.

Compiling a Monero miner on OSX

Tutorial on compiling a Monero miner op OSX.

A journey into cracking RSA moduli with a common GCD

In this article I share some experiences from cracking RSA moduli in bulk by exploiting the use of common GCDs.

Fixing the 'critical software update' OSX install message

A short article about fixing the 'critical software update' error message when re-installing a Macbook Pro with a touch bar.

Kobo Aura H2O hacking

Bypassing registration for the Kobo Aura H2O so you can use it like the actual product you payed for.

Broken TLS certificate pinning in VTech DigiGo Kid Connect app

Advisory for broken TLS certificate pinning in VTech DigiGo Kid Connect app that allows for a Man-in-the-Middle attack on the chat functionality.

Multiple vulnerabilities in VTech DigiGo allow browser overlay attack

Advisory for vulnerability that allows attackers to perform a persistent overlay attack on the browser app.

Broken TLS certificate validation in VTech DigiGo browser

Advisory for broken TLS certificate validation in the VTech DigiGo browser.

Buffer over-read vulnerability in Virtuozzo Power Panel (VZPP) and Automator

Advisory for buffer over-read vulnerability in Virtuozzo Power Panel (VZPP) and Automator.

Reflected Cross-Site Scripting in CM4ALL

Advisory for Reflected Cross-Site Scripting in CM4ALL.

LazyFact - Factoring RSA moduli using basic methods

Programming practice to factorise an RSA modulus using very basic methods.

Crackcoin: basic blockchain-free cryptocurrency PoC in Python

Crackcoin is a very basic blockchain-free cryptocurrency PoC in Python. It's a programming practice project for discovering cryptocurrencies.

Instant negative hash cracking wordlist lookup

Bloomhash - Instant negative hash cracking wordlist lookup

Spot The Bug challenge 2016 write-up

Write-up for the Spot The Bug challenge 2016 from Securify.

Spot The Bug challenge December 2016

Briefing for the Spot The Bug challenge 2016 from Securify.

Threaded client/server sockets in Python

Programming practice for threaded server/client TCP sockets.

Reflected Cross-Site Scripting vulnerability in W3 Total Cache plugin

Advisory for Reflected Cross-Site Scripting vulnerability in W3 Total Cache plugin (Wordpress plugin).

Cross-Site Request Forgery in WordPress Press This function allows DoS

Advisory for DoS via Cross-Site Request Forgery in WordPress Press This function.

Persistent Cross-Site Scripting in Woocommerce WordPress plugin

Advisory for Persistent Cross-Site Scripting in Woocommerce WordPress plugin (Wordpress plugin).

Multiple vulnerabilities in All In One WP Security & Firewall plugin

Advisory for Multiple vulnerabilities in All In One WP Security & Firewall plugin login CAPTCHA (Wordpress plugin).

Persistent Cross-Site Scripting in Instagram Feed plugin via CSRF

Advisory for Persistent Cross-Site Scripting in Instagram Feed plugin via CSRF (Wordpress plugin).

Reflected Cross-Site Scripting vulnerability in MailPoet Newsletters plugin

Advisory for Reflected Cross-Site Scripting vulnerability in MailPoet Newsletters plugin (Wordpress plugin).

Authorization bypass in InfiniteWP Admin Panel

Advisory for authorization bypass in InfiniteWP Admin Panel (Wordpress plugin).

Persistent Cross-Site Scripting in WP Google Maps Plugin via CSRF

Advisory for Persistent Cross-Site Scripting in WP Google Maps Plugin via CSRF (Wordpress plugin).

Stored Cross-Site Scripting in Gallery - Image Gallery WordPress Plugin

Advisory for Stored Cross-Site Scripting in Gallery - Image Gallery (Wordpress plugin).

Weak validation of Amazon SNS push messages in W3 Total Cache WordPress Plugin

Advisory for Weak validation of Amazon SNS push messages in W3 Total Cache (Wordpress plugin).

Command injection in InfiniteWP Admin Panel

Advisory for Command injection in InfiniteWP Admin Panel (Wordpress plugin).

Information disclosure race condition in W3 Total Cache WordPress Plugin

Advisory for Information disclosure race condition in W3 Total Cache (Wordpress plugin).

JavaScript animation using the canvas element

Programming exercise for using the canvas element from Javascript.

ASCII animations in terminal using curses

Script for showing ascii animations in the terminal using the Python curses library.

Shortest Python quine

A Python quine I created in 2015 has been doing well on Stackoverflow.

Spot The Bug challenge 2015 write-up

Write-up for the Spot The Bug challenge 2015 from Securify.

Spot The Bug challenge 2015 briefing

Briefing for the Spot The Bug challenge 2015 from Securify.

Glype proxy local address filter bypass

Advisory for bypassing local address filters in the Glype web-based proxy that allows attacking the internal network of the proxy host.

Glype proxy cookie jar path traversal allows code execution

Advisory for path traversal vulnerability in the Glype web-based proxy that allows an attacker to run arbitrary PHP code on the server or remove critical files from the filesystem.

Trainpooling

Back in 2014 I thought of a hack for the Dutch train system I call trainpooling.

Hackerone DoS by GIF resize flooding

Advisory for Denial of Service vulnerability in HackerOne via GIF image upload.

Python library for creating PNG image data

Python script for generating custom PNG chunks for testing decoders.

Hackerone DoS by PNG compression

Advisory for Denial of Service vulnerability in HackerOne via PNG image upload.

HackerOne DoS by JPG pixel flood

Advisory for Denial of Service vulnerability in HackerOne via JPG image upload.

Helpdesk - Stupid things people say

A long time ago I worked at a helpdesk. While working there I started documenting stupid things people said over the phone (in Dutch). It was hilarious.