【XSS跨站】---代码及httponly绕过---day27

【XSS跨站】---代码及httponly绕过---day27

一、HttpOnly

1、什么是httponly

1、如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。XSS全称Cross SiteScript。

2、各个主流的脚本语言都支持httponly。

2、php中httponly的设置

image-20210418161901560

在设置了httponly之后,就无法获取cookie了

image-20210418162103333

虽然httponly可以阻止获取cookie的攻击,但是XSS漏洞还是存在的,可以用alert(1)来测试。

3、攻击思路

①我们的目标是进入后台

那么除了获取cookie之外,还可以直接账号密码登录,但是账号密码又分为两种情况,保存读取和没保存读取,也就是是否让浏览器记住密码了。

②保存读取:

  • 攻击思路:读取保存的数据

  • 平台模块:

image-20210418163146212

这个type值,就在登录界面查看源代码,

image-20210418163220560

③没保存读取:

  • 攻击思路:表单劫持
  • 前提:XSS跨站漏洞要产生在登录框那里
  • 原理:管理员输入账号密码之后,一份发给服务器,另一份发给攻击者。

二、XSS-labs平台

x、下载地址

https://github.com/do0dl3/xss-labs

1、level-1

①界面

image-20210418164338779

②测试

把url中的name的值更改,然后界面相应的显示就会更改。

image-20210418164443466

那么说明这个name的地方能写js语句,存在跨站漏洞。

③攻击

image-20210418164603201

2、level-2

①界面

image-20210418164644717

②测试

<script>alert(1)</script>

测试keyword

image-20210418164818555

没有弹窗

审查元素。

image-20210418164936127

③源码分析

image-20210418165109830

htmlspecialchars:

image-20210418165215008

所以在上面我们的符号改变了

  • 绕过思路:

审查页面元素可以看到:

此处还有一句有我们写的测试语句:

image-20210418165518567

image-20210418165530507

这个地方没有执行出来,是因为有双引号,那么我们就可以在测试时候,先闭合双引号,然后再闭合标签

payload:

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

④攻击:

使用上面的payload,成功。

image-20210418165724272

3、level-3

①界面:

image-20210418171038522

②测试

image-20210418171107858

还是,输入111之后,显示在前端页面。

测试使用第二关的方法,闭合。行不通

image-20210418171345521

看起来也是尖括号贝转义了,被过滤。

③攻击思路

使用表单中的onclick属性,来执行js代码。这样就避免了尖括号的使用。

image-20210418171457465

payload:

keyword=' onclick='alert(1)

image-20210418171911400

image-20210418171938705

image-20210418171947652

4、level-4

①界面

image-20210418172034905

②测试

使用3的方法

image-20210418172349265

5、level-5

①界面:

image-20210418172423840

②测试

使用4的方法,行不通。

image-20210418172628441

源码分析:

image-20210418172715061

③绕过思路:

使用html中的链接标签:

payload:

"> <a href=javascript:alert(1)>

相当于是添加了一个超链接标签。

image-20210418173111654

image-20210418173119279

6、level-6

①界面:

image-20210418173218632

②测试:

用level-5的方法:行不通,发现吧href给过滤了。

image-20210418173335232

源码分析:

image-20210418173426802

没有加正则表达式,可以大小写绕过。

③绕过方法:

大小写绕过payload:

"> <a Href=JavasCript:alert(1)>

image-20210418173546163

7、level-7

①界面:

image-20210418173656336

②源码分析:

image-20210418173828064

测试使用6的方法:

">

发现行不通:

截断了

image-20210418173949089

但是我们知道源码中这个检测,只检测了一次,没有循环的去替换检测。所以我们可以多弄几次。

③绕过:

payload:

"> <a HHREFref=JavasCscriptript:alert(1)>

image-20210418174248396

8、level-8

①界面:

image-20210418174319843

②测试:

image-20210418174456561

发现有下划线截断了。

源码分析:

image-20210418174551655

测试发现大小写和重复写都不管用。

③绕过:

思路:采用编码绕过

选择这个模式

image-20210418175213038

image-20210418175245493

payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

image-20210418175320452

image-20210418175328628

9、level-9

①界面:

image-20210418175649750

②测试:

测试使用level-8的方法:

image-20210418175736276

行不通。

③源码分析:

检测的是有没有http://

image-20210418175855914

④绕过:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://

image-20210418180417129

采取上面的方式来绕过,第一个//用来注释掉后面的http

image-20210418210225288

绕过成功。

10、level-10

①界面:

image-20210418210300475

②源码分析:

image-20210418210826937

③payload

keyword=well%20done!&t_sort="type="text" onclick="alert(1)"

其中type="text",是让这个数据框显示出来,这样的话才能够利用,否则hidden的话就隐藏起来了。

11、level-11

①界面:

image-20210418211335205

② 源码分析:

image-20210418212143207

发现这个$str33的值是从Referer里来的,抓包添加Referer头就行了。payload和10题中一样。

image-20210418213931558

image-20210418213852027

三、迪哥生动讲解---同源策略防止跨站攻击

1、跨站攻击

image-20210418212701702

来源就是通过http请求头中的,Referer头来决定的。

posted @ 2021-05-17 21:15  DarkerG  阅读(2368)  评论(0编辑  收藏  举报