欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

D-link十个漏洞0Day研究(附上详细过程)

来源:本站整理 作者:佚名 时间:2017-09-13 TAG: 我要投稿

安全研究人员Pierre Kim日前表露D-Link DIR 850LAC1200型双频千兆云路由器被曝10个安全成绩,包含XSS攻击入侵,短缺应有的固件掩护,后门和root提权等。这10个安全成绩分别是:
Firmware。对firmware短缺充足的安全掩护。 XSS破绽漏洞bug。攻击入侵者能够应用XSS攻击入侵来获得已认证用户的认证cookie。
Retrieving admin password。攻击入侵者能够提取admin的口令,应用MyDlink云协定增加攻击入侵者帐号到路由器,来获得路由器的节制权;
Weak Cloud protocol。MyDlink协定基于TCP,路由器和MyDlink账户之间的通讯没有加密
Backdoor access。存在后门,攻击入侵者能够获得root权限。
Stunnel private keys。加密私钥硬编码在固件中,攻击入侵者提取后能够履行中间人攻击入侵。
Nonce bruteforcing for DNS configuration。攻击入侵者能够经由过程非认证的HTTP哀求,转发流量等方法转变路由器的DNS设置装备摆设。
Weak files permission and credentials stored in cleartext。路由器明文保留证书信息。
Pre-Auth RCEs as root (L2)。DHCP客户端存在被敕令注入的能够,攻击入侵者能够用来获得装备的root权限。
DoS against some daemons。攻击入侵者能够长途攻击入侵路由器上运转的保卫过程和办事。
以上破绽漏洞bug存在于Dlink 850L revA(DIR850L_REVA_FW114WWb07_h2ab_beta1.bin)和Dlink 850L revB(DIR850LB1_FW207WWb05.bin)中的至多一个固件中。
Dlink 850L的最新固件镜像revA (DIR850L_REVA_FW114WWb07_h2ab_beta1.bin)未停止掩护,攻击入侵者能够捏造一个新的固件镜像。
Dlink 850L的最新固件revB (DIR850LB1_FW207WWb05.bin,DIR850L_REVB_FW207WWb05_h1ke_beta1.bin和DIR850LB1 FW208WWb02.bin)用硬编码暗码停止掩护的。
研究者用上面的法式来解密固件镜像。
/*
 * Simple tool to decrypt D-LINK DIR-850L REVB firmwares
 *
 * $ gcc -o revbdec revbdec.c
 * $ ./revbdec DIR850L_REVB_FW207WWb05_h1ke_beta1.bin wrgac25_dlink.2013gui_dir850l > DIR850L_REVB_FW207WWb05_h1ke_beta1.decrypted
 */
#include
#include
#include
#include
#include
#include
#include
#define USAGE "Usage: decimg  \n"
int main(int    argc,
         char   **argv)
{
        int     i, fi;
        int     fo = STDOUT_FILENO, fe = STDERR_FILENO;
        if (argc != 3)
        {
                write(fe, USAGE, strlen(USAGE));
                return (EXIT_FAILURE);
        }
        if ((fi = open(argv[1], O_RDONLY)) == -1)
        {
                perror("open");
                write(fe, USAGE, strlen(USAGE));
                return (EXIT_FAILURE);
        }
        const char *key = argv[2];
        int kl = strlen(key);
        i = 0;
        while (1)
        {
                char buffer[4096];
                int j, len;
                len = read(fi, buffer, 4096);
                if (len 0)
                        break;
                for (j = 0; j 0xFB + 1;
                        buffer[j] ^= key[(i + j) % kl];
                }
                write(fo, buffer, len);
                i += len;

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载