如何生成一份PbootCMS数据库清理SQL脚本?
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告

针对PbootCMS数据库被入侵后的清理需求,直接执行删除操作存在极高风险。以下提供一份基于Python的自动化SQL脚本生成工具。该工具不会直接连接数据库执行删除,而是根据你提供的恶意特征(如黑链域名、恶意JS标签),生成经过人工确认后可执行的SQL清理语句。
这种方式能确保你在执行前审查每一条SQL命令,避免误删正常业务数据。
—————————————————————-
# 此脚本仅使用Python标准库,无需额外依赖
import argparse
import sys
from datetime import datetime
def generate_sql_statements(db_prefix, malicious_domains, malicious_tags, output_file):
“””
生成用于清理PbootCMS数据库的SQL语句
:param db_prefix: 数据库表前缀,默认为 ay_
:param malicious_domains: 恶意域名列表
:param malicious_tags: 恶意HTML/JS标签列表
:param output_file: 输出SQL文件的路径
“””
# 定义需要检查的内容表
content_tables = [
f”{db_prefix}content”, # 文章内容
f”{db_prefix}about”, # 单页内容
f”{db_prefix}config” # 系统配置(重点检查footer等字段)
]
sql_commands = []
# 添加头部注释和事务开始
sql_commands.append(“– PbootCMS 数据库清理脚本”)
sql_commands.append(f”– 生成时间: {datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)}”)
sql_commands.append(“– 警告: 请在执行前备份数据库,并仔细审查以下SQL语句”)
sql_commands.append(“START TRANSACTION;”)
sql_commands.append(“”)
# 1. 清理包含恶意域名的内容
if malicious_domains:
sql_commands.append(“– === 步骤 1: 清理包含恶意域名的内容 ===”)
for domain in malicious_domains:
# 转义单引号以防SQL注入错误
safe_domain = domain.replace(“‘”, “””)
for table in content_tables:
# 假设内容存储在 ‘content’ 或 ‘value’ 字段中,需根据实际表结构调整
# 这里以常见的 content 字段为例,如果是 config 表可能是 value 字段
field_name = “content” if table != f”{db_prefix}config” else “value”
# 生成 SELECT 语句用于预览
sql_commands.append(f”– 预览受影响的记录 (表: {table}):”)
sql_commands.append(f”SELECT * FROM `{table}` WHERE `{field_name}` LIKE ‘%{safe_domain}%’;”)
# 生成 UPDATE 语句用于清理 (替换为空或特定提示)
# 注意:直接DELETE可能误删整篇文章,建议先UPDATE清洗
sql_commands.append(f”– 清理恶意域名 (表: {table}):”)
sql_commands.append(f”UPDATE `{table}` SET `{field_name}` = REPLACE(`{field_name}`, ‘{safe_domain}’, ”) WHERE `{field_name}` LIKE ‘%{safe_domain}%’;”)
sql_commands.append(“”)
# 2. 清理包含恶意标签的内容
if malicious_tags:
sql_commands.append(“– === 步骤 2: 清理包含恶意HTML/JS标签的内容 ===”)
for tag in malicious_tags:
safe_tag = tag.replace(“‘”, “””)
for table in content_tables:
field_name = “content” if table != f”{db_prefix}config” else “value”
sql_commands.append(f”– 预览受影响的记录 (表: {table}, 标签: {safe_tag}):”)
sql_commands.append(f”SELECT * FROM `{table}` WHERE `{field_name}` LIKE ‘%{safe_tag}%’;”)
sql_commands.append(f”– 清除恶意标签 (表: {table}):”)
sql_commands.append(f”UPDATE `{table}` SET `{field_name}` = REPLACE(`{field_name}`, ‘{safe_tag}’, ”) WHERE `{field_name}` LIKE ‘%{safe_tag}%’;”)
sql_commands.append(“”)
# 3. 清理陌生的管理员账号 (需谨慎,建议手动核对ID)
sql_commands.append(“– === 步骤 3: 清理陌生管理员账号 (请手动核对ID后取消注释执行) ===”)
sql_commands.append(f”– SELECT * FROM `{db_prefix}admin` WHERE id > 1; — 检查除默认admin外的其他账号”)
sql_commands.append(f”– DELETE FROM `{db_prefix}admin` WHERE id IN (INSERT_IDS_HERE); — 删除确认恶意的账号ID”)
sql_commands.append(“”)
# 4. 重置默认管理员密码 (可选,如果怀疑admin密码泄露)
sql_commands.append(“– === 步骤 4: 重置默认管理员密码 (可选) ===”)
sql_commands.append(“– 密码将重置为: 123456 (MD5: e10adc3949ba59abbe56e057f20f883e)”)
sql_commands.append(f”– UPDATE `{db_prefix}admin` SET password = ‘e10adc3949ba59abbe56e057f20f883e’ WHERE username = ‘admin’;”)
sql_commands.append(“”)
# 提交事务
sql_commands.append(“COMMIT;”)
sql_commands.append(“– 脚本结束”)
# 写入文件
try:
with open(output_file, ‘w’, encoding=’utf-8′) as f:
f.write(‘\n’.join(sql_commands))
print(f”[成功] SQL清理脚本已生成: {output_file}”)
print(“[提示] 请使用文本编辑器打开该文件,审查SELECT语句确认无误后,再执行UPDATE/DELETE语句。”)
except Exception as e:
print(f”[错误] 无法写入文件: {e}”)
sys.exit(1)
def main():
parser = argparse.ArgumentParser(description=”生成PbootCMS数据库清理SQL脚本”)
parser.add_argument(“–prefix”, default=”ay_”, help=”数据库表前缀 (默认: ay_)”)
parser.add_argument(“–domains”, nargs=”+”, help=”恶意域名列表,例如: bad-site.com another-bad.com”)
parser.add_argument(“–tags”, nargs=”+”, help=”恶意HTML/JS标签列表,例如: ‘<script>’ ‘<iframe>'”)
parser.add_argument(“–output”, default=”clean_pbootcms.sql”, help=”输出SQL文件名 (默认: clean_pbootcms.sql)”)
args = parser.parse_args()
if not args.domains and not args.tags:
print(“[错误] 请至少提供 –domains 或 –tags 参数之一”)
parser.print_help()
sys.exit(1)
generate_sql_statements(args.prefix, args.domains or [], args.tags or [], args.output)
if __name__ == “__main__”:
main()
—————————————————————-
代码功能与使用说明
安全生成机制:
脚本不直接连接数据库,而是生成 .sql 文件。
生成的 SQL 语句包含 START TRANSACTION 和 COMMIT,支持事务回滚(如果在手动执行时发现错误)。
对于删除操作,脚本默认生成 SELECT 预览语句和 UPDATE 清洗语句,而非直接 DELETE,防止误删整篇文章。
参数化配置:
–prefix: 指定你的 PbootCMS表前缀(默认为 ay_,如果你修改过前缀请在此指定)。
–domains: 输入发现的黑链域名,多个域名用空格分隔。
–tags: 输入发现的恶意 HTML/JS 标签,如 <script>、<iframe> 等。
–output: 指定生成的 SQL 文件名。
使用示例:
假设你发现网站被插入了指向 bad-gambling.com 的链接,以及 <script src=evil.js> 标签,且你的表前缀是 pb_,运行命令如下:
bash
python generate_clean_sql.py –prefix pb_ –domains bad-gambling.com –tags “<script>” –output fix_db.sql
执行流程建议:
第一步:运行上述 Python 脚本生成 fix_db.sql。
第二步:用文本编辑器打开 fix_db.sql,查看所有的 SELECT 语句。在数据库管理工具(如 phpMyAdmin)中执行这些 SELECT 语句,确认返回的结果确实是恶意内容。
第三步:确认无误后,在数据库中执行对应的 UPDATE 语句进行清洗。
第四步:检查 ay_admin 表,手动删除陌生管理员账号,并重置 admin 密码。
第五步:清空 PbootCMS 的运行时缓存(删除 /runtime 目录下的所有文件)。
注意事项:
该脚本主要针对内容表(content, about, config)中的文本字段进行清洗。
如果恶意代码是通过 PHP 文件植入的(WebShell),此 SQL 脚本无效,需结合文件扫描工具清理。
执行任何数据库写操作前,务必完整备份数据库。
NOTICE:【咨询风格酷】客服微信:wwwxmamcn
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服!
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。