usd-2019-0002 | feeling4design Super Forms – Drag & Drop Form Builder/1.0.0 – 4.4.8

Advisory ID: usd-2019-0002
CVE Number: N/A
Affected Product: Super Forms
Affected Version: 1.0.0 – 4.4.8
Vulnerability Type: Path Traversal
Security Risk: Critical
Vendor URL:
Vendor Status: Not fixed


The attacker can upload files to arbitrary locations by manipulating the [userid] stored in the session cookie. This vulnerability when combined with the vulnerability „Arbitrary File Upload“ described in usd-2019-0003 can lead to Remote Code Execution.

Proof of Concept

The upload of arbitrary file extension was tested on a customers instance of wordpress + super forms.

To reproduce:
1) Setup wordpress with super forms and create a form containing an upload form
2) Before submitting this form, set a cookie PHPSESSID to the path relative to the upload directory, e.g. PHPSESSID=../

As a consequence, we used the generation of the [userid] for the subfolder to upload the file to a different path. The source code in /uploads/php/UploadHandler.php:

protected function get_user_id() {
return session_id();

The session_id() can be changed by the PHPSESSID cookie. We set it to value ../ which changes the upload path to: uploads/php.

File execution:
Usually, the uploaded files were copied to a subfolder with a random [userid] on the server: wpcontent/plugins/super-forms/uploads/php/files/[userid]/[filename]. In the folder php/files/ there is a .htaccess file that denies the execution of php files:

Since the directory uploads/php is not restricted in php code execution by the mentioned .htaccess file, a php reverse shell is possible.


The suggested fix is just a temporary workaround and not a final fix that ensures the full security of this wordpress plugin. It is intended to support the developers to close this vulnerability.

The vulnerabilities we found are not yet fixed by the latest version of this plugin. One option is to turn it off.

Another option is to apply the following temporary fixes:
In /uploads/php/UploadHandler.php replace the function get_user_id() to return a value an attacker cannot tamper with.


  • 2019-01-25 First Contact request via contact form to:
  • 2019-02-05 Vendor releases version 4.5.3 with a supposed fix. We could still exploit the vulnerability. (related: Changelog on
  • 2019-07-31 Security advisory released


This security vulnerabilities were found by Tim Kranz and Matthias Goehring of usd AG.


In order to protect businesses against hackers and criminals, we always have to keep our skills and knowledge up to date. Thus, security research is just as important for our work as is building up a security community to promote the exchange of knowledge. After all, more security can only be achieved if many individuals take on the task.

Our CST Academy and our usd HeroLab are essential parts of our security mission. We share the knowledge we gain in our practical work and our research through training courses and publications. In this context, the usd HeroLab publishes a series of papers on new vulnerabilities and current security issues.

Always for the sake of our mission: „more security.“

to usd AG

In accordance with usd AG’s Responsible Disclosure Policy, all vendors have been notified of the existence of these vulnerabilities.


The information provided in this security advisory is provided „as is“ and without warranty of any kind. Details of this security advisory may be updated in order to provide as accurate information as possible.