CasperSecurity

Current Path : /usr/share/apport/package-hooks/
Upload File :
Current File : //usr/share/apport/package-hooks/source_mysql-8.0.py

'''apport package hook for mysql-8.0

(c) 2009 Canonical Ltd.
Author: Mathias Gug <mathias.gug@canonical.com>
'''

from __future__ import print_function, unicode_literals
import os
import os.path

from apport.hookutils import (
    attach_conffiles,
    attach_file,
    attach_mac_events,
    path_to_key,
    read_file
    )

def _add_my_conf_files(report, filename):
    key = 'MySQLConf' + path_to_key(filename)
    report[key] = ""
    for line in read_file(filename).split('\n'):
        try:
            if 'password' in line.split('=')[0]:
                line = "%s = @@APPORTREPLACED@@" % (line.split('=')[0])
            report[key] += line + '\n'
        except IndexError:
            continue

def strip_protected(line):
    '''
    Mitigation for upstream bug that can lead to statements containing
    passwords being written to error log We strip out any lines containing
    terms listed on http://dev.mysql.com/doc/refman/8.0/en/password-logging.html
    (LP: #1574458)
    '''
    protected_terms = [
        'grant',
        'alter user',
        'create user',
        'set password',
        'create server',
        'alter server']
    for term in protected_terms:
        if term in line:
            return '--- Line containing protected term %s stripped from log ' \
                'by apport hook. Ref. Launchpad bug #1574458' % term
    return line

def add_info(report, ui=None):
    '''
    Collect system information relevant to mysql.
    '''
    attach_conffiles(report, 'mysql-server-8.0', conffiles=None)
    key = 'Logs' + path_to_key('/var/log/daemon.log')
    report[key] = ""
    for line in read_file('/var/log/daemon.log').split('\n'):
        try:
            if 'mysqld' in line.split()[4]:
                report[key] += line + '\n'
        except IndexError:
            continue
    if os.path.exists('/var/log/mysql/error.log'):
        key = 'Logs' + path_to_key('/var/log/mysql/error.log')
        report[key] = ""
        for line in read_file('/var/log/mysql/error.log').split('\n'):
            line = strip_protected(line)
            report[key] += line + '\n'
    attach_mac_events(report, '/usr/sbin/mysqld')
    attach_file(report, '/etc/apparmor.d/usr.sbin.mysqld')
    if not os.path.isdir('/etc/mysql'):
        report['EtcMysqlDirListing'] = str(False)
        response = ui.yesno("The /etc/mysql directory is missing, which "
                            "suggests a local configuration problem rather "
                            "than a bug in Ubuntu.  Do you still wish to "
                            "report this bug?")
        if not response: # user cancelled or answered No
            report['UnreportableReason'] = "Missing /etc/mysql directory"
            return False
    else:
        # By default my.cnf is a symlink, and _add_my_conf_files calls apport.hookutils.read_file()
        # doesn't support them, so send the link target separately instead. LP: #1969369
        if os.path.islink('/etc/mysql/my.cnf'):
            my_cnf_link = os.path.realpath('/etc/mysql/my.cnf')
            report['MySQLConf.etc.mysql.my.cnf'] = f'my.cnf links to {my_cnf_link}'
        else:
            _add_my_conf_files(report, '/etc/mysql/my.cnf')
        _add_my_conf_files(report, '/etc/mysql/mysql.cnf')
        for d in ['/etc/mysql/conf.d', '/etc/mysql/mysql.conf.d']:
            if os.path.isdir(d):
                for f in os.listdir(d):
                    _add_my_conf_files(report, os.path.join(d, f))
    try:
        report['MySQLVarLibDirListing'] = str(os.listdir('/var/lib/mysql'))
    except OSError:
        report['MySQLVarLibDirListing'] = str(False)
    return True

if __name__ == '__main__':
    report = {}
    add_info(report)
    for key in report:
        print('%s: %s' % (key, report[key].split('\n', 1)[0]))
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY