Beyond


This is the beyond page that an additional post enumeration and assessment are conducted as the root user after CVE-2020-7247 the target system.

FlaskBB


root@bratarina:/root# systemctl status gunicorn.service
systemctl status gunicorn.service
 gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset:
   Active: active (running) since Fri 2024-08-02 12:49:46 EDT; 7 months 20 days 
 Main PID: 676 (gunicorn)
    Tasks: 5 (limit: 2318)
   CGroup: /system.slice/gunicorn.service
           ├─ 676 /opt/flaskbb/.venv/bin/python2 /opt/flaskbb/.venv/bin/gunicorn
           ├─1247 /opt/flaskbb/.venv/bin/python2 /opt/flaskbb/.venv/bin/gunicorn
           ├─1248 /opt/flaskbb/.venv/bin/python2 /opt/flaskbb/.venv/bin/gunicorn
           ├─1259 /opt/flaskbb/.venv/bin/python2 /opt/flaskbb/.venv/bin/gunicorn
           └─1260 /opt/flaskbb/.venv/bin/python2 /opt/flaskbb/.venv/bin/gunicorn

/opt/flaskbb

root@bratarina:/root# ll /opt/flaskbb
total 168K
4.0K drwxr-xr-x 14 root root 4.0K Aug  2  2024 .
4.0K -rw-r--r--  1 root root 3.4K Aug  2  2024 flaskbb.cfg
4.0K drwxr-xr-x 17 root root 4.0K Jul  6  2020 flaskbb
4.0K -rwxr-xr-x  1 root root  275 Jul  6  2020 run-gunicorn.sh
4.0K drwxr-xr-x  4 root root 4.0K Jul  6  2020 ..
4.0K -rw-r--r--  1 root root  400 Jul  6  2020 wsgi.pyc
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 work
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 migrations
4.0K drwxr-xr-x  3 root root 4.0K Jul  6  2020 whoosh_index
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 instance
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 logs
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 FlaskBB.egg-info
4.0K drwxr-xr-x  6 root root 4.0K Jul  6  2020 .venv
4.0K drwxr-xr-x  8 root root 4.0K Jul  6  2020 .git
4.0K -rw-r--r--  1 root root  764 Jul  6  2020 tox.ini
4.0K -rw-r--r--  1 root root   16 Jul  6  2020 requirements-cov.txt
4.0K -rw-r--r--  1 root root  112 Jul  6  2020 requirements-dev.txt
4.0K -rw-r--r--  1 root root  128 Jul  6  2020 requirements-test.txt
4.0K -rw-r--r--  1 root root   78 Jul  6  2020 requirements-travis.txt
4.0K -rw-r--r--  1 root root  968 Jul  6  2020 requirements.txt
4.0K -rw-r--r--  1 root root   26 Jul  6  2020 setup.cfg
4.0K -rw-r--r--  1 root root 2.6K Jul  6  2020 setup.py
4.0K drwxr-xr-x  5 root root 4.0K Jul  6  2020 tests
4.0K -rw-r--r--  1 root root  772 Jul  6  2020 .coveragerc
4.0K -rw-r--r--  1 root root 1.7K Jul  6  2020 .gitignore
4.0K -rw-r--r--  1 root root  447 Jul  6  2020 .landscape.yml
4.0K -rw-r--r--  1 root root  634 Jul  6  2020 .travis.yml
4.0K -rw-r--r--  1 root root  249 Jul  6  2020 AUTHORS
4.0K -rw-r--r--  1 root root 2.6K Jul  6  2020 CHANGES
4.0K -rw-r--r--  1 root root 1.6K Jul  6  2020 LICENSE
4.0K -rw-r--r--  1 root root 1.8K Jul  6  2020 README.md
4.0K drwxr-xr-x  6 root root 4.0K Jul  6  2020 docs
4.0K -rw-r--r--  1 root root  339 Jul  6  2020 wsgi.py
4.0K -rw-r--r--  1 root root  237 Jul  6  2020 .bumpversion.cfg
4.0K -rw-r--r--  1 root root  325 Jul  6  2020 .editorconfig
   0 -rw-r--r--  1 root root    0 Jul  6  2020 .gitmodules
4.0K drwxr-xr-x  2 root root 4.0K Jul  6  2020 .tx
4.0K -rw-r--r--  1 root root 1.5K Jul  6  2020 CONTRIBUTING.md
4.0K -rw-r--r--  1 root root  477 Jul  6  2020 MANIFEST.in
4.0K -rw-r--r--  1 root root 1.7K Jul  6  2020 Makefile
4.0K -rw-r--r--  1 root root 1.4K Jul  6  2020 NOTICE
4.0K -rw-r--r--  1 root root  198 Jul  6  2020 babel.cfg
4.0K -rw-r--r--  1 root root  553 Jul  6  2020 celery_worker.py

flaskbb.cfg

root@bratarina:/opt/flaskbb# cat flaskbb.cfg
import os
import datetime
from flaskbb.configs.default import DefaultConfig
DEBUG = False
TESTING = False
SERVER_NAME = ""
PREFERRED_URL_SCHEME = "http"
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SQLALCHEMY_DATABASE_URI = "postgresql://flaskbb:5d10fe374a597c473843ff711164e32a@127.0.0.1:5432/flaskbb"
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = False
SECRET_KEY = "62d378ca0bfdb622fa0945173ccdf7e217edc28c40f89329"
WTF_CSRF_ENABLED = True
WTF_CSRF_SECRET_KEY = "c585bbff23597c4b13d2228d32244108553b1a3c963c5283"
LOGIN_VIEW = "auth.login"
REAUTH_VIEW = "auth.reauth"
LOGIN_MESSAGE_CATEGORY = "info"
REFRESH_MESSAGE_CATEGORY = "info"
REMEMBER_COOKIE_NAME = "remember_token"
REMEMBER_COOKIE_DURATION = datetime.timedelta(days=365)
REMEMBER_COOKIE_DOMAIN = None
REMEMBER_COOKIE_SECURE = False
REMEMBER_COOKIE_HTTPONLY = True
WHOOSHEE_DIR = os.path.join(DefaultConfig.basedir, "whoosh_index", DefaultConfig.py_version)
WHOOSHEE_WRITER_TIMEOUT = 2
WHOOSHEE_MIN_STRING_LEN = 3
REDIS_ENABLED = False
REDIS_URL = ""
REDIS_DATABASE = 0
CELERY_BROKER_URL = ""
CELERY_RESULT_BACKEND = ""
RATELIMIT_STORAGE_URL = "memory://"
CACHE_TYPE = "simple"
CACHE_DEFAULT_TIMEOUT = 60
MAIL_SERVER = ""
MAIL_PORT = 25
MAIL_USE_SSL = False
MAIL_USE_TLS = False
MAIL_USERNAME = ""
MAIL_PASSWORD = ""
MAIL_DEFAULT_SENDER = ("FlaskBB Mailer", "noreply@yourdomain")
ADMINS = ["admin@yourdomain"]
LOG_CONF_FILE = None
LOG_PATH = os.path.join(DefaultConfig.basedir, 'logs')
LOG_DEFAULT_CONF = {
    'version': 1,
    'disable_existing_loggers': False,
 
    'formatters': {
        'standard': {
            'format': '%(asctime)s %(levelname)-7s %(name)-25s %(message)s'
        },
        'advanced': {
            'format': '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'
        }
    },
 
    'handlers': {
        'console': {
            'level': 'NOTSET',
            'formatter': 'standard',
            'class': 'logging.StreamHandler',
        },
        'flaskbb': {
            'level': 'DEBUG',
            'formatter': 'standard',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_PATH, 'flaskbb.log'),
            'mode': 'a',
            'maxBytes': 10485760,  # 10MB
            'backupCount': 5,
        },
 
        'infolog': {
            'level': 'INFO',
            'formatter': 'standard',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_PATH, 'info.log'),
            'mode': 'a',
            'maxBytes': 10485760,  # 10MB
            'backupCount': 5,
        },
        'errorlog': {
            'level': 'ERROR',
            'formatter': 'standard',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_PATH, 'error.log'),
            'mode': 'a',
            'maxBytes': 10485760,  # 10MB
            'backupCount': 5,
        }
    },
 
    'loggers': {
        'flask.app': {
            'handlers': ['infolog', 'errorlog'],
            'level': 'INFO',
            'propagate': True
        },
        'flaskbb': {
            'handlers': ['console', 'flaskbb'],
            'level': 'WARNING',
            'propagate': True
        },
    }
}
USE_DEFAULT_LOGGING = True
SEND_LOGS = False
FORUM_URL_PREFIX = ""
USER_URL_PREFIX = "/user"
MESSAGE_URL_PREFIX = "/message"
AUTH_URL_PREFIX = "/auth"
ADMIN_URL_PREFIX = "/admin"
REMOVE_DEAD_PLUGINS = False

nginx


root@bratarina:/root# cat /etc/nginx/sites-enabled/flaskbb
server {
    listen 80 default_server;
 
    access_log /var/log/nginx/access.forums.log;
    error_log /var/log/nginx/error.forums.log;
 
    location / {
        try_files $uri @flaskbb;
    }
 
    # Static files
    location /static {
       alias /opt/flaskbb/flaskbb/static/;
    }
 
    location ~ ^/_themes/([^/]+)/(.*)$ {
        alias /opt/flaskbb/flaskbb//themes/$1/static/$2;
    }
 
    # robots.txt
    location /robots.txt {
        alias /opt/flaskbb/flaskbb/static/robots.txt;
    }
 
    location @flaskbb {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_buffering off;
 
        proxy_pass http://127.0.0.1:8000;
    }
}
 
root@bratarina:/root# catcat /etc/nginx/sites-available/default | grep -v '^#'
 
server {
	listen 80 default_server;
	listen [::]:80 default_server;
 
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;
 
	server_name _;
 
	location / {
		try_files $uri $uri/ =404;
	}
}
 
 
root@bratarina:/root# cat /etc/nginx/sites-available/flaskbb | grep -v '^#'
server {
    listen 80 default_server;
 
    access_log /var/log/nginx/access.forums.log;
    error_log /var/log/nginx/error.forums.log;
 
    location / {
        try_files $uri @flaskbb;
    }
 
    # Static files
    location /static {
       alias /opt/flaskbb/flaskbb/static/;
    }
 
    location ~ ^/_themes/([^/]+)/(.*)$ {
        alias /opt/flaskbb/flaskbb//themes/$1/static/$2;
    }
 
    # robots.txt
    location /robots.txt {
        alias /opt/flaskbb/flaskbb/static/robots.txt;
    }
 
    location @flaskbb {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_buffering off;
 
        proxy_pass http://127.0.0.1:8000;
    }
}