blob: 71519dc68f2288196ef7ad8801f51892b0ef25fa [file] [log] [blame]
package flex.messaging.securityadvisories;
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
import flex.messaging.util.XMLUtil;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.w3c.dom.Document;
import java.io.StringWriter;
/**
* Created by christoferdutz on 23.07.15.
*/
public class BlazeDsXmlProcessingXXEVulnerability extends TestCase {
public void testVulnerability() throws Exception {
StringBuffer xml = new StringBuffer(512);
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
xml.append("<!DOCTYPE foo [\r\n");
xml.append("<!ELEMENT foo ANY >\r\n");
xml.append("<!ENTITY xxe SYSTEM \"file:///etc/passwd\" >]>\r\n");
xml.append("<foo>&xxe;</foo>");
Document data = XMLUtil.stringToDocument(xml.toString());
OutputFormat format = new OutputFormat(data);
StringWriter stringOut = new StringWriter();
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.serialize(data);
Assert.assertTrue(stringOut.toString().contains("&xxe;"));
}
}