HanDs
管理员

[7月漏洞公开] 某防火墙无需登录命令执行多处 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

博华网龙防火墙前台命令执行

其实防火墙跟一体机的代码是不一样的,看了别人漏洞有个frame.php,试了一下 防火墙没有这页面

详细说明:

先来看看验证登陆的函数:





code 区域
function checkLogin(){
if (!session_is_registered('USER_NAME')) {
//header("location:/index.php");

pJsHead();
print "top.window.location = \"/index.php?key=loginAgain\"";
pJsButtom();
}
//$file_path = $_SERVER['SCRIPT_NAME'];
//$checkLogin_msg = new Message();
//if((strstr(getCurPermission(), 'L')) && (!strstr($file_path, "/log")))
//{
// if(!strstr($file_path, "/user/passwdSet.php"))
// {
// pJsHead();
// print "alert('".$checkLogin_msg->getMsgByCode(I18N_MODULE_MASK+0x0005).$file_path."');";
//print "alert('not permission');";
// print "history.go(-1);";
// pJsButtom();
// }
//}
//if((!strstr(getCurPermission(), 'L')) && (strstr($file_path, "/log")))
//{
// pJsHead();
// print "alert('".$checkLogin_msg->getMsgByCode(I18N_MODULE_MASK+0x0005)."');";
//print "alert('not permission');";
// print "history.go(-1);";
// pJsButtom();
//}

return TRUE;
}







直接return 没有exit



在看看现实文件中怎么用的

code 区域
<?php
header('content-type:text/html;charset=utf-8');

include_once ("pub/pub.inc");
include_once ("pub/ConfigDocument.inc");
include_once ("i18n/Message.inc");
include_once ("pub/shcall.inc");
include_once ("pub/session.inc");
include_once ("pub/user.inc");
check_session();
checkLogin();
checkApproachUrl();







return一下。。完全没影响。。。。无论return的是什么。。无所谓





所以没有其他特殊认证的文件,就可以未登录访问了







第1: cmd.php 多处



code 区域
else if($_GET['action'] == "arping")
{
$host = $_GET['host'];
$count = $_GET['count'];
$if = $_GET['ifName'];
$src = $_GET['src'];
system("/usr/bin/arping -I $if -c $count -s $src $host >temp.htm");

if($username)
pSyslog("arping $host $count次", 0);
}
else
{
system("echo \"\" >temp.htm");





GET中多个变量拼接入了system命令



第2:

ip_status.php

code 区域
$subnet = $_GET['subnet'];
$filename = "/proc/net/ip_traffic/".str_replace("/", "-", $subnet);
$file = "/tmp/ipstatus";
system("cp $filename $file");





filename变量是从外部GET获取的 命令执行



第3:



ip_status.php

code 区域
if($_GET['action'] == "sort")
{
if($_GET['order'] == "desc")
$cmd = "sort $file -k ".$_GET['key']." -g -b -r -o /tmp/ipstatus_sort";
else
$cmd = "sort $file -k ".$_GET['key']." -g -b -o /tmp/ipstatus_sort";
system($cmd);
$file = "/tmp/ipstatus_sort";
}



外部GET的key传入了命令



第4:



function getTotal($subnet)

{

$filename = "/proc/net/ip_traffic/".str_replace("/", "-", $subnet);

exec("wc -l $filename", $output, $result);

$opt = explode("/", $output[0]);

return $opt[0];

}



$subnet变量外部可控,导致同样带入了exec,命令执行





漏洞证明:

直接把ifconfig写入了1.txt

这东西网上很多,用oshadan搜到了很多,从第一个开始按顺序打了十几个



**.**.**.**//diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

https://**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

**.**.**.**/diagnostics/1.txt

修复方案:

escape


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
防火墙 无需 登录 命令 执行
#1楼
发帖时间:2016-7-11   |   查看数:0   |   回复数:0
游客组
快速回复