XSS攻击流程
1、攻击者将恶意代码注入到服务器中
2、用户在没有防备的情况下访问服务器
3、服务器将含有恶意代码的网页响应给客户端
4、在客户端浏览器中触发恶意的JS代码
XSS危害
1、盗取各种用户账号
2、窃取用户Cookie资料,冒充用户身份进入网站
3、劫持用户会话,执行任意操作
4、刷流量,执行弹窗广告
5、传播病毒
XSS漏洞的验证
POC 漏洞的验证与检测
EXP 漏洞的完整利用工具
shellcode 利用漏洞时,执行的代码
payload 攻击载荷(在sqlmap里是攻击代码的模块,在msf里与shellcode类似,功能是建立与目标的连接
验证XSS漏洞存在的PoC
#常用 #弹出一个确认框 #弹出一个输入框
XSS的分类
一、反射型XSS与beef的使用
1、反射型 XSS 的 JS 代码在web参数(变量)中,如搜索框的反射型XSS,输入其他的字符不触发弹窗,当输入alert时才触发弹窗。
Opening Web UI (http://127.0.0.1:3000/ui/panel) #beef的web地址,用户名和密码都是beef以下链接是基于反射型XSS构造beef勾子的语句,beef的监听端口默认是3000把alert弹窗的语句改为beef攻击的语句,当有人执行这条语句时,就会被beef监听。http://192.168.1.132/DVWA/vulnerabilities/xss_r/?name=
当用户执行以上语句时,我们的beef成功勾了其主机,并且通过下图还能发现靶机的一些基本信息。
我们可以利用beef的alert弹窗警告模块,填入我们要展示的东西,就可以在靶机的浏览器进行展示,不仅仅有alert功能,还有其他的一些更加强大的功能。
下面我们将运用beef的屏幕截取功能,对靶机的当前屏幕进行截取,如下图所示
当然我们也可以对靶机的浏览器进行重定向,操作如图所示,靶机浏览器页面成功跳转到百度,不仅仅有这些还有其他更加强大的功能。
二、储存型XSS
1、储存型XSS是持久性跨站脚本,持久的意思是写进数据库或者文件中可以永久保存。如留言板。
ag:
在后端代码过滤引号和反斜杠的情况下,可以用charcode对引号的内容进行转换,xss2——>120,115,115,50,
储存型xss在用beef进行勾取时的原理,当有用户或者管理员访问这个网页时,就会被beef所勾取。
http://192.168.1.132/DVWA/vulnerabilities/xss_s/
当我们用beef成功勾取时,可以通过Deta
三、DOM型XSS
1、DOM型XSS是通过修改浏览器页面的DOM树而执行的。
ag:
【#message=alert(/xss/)】#取得message等号后面的语句,【#】号后面是锚点,锚点的内容不会提交到服务器,只在浏览器执行
XSS构造
1、利用【<>】构造HTML和标签
alert(/xss/) #没有对script进行过滤 alert("XSS") #对script进行了过滤,但是没有对大小写进行严格的过滤
2、伪协议
touch me! #提交参数,点击超链接,触发xss #使用img标签的伪协议
3、通过事件触发XSS
#这个标签引入一个图片,当鼠标悬停于图片时,会触发XSS代码 #构造一个单行的文本输入框,当点击键盘任意一个按键时触发XSS #当按住键盘不松时不会触发XSS,当松开键盘时才触发 #构造一个按钮,当我们点击按钮时触发XSS
xss-lab通关
level1
链接:http://192.168.1.132/xss/level1.php?name=test
尝试把test改为test1,查看页面变换,页面正常输出test1(由此也可以判断其可能存在的是一个反射型的xss),如果要进行xss攻击,要用到 JS ,所以对 JS 常用的符号进行测试。
链接:
http://192.168.1.132/xss/level1.php?name=
发现">也能正常回显,证明后端代码没有对这些特殊字符进行过滤,这时候可以用<>进行 JS 构造弹窗
很明显我们可以构造以下的 JS 对目标进行xss
http://192.168.1.132/xss/level1.php?name=