作者:k0shl 转载请注明出处:https://whereisk0shl.top
一年后重温这个漏洞,突然发现这个JCG漏洞时在某云提交的,好怀念那段时光...
漏洞说明
固件下载地址:
http://www.onlinedown.net/soft/572345.htm
JCG路由固件版本:
JYR-N490R 110.1.2.820
这个漏洞直接在路由web页面里输入即可执行任意命令,没有PoC
漏洞分析
此漏洞是由于JCG路由器中的一个web页面负责处理PING请求和Traceroute请求,用来对IP进行ping操作用于诊断网络链接情况,但由于对于这个命令的检测不严格,导致通过构造特殊的命令,可以执行额外的任意系统命令,下面对此漏洞进行详细分析。
首先,需要获取这个路由器的固件,这里我获取的是型号为JYR-N490R型号的路由器,通过binwalk可以对这个路由器固件结构进行分析。
可以看到,这个固件包含了一个squashfs文件系统,这个系统实际上就是一个类linux系统,再次用binwalk提取这个squashfs文件系统。
这里提示提取错误,看到squashfs-root文件夹里也是空的,但实际上会提取出来一个.squashfs结尾的文件,通过7-zip解压就可以获取到文件内容了。
在web文件夹负责存放路由器的web网页,在这个文件夹内存在一个adminsyscmd_m.htm文件。
分析一下这个文件。
function init()
{
show_div(false, "syscmd_div");
var sysCmd = getUrlParam("sysCmd");
var sysMagic = getUrlParam("sysMagic");
if (sysCmd.length > 0) {
document.getElementById("sysCmd").value = sysCmd;
document.getElementById("sysMagic").value = sysMagic;
document.getElementById("submitUrl").value = "/result.htm";
document.formSysCmd.submit();
}
else {
var isDiag = <% jAspWebsGet("diag-support"); %>;
if (isDiag) {
show_div(true, "syscmd_div");
onCmdChange();
}
else {
window.location.href = "/";
}
}
}
<
首先会初始化整个页面,其中sysCmd会负责执行系统命令,然后会调用onCmdChange函数。
function onCmdChange()
{
if (document.getElementById("radio_ping").checked == true)
document.getElementById("sysCmd").value = "ping";
else if (document.getElementById("radio_tracert").checked == true)
document.getElementById("sysCmd").value = "traceroute";
}
随后会执行系统命令,这个过程没有对命令合法性进行检查,导致通过构造特殊的命令可以执行任意系统命令。
例如
接下来只需要在页面里执行代码就可以了。
您好 请问.squashfs结尾的文件,通过7-zip解压 这个解压使用哪条命令呐?
@971106029 改一下后缀,然后直接解压