路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧

IoT 10个月前 admin
307 0 0

#01
「 基本介绍 」

未授权访问漏洞是指攻击者利用系统或应用程序中未正确实施访问控制机制的安全弱点,以获取未经授权的数据或功能权限。这种漏洞可以被黑客利用来窃取敏感信息、篡改数据或执行未经授权的操作。
通常,未授权访问漏洞的原因包括:
  1. 系统或应用程序的访问控制机制不严格,例如,使用默认的用户名/密码进行登录或者没有限制用户对数据和资源的访问权限。
  2. 应用程序在用户提交的请求时未能正确地检查身份验证令牌或会话ID等标识符,并相信它们提供的内容是真实的。
  3. 应用程序缺乏安全性设置或不足的加密机制。

#02
「 常见场景 」

  • strstr(str1,str2)函数 — 判断字符串str2是否是str1的字串。

(1) 判断特定字符串后缀

判断是否存在.jpg .gif .png字段,登录界面需要加载前端文件,访问某些静态文件不需要认证。
strstr(data,".jpg")
strstr(data,".gif")
strstr(data,".png")

(2) 字符串截断%00

判断某些网站需要认证才能访问的html页面。
#无需认证网页
update-setting.htm
....
BRS_top.html
BRS_full_tcn.htm

#
需认证网页
index.htm
ping.htm
Qos.htm

#
判断方式
char *url = "index.htm%00update-setting.htm";
char *list[] = {"update-setting.htm","BRS_top.html","BRS_full_tcn.html",NULL};

for (int i = 0;data[i],++i){
 if(strstr(data[i],url) != NULL){
  printf("This url in this data list!");
 }
}
  • strcmp、strlen 判断字符串相等与计算字符串长度。
char *username = "admin";
char *password = "admin";
int length = strlen(password);
if(!strncmp(password,configPasswd,length)){
    ... #登录之后
}
strlen遇到00截断,如果输入x00,比较前0位(一位都不比较,strcmp返回0)

(3) 逻辑问题

  • 默认配置为空
strmcmp(默认值,前端传入) 空=空

(4) 接口认证

  • api接口没有认证
(1) 直接下载配置文件
(2) API接口(设备重启、恢复出厂设置……)

(5) 其他

  • 多漏洞利用绕过登录

#03
「 历史漏洞 」

CVE-2021-32030

华硕(ASUS)披露了GT-AC2900路由器存在身份验证绕过漏洞。在未授权的情况下,攻击者可利用该漏洞访问管理员界面。

漏洞分析

httpd_handle_request 函数
int __fastcall sub_59588(const char *a1)
{
  const char *v2; // r0
  const char *v3; // r0
  int result; // r0

  v2 = nvram_get_1("ifttt_token");
  if ( !strcmp(a1, v2) )
  {
    if ( isFileExist("/tmp/IFTTT_ALEXA") > 0 )
      Debug2File("/tmp/IFTTT_ALEXA.log""[%s:(%d)][HTTPD] IFTTT/ALEXA long token success.n""check_ifttt_token"761);
    result = 1;
  }
  else
  {
    if ( isFileExist("/tmp/IFTTT_ALEXA") > 0 )
      Debug2File("/tmp/IFTTT_ALEXA.log""[%s:(%d)][HTTPD] IFTTT/ALEXA long token fail.n""check_ifttt_token"767);
    if ( isFileExist("/tmp/IFTTT_ALEXA") > 0 )
      Debug2File(
        "/tmp/IFTTT_ALEXA.log",
        "[%s:(%d)][HTTPD] IFTTT/ALEXA long token is %s.n",
        "check_ifttt_token",
        768,
        a1);
    if ( isFileExist("/tmp/IFTTT_ALEXA") > 0 )
    {
      v3 = nvram_get_1("ifttt_token");
      Debug2File("/tmp/IFTTT_ALEXA.log""[%s:(%d)][HTTPD] httpd long token is %s.n""check_ifttt_token"769, v3);
    }
    result = 0;
  }
  return result;
}
在设备默认配置下,IFTTT功能并没有打开,默认ifttt_token值为空,此时如果攻击者传入的asus_token值也是空值,strcmp比较函数返回值为0,绕过后续检查,实现身份验证绕过。

#04
「 实际挖掘案例 」

4.1 某运营商光猫设备存在未授权访问漏洞

路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
该设备所有功能接口均无认证
  • 设备无线密码
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
  • 设备信息
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
  • 重启设备
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧

4.2 某款无线AP设备存在逻辑绕过漏洞

伪造认证标志位
authCode=1&userName=admin
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
成功登录设备后台。
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧

4.3 某国产路由器绕过登录获取设备SHELL

未认证命令注入获取配置文件->登录设备后台->绕过设备登录限制
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
通过URL传递攻击参数(命令注入)。
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧
获取设备权限。
路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧

#05
「 挖掘技巧 」

  • 登录模块功能 – 查看是否可伪造、可绕过
  • 网页静态文件 – 查看是否单独处理
  • 设备Web功能函数 – 查看未授权访问接口
  • 中间件漏洞 – boa、lighttpd、uhttpd是否采用开源版本
  • 敏感函数 – strstr、strncmp…


#06
「 总结 」

本次漏洞挖掘系列主要从逻辑漏洞入手,现如今诸多设备厂商加强了对二进制漏洞的安全检查,传统的内存破坏漏洞也原来越少,这就需要安全研究人员从不同的攻击面去分析,去挖掘除了设备存在的逻辑漏洞。

原文始发于微信公众号(山石网科安全技术研究院):路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧

版权声明:admin 发表于 2023年7月6日 上午10:39。
转载请注明:路由器漏洞挖掘系列之未授权访问漏洞及常见绕过技巧 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...