MySQL手机号和身份证敏感信息扫描

Z先森 2022-01-19 PM 840℃ 0条

最近需要排查数据库敏感信息,网上找了一些脚本和工具效果都不好,自己瞎写了一个,记录一下:

#!/bin/bash
# 忽略系统表
ignore_db="sys|information_schema|performance_schema|mysql"

# 每张表取前N条数据
limit="50"

# ex: search_info 192.168.1.1 3306 xxxx
function search_info(){
        host="$1"
        port="$2"
        pw="$3"
        # 获取所有库名
        mysql -h$host -uroot -p$pw -P$port -N -s -e 'show databases' |egrep -v "$ignore_db"|while read db
        do
            # 获取表名
            mysql -h$host -uroot -p$pw -P$port -N -s $db -e 'show tables'|while read table
                do
                        # 获取每张表前N条数据,并判断是否为手机号|身份证
                        mysql -h$host -uroot -p$pw -P$port -N -s $db -e "select * from $table limit $limit" |egrep '(1(3[0-9]|4[5|7]|5[0-9]|66|[7|8|9][0-9])[0-9]{8})|([0-9]{6}[19|20][0-9]{2}(0[0-9]|10|11|12)(0|1|2|3)[0-9][0-9]{3}[0-9Xx]{1})' -w && echo "${ip}.${db}.$table" >>bad.out || echo "${ip}.${db}.$table" OK
                done
        done
}

cat config.txt|while read ip port pw
do
        echo start
        search_info $ip $port $pw
done

config.txt格式:

192.168.1.1 3306 password1
192.168.1.2 3306 password2
标签: none

如无特殊说明,本博所有文章均为博主原创。

评论啦~