当前位置:WooYun(白帽子技术社区) >> 代码审计 >> 翻译:AT&T U-Verse VAP2500电视盒子漏洞挖掘

翻译:AT&T U-Verse VAP2500电视盒子漏洞挖掘

杀戮 (有事请 at 大号园长) | 2014-11-26 12:19

你可能已经听说,(我觉得没有) AT&T 有一个无线电视机顶盒会提供U-verse上网业务和视频服务,现在我的电视需要连上互联网了,我感觉好不安,OK,前文的扯淡没了。

vap2500_login.png

一开始我进行了一些端口扫描,发现了一个Web服务和SOAP服务,现在让我们先专注于Web端,我访问了一下Web端,显示出了上面那个登陆界面,看起来似乎很麻烦的样子,因为我们没有证书,所以接下来所有企图访问的页面都会跳会到这,除非你成功的用密码登陆了。 (不是我废话多……...里面就这么写的)

接下来我进行了大量的检查,然后发现了第一个漏洞,Web目录的根目录下面有一个叫admin.conf的纯文本文件,里面有密码一样的东西。(…………..)

ATTadmin,1b12957d189cde9cda68e1587c6cfbdd,0
super,71a5ea180dcd392aabe93f11237ba8a9,0

接下来我们看看漏洞是怎么出现的。

<?php
if (isset($_POST['user']) && isset($_POST['pwd']))
{
  $user=$_POST['user'];
  $pwd=md5(trim($_POST['pwd']));
  $flag=0;
  $file_path = trim(shell_exec("call_qcsapi get_file_path security"));
  $file_path = $file_path."admin.conf";
  $fp = fopen($file_path, 'r');
  while(!feof($fp))
  {      
    $buffer = stream_get_line($fp, 100, "\n");
    $arraylist=split(',',$buffer);
    if($arraylist[0]==$user && $arraylist[1]==$pwd)
    {
      $flag=1;
      break;
    }
  }
  fclose($fp);
  if ($flag==1)
  {
    echo "<script language='javascript'>createCookie(\"p\", \"".md5($user)."\", 2);</script>";
    echo "<script language='javascript'>location.href='status_device.php'</script>";
  }
  else
    {echo "<script language='javascript'>alert(\"Login Failed\")</script>";}
}
?>


就是会根据提交的用户名密码 和 admin.conf匹配,匹配后,会设置cookie值然后进行内部重定向,我的黑客直觉告诉我他代码写的这么难看肯定有漏洞。

事实证明了我直觉,他把用户名的md5作为cookie值 P,事实上密码压根就没啥用,而且用户还改不了用户名,用户名是被写死在代码里的。 (…………....就是这么一回事吧)


if (isset($_COOKIE['p']))
{  
  // Start Moto Customized Passwd
  if($_COOKIE['p']==md5("ATTadmin"))
  {$priority=0;}
  else
  if($_COOKIE['p']==md5("super"))
  {$priority=0;}
  // End Moto Customized Passwd
  else
  {
    echo "<script language='javascript'>location.href='login.php'</script>";
    return;
  }
}
else
{
  echo "<script language='javascript'>location.href='login.php'</script>";
  return;
}


接下来我的直觉引领我走向第三个漏洞,他有一个叫tools_command.php的页面,被设计来执行命令的。有两个POST参数, cmb_header,txt_command,你可以构造这样的参数 cmb_header=&txt_command=whoami ,然后命令会被传递给shell_exec() ,然后系统会兴高采烈的告诉你它是个root。

作者提供了个ruby的POC http://goto.fail/projects/vap2500_root.rb

原文: http://goto.fail/blog/2014/11/25/at-and-t-u-verse-vap2500-the-passwords-they-do-nothing/

分享到:
  1. 1#
    回复此人 感谢
    xsser (十根阳具有长短!!) | 2014-11-26 12:35

    不错!!

  2. 2#
    回复此人 感谢
    RainShine (I'm your angel of music.) | 2014-11-26 12:46

    不错!!

  3. 3#
    回复此人 感谢
    L.N. (http://ln.sycsec.com/) | 2014-11-26 13:07

    赞一个

  4. 4#
    回复此人 感谢
    Mody | 2014-11-26 14:09

    不错!!

  5. 5#
    回复此人 感谢
    泳少 (此号被射!by U神) | 2014-11-26 14:37

    赞。。超赞~

  6. 6#
    回复此人 感谢
    BMa (web应用安全,更重要的是业务实现逻辑!) | 2014-11-26 17:24

    啥时候我能买得起这个电视

  7. 7#
    回复此人 感谢
    wefgod (求大牛指点) | 2014-11-27 08:23

    @L.N. 来一发

  8. 8#
    回复此人 感谢
    xfkxfk | 2014-11-27 09:11

    不错!!这代码小学生写的吧。。。

  9. 9#
    回复此人 感谢
    看灰机 (短的是磨难,长的是人生。) | 2014-11-27 11:13

    不稀奇,国内好多IPTV在当发包服务器。

  10. 10#
    回复此人 感谢
    沉默 ((ด้้้้้็็็็็้้้้้็็็็ด้้้้้็็็็็้้้้้็็็็ http://www.l68.net/ 这是一个神奇的网站 ด้้้้้็็็็็้้้้้็็็็ด้้้้้็็็็็้้้้้็็็็)) | 2014-11-27 11:14

    不稀奇,国内好多IPTV在当发包服务器。

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录