Chinaren脚本注入式攻击(1)
如果一个留言簿支持脚本是非常不安全的,chinaren校友录原来支持脚本,后来被过滤掉了。察看它的脚本代码,发现还是有某些漏洞,可以进行脚本攻击。
如果你是管理员,班级宣言中你可以用任意的脚本<script></script>而不受限制。在一般的留言中,它把你留言中的关键字符如‘,“,<等替换了,所以你并不能进行脚本注入。但是对于‘,我发现在前面加两个转意字符,他仍旧是原来字符。我们可以发布一个带有\的字符串,而后面可以任意进行函数等操作,比如你可以留诸如\+doStr(String.fromCharCode(97)) ,doStr是Chinaren内置函数,显示带有HTML标志的语句。但是有一个问题还没有处理掉,就是这样留言后系统报错,因为后面的单引号没有处理。如果有哪位大虾解决这个问题,有烦通知我。
既然我没有办法把弄进去,我可以在那里面用它自己的函数,然后把后面的垃圾东西去掉就是了。
在留言里,Chinaren提供了两个函数显示留言,里面替换了一些关键字。
普通用户的留言是用DoFlatTxt生成,它确实比较安全,暂时还没想到解决办法。
而doStr是系统用来通知大家的,比如某人加入本班了,或是什么系统消息了。我们可以利用这个函数,达到攻击的目的。
比较简单的攻击方式,大家比较属性这个攻击方法while(1==1){;}能够让对方进入死循环,但是现在浏览器也比较智能了,它运行一段时间,然后告诉你,可能是死循环,是否继续运行,如果不继续,也就没什么用了,用另一种方法能够使所有用户登陆不到本班级,也可以让一个警告窗口不听的显示。
下面是Chinaren两个函数的源代码:
function doStr(src) {
var quote = /(:\)|\#_\#|8\*\)|:\">|:D|:P|B_\)|B_I|\^_\*|:\$|:\||:\(|:\.\(|:_\(|>:\(|:V|\*_\*|:\^|:\?|:\!|\=:\||:%|:O|:X|\|-\)|:Z|:9|:T|:-\*|\*_\/|:#\||:69|\/\/shuang|\/\/qiang|\/\/ku|\/\/zan|\/\/heart|\/\/break|\/\/F|\/\/W|\/\/mail|\/\/strong|\/\/weak|\/\/share|\/\/phone|\/\/mobile|\/\/kiss|\/\/V|\/\/sun|\/\/moon|\/\/star|\(\!\)|\/\/TV|\/\/clock|\/\/gift|\/\/cash|\/\/coffee|\/\/rice|\/\/watermelon|\/\/tomato|\/\/pill|\/\/pig|\/\/football|\/\/shit)/g;
var src = src.replace(quote, "<script" + ">getEmotion($1)</" + "script>");
document.write(src);
}
function doFlatTxt(src) {
if (src.indexOf("求学网")!=-1 || src.toLowerCase().indexOf("qiuxue")!=-1) {
document.write("校友录提示: 该条留言是广告, 已被系统过滤!");
} else {
var quote = /(:\)|\#_\#|8\*\)|:\">|:D|:P|B_\)|B_I|\^_\*|:\$|:\||:\(|:\.\(|:_\(|>:\(|:V|\*_\*|:\^|:\?|:\!|\=:\||:%|:O|:X|\|-\)|:Z|:9|:T|:-\*|\*_\/|:#\||:69|\/\/shuang|\/\/qiang|\/\/ku|\/\/zan|\/\/heart|\/\/break|\/\/F|\/\/W|\/\/mail|\/\/strong|\/\/weak|\/\/share|\/\/phone|\/\/mobile|\/\/kiss|\/\/V|\/\/sun|\/\/moon|\/\/star|\(\!\)|\/\/TV|\/\/clock|\/\/gift|\/\/cash|\/\/coffee|\/\/rice|\/\/watermelon|\/\/tomato|\/\/pill|\/\/pig|\/\/football|\/\/shit)/g;
var src = src.replace(quote, "<script" + ">getEmotion($1)</" + "script>");
document.write(src);
}
}