由一漏洞直接getshell(已经写好poc),一键取shell。获取的webshell均为root。可导致江南科友堡垒机核心源码泄露(现已获取该核心源码)。如果其他厂商要OEM该堡垒机可参照此代码,所以本身做为安全厂商,请你穿好裤子再出来保护他人
接着上一旦:
http://**.**.**.**/bugs/wooyun-2014-076864
漏洞涉及客户如下:
国内各大银行:中国银行、民生银行、广东发展银行、平安银行、深圳发展银行、浦发银行、渤海银行总行及各分行、中国工商银行、中国农业银行、中国建设银行、交通银行、招商银行、中信银行、兴业银行、华夏银行、中国邮政储蓄银行总行或部分分行
中国银联:总公司及北京、广州、深圳、南京、福州、长沙、武汉、济南、青岛、沈阳、郑州、海口、天津、香港、厦门等分公司
银联数据:全国卡系统业务托管商业银行
外资银行:渣打银行、东亚银行:全国境内各个分行
外资金融机构:韩亚银行、花旗银行、通用电气、星展银行、美国第一资讯(FDC)
地方商业银行及农村信用社:40余家商业银行及农村信用社
社会保障与公共交通系统:湖北、黑龙江、广东、北京等社保卡安全系统,上海市公交一卡通安全系统,杭州市市民卡系统,长春一汽企业IC卡加密系统,宁波市民卡系统,郑州交通一卡通系统,山东一卡通系统
涉及的都是重要部门,银行及金融、证券、能源等单位。
看漏洞吧!
0x01 漏洞分析
在manager/config_SSO.php当中
此页面未做任何权限判断,导致任意用户可访问。
如图:
具体产生漏洞代码如下(前提是你已经获取该源码):
我将整个产生问题的代码都贴出来了。。
分析如下:
WriteTo_Conf($_POST['type_mode'],$Template);
这里post的包可控,看看$Template变量
$Template = '/usr/local/keyou/Config/sso/'.$os_name."/T**.**.**.**f";
继续跟踪$os_name
所以只要你POST一个os_name即可可控。
思考问题1:
这样能写文件了,但是能直接写php吗? 能直接写到该堡垒机的控制端里面去吗?
不行,文件名已经限制死了,文件名为:T**.**.**.**f
所以怎么写shell???
发散思维。。
看下面的代码。
这里有个exec函数,其中$os_name可控,(虽然前面写文件会报错),但不影响它执行。。
所以这里直接一个cp 或者 mv 命令即可将我们的shell写到 堡垒机的控制端里面了。
思路如下:
1、控制好type_mode 变量以及 os_name变量, os_name这个值其实几个都是固定的,我们选取其中一个即可,我取(HP_11),触发条件为config_flag变量存在的情况。
2、通过前面第一步将我们的恶意代码写入到/usr/local/keyou/Config/sso/HP_11/T**.**.**.**f文件当中了,然后借助后面的命令执行将我们的恶意代码cp 或者 mv到控制端即可。(其中/usr/local/keyou/Config/sso/ 路径都是源码里面写死了的,顾可得知,堡垒机控制端目录也是固定的)。
所以结合上面思路,写个poc如下。
即可做到一键控制整个堡垒机了,也就可以拿到堡垒机核心源码了。 权限均为:root..
以下poc仅供测试用,非法攻击后果自负。。
给个截图:
所以自身是堡垒机,请穿好你的裤子