(1)隐藏痕迹:如何在登陆宝塔后台后清除操作日志。
做一些修改操作或者误点了终端功能也会记录操作日志:
虽然宝塔提供了清空日志的功能,但只能全部清空,实在太招摇。空日志可能比一两条异常日志更容易惊动管理员。
那如何按条清除一些特定的操作日志呢,宝塔的日志记录在/www/server/panel/data/default.db文件中,用宝塔的文件管理功能把这个文件下载回来。
这是个SQLite数据文件,在本地用数据库管理工具(如navicat)打开,在logs表中可以看到全部的操作日志。
删除你想要删除的指定条目的日志,这里删除第43条用户登录的日志,然后保存。在/www/server/panel/data/目录下上传修改后的default.db文件覆盖(注意备份原文件)。
再看操作日志,发现登陆日志已经被清除了。但是产生了两个新的问题:
(1)修改后的日志序号不连续,从42直接跳到了43。
(2)最后一步上传覆盖原数据文件的操作会被记录下来。
如果要求不严格的话,这样子就可以了,操作还是比较方便的。接下来只要注意退出宝塔直接关闭页面即可,不要点击左侧的退出按钮,否则会记录登出日志。
如果要求严格,想解决上面的两个问题,则需要增加或修改一些步骤如下。
之前的方案是把【数据导出—按原结构重建表—重新导入数据】。但这样操作麻烦,且部分情况无法恢复到与之前的日志序号完全一致。
因为大部分情况我们清除的都是最后几条日志,所以只需要重置自动递增值即可,无需对之前没碰到的日志再进行修改。基于此想法这里分享另外一套解决方案:
![宝塔清理操作日志+后门用户 宝塔清理操作日志+后门用户]()
在选项一栏里修改自动递增值为当前日志序号最大值,然后点击左上角的保存。
![宝塔清理操作日志+后门用户 宝塔清理操作日志+后门用户]()
如果不使用navicat的图形化界面,则可以执行下面的sql语句达成同样的修改效果:
UPDATE "main"."sqlite_sequence" SET seq = 42 WHERE name = 'logs';
这个问题有一个很简单的解决方案,就是如果你有目标服务器的权限,或者宝塔开了终端管理功能,则先用文件管理把功能把default.db传上去,然后登陆终端去覆盖日志即可。
终端内的操作是不会被宝塔的操作日志记录的。当然最后别忘了清除ssh登陆日志和history命令执行日志。
但有时,我们没有拿到服务器权限,同时宝塔也没有开终端功能,这种情况怎么避免产生那最新一条日志呢。
直接用宝塔的计划任务反弹个shell出来就好了,在自己的vps上用nc -lvp监听。
![宝塔清理操作日志+后门用户 宝塔清理操作日志+后门用户]()
(2)通过文件管理上传default.db到另一个目录。
(4)history -c、kill -9 $$。
如果想再完美一点,也可以在终端退出前去清一下计划任务产生的日志,centos系统是在/var/log/cron文件里,不过一般没有这个必要,因为实在是不显眼并且看不出到底执行了什么。
清除日志时,在default.db数据文件中发现还有宝塔的用户表。
md5(md5(md5(password) + '_bt.cn')+salt)
不过都能登陆后台了,说明你是知道原用户的密码的,那直接拿它的来用就好了,这样就不用费力去构造md5了。注意修改id字段不能和原用户相同。
把修改好的default.db覆盖上传后,就可以使用后门用户登陆后台了。因宝塔没有用户管理功能,所以这个后门用户很隐蔽,不过要注意清理操作日志。
总结一下要点:
(1)宝塔数据文件位置:
/www/server/panel/data/default.db
(2)该数据文件中记录着宝塔后台的操作日志和管理用户的信息。
(3)清理日志时注意序号不连续和最新一条日志问题。
(4)宝塔的日志不会记录在终端里的操作,但是系统日志会记录。
END.
喵,点个赞再走吧~
本文始发于微信公众号(小黑的安全笔记):宝塔清理操作日志+后门用户
评论