XSS跨站——攻击常见环境模拟
XSS跨站——攻击常见环境模拟
1.XSS之盲打
打开查看界面,可以看到有两个输入点,一个是看法,一个是名字,不难猜出,这是与数据库连接的内容,尝试输入内容查看反映
可以看见回显只有一个谢谢参与,明显画大饼,不行,我们一定要攻击他,所谓的盲打就是无法直接在前端看到代码的反馈效果,盲打类型交互的数据一般是被存在数据库中,也就是上一篇提到的存储型XSS,一般有留言板,调查问卷,评论等内容信息的页面。
这里不得不提一句,我一开始想着用测试代码试试,一直没反应,就多搞了几次,登入后面管理员查看的时候,直接崩了,我都不知道为啥
1 |
|
变向的证明了,如果如果没有过滤的话,恶心管理员是有一手的。当然,这并不是重点,我们的重点是传入代码获取到管理员的cookie值从而得到权限
1 |
|
可以看到在输入获取cookie的恶意代码后,当管理员登录后会直接执行该语句,向攻击者的工具传送cookie信息 ,管理员无法直接看到的,只有登录数据库看相关内容才能看见传送的语句
很好我们获取了cookie的内容,有了用户名和密码,但是密码经过了加密处理,这就使用kali的hash解密尝试一下咯,看看是什么加密方式
1 |
|
2.XSS之过滤
这次是XSS过滤的绕过,有了之前sql注入的相关经验,可以明白,我们的绕过方法无非就是大小写变化、拼凑语句以及使用注释进行干扰等
可以看到常规的xss脚本无法执行,猜测可能是使用了相关的过滤,尝试前几个说的方法
1 |
|
当我们大小写混淆拼写代码后,成功的绕过了后台的检测机制,达到了alert的目的,
3.XSS之htmlspecialchars
首先了解htmlspecialchars,它是函数的一种,作用是将预定义的字符转换为HTML实体,预定义的字符为:
- &(和号)
- ”(双引号)
- ‘(单引号)
- <(小于号)
- >(大于号)
1 |
|
首先输入五种符号,查看转义情况,可以发现,五种符号中,单引号是没有被转义的,所以我们可以通过#’的办法将herf给闭合掉从而运行我们想要的语句了
1 |
|
1 |
|
4.XSS之href输出
一般而言,href主要是实现对超链接进行转跳的功能,并且会有伴随着htmlspecialcharsd的协助,输出在a标签的href属性里面,可以使用JavaScript协议来执行语句
1 |
|
一般而言,在a标签的href属性汇总,一般放的是URL连接,所以会有规定输入必须以http或者https开头即可
5.XSS之JavaScript输出
JavaScript里面是不会对tag和字符实体进行解释,所以需要进行js的转义,如果检验到JavaScript的代码,可以思考是否有攻击插入点
明显用到了JavaScript上的界面变化,可以尝试构造闭合,然后插入我们需要的js语句
1 |
|
6.XSS之httponly绕过
如果在cookie中设置了httponly属性,那么通过JavaScript将无法读取到cooker信息,这样子在一定程度上能过有效的防止XSS攻击。
首先要明白,它的作用是防止cookie被读取,并不是防止跨站脚本执行,接下来模拟场景,首先使用php语言数字httponly,查看执行情况
1或者ture的代表这个函数启用了,然后我们使用xss工具注入了JavaScript语句读取cookie值
可以看见,在网络模块汇中,确实访问了xss工具网址
在最终的反馈汇总,cookie是空白,这说明httponly是阻止了cookie的读取,但是JavaScript是执行了的。那么这种情况下,我们应该怎么办呢,首先明确我们需要的是获取后台的权限,在后台的权限中,有两种加入方式,一种是cookie,另一种则是账号密码的输入
账号密码的获取又分两种情况,一种是浏览器保存读取,一种是浏览器没有保存读取的
账号密码不自动读取
一般来说,这种需要我们将注入了劫持语句的网页链接发给受害者,采取表单劫持的办法,他的作用就是在输入账号密码的地方,类似于抓包后,将账号密码再发送一份给跨站平台,这样子,我拿就可以获取到受害者的账号密码了
这种情况的要求比较高,前提条件上的需要在账号密码的登录界面中
账号密码自动读取
这种情况下,由于输入账号,浏览器会自动补充密码,我们可以通过XSS平台获取明文内容,这是产生在后台的XSS,存储型XSS如留言等