前言
书接上文。还没有看过的小伙伴可以关注公众号,翻翻历史文章:有了webshell之后应该怎么拿下宝塔?。
我们对宝塔进行渗透的过程会产生很多入侵痕迹,比如:
- 正常访问目标站点的日志;
- 没找到正确的面板入口地址,产生的面板访问日志;
- 登录失败的日志,会记录显示操作时间和登录账户、来源IP;
- 成功登录的日志,会记录显示操作时间和登录账户、来源IP;
- 其他操作日志,如在面板上传和下载文件、清空面板操作日志(没错,清空操作本身也会产生日志…);
- 其他日志,如修改防火墙、升级软件、修改数据库等等。
这些痕迹都是要在我们完成测试之后要清除的,否则一不小心就被溯源了。尤其是新增的账户的登入登出日志,陌生账号的登录记录很容易引起管理员注意!
清除宝塔面板操作日志基本思路
成功和失败的登录,宝塔都会有记录
基本思路是下载/www/server/panel/data/default.db这个数据库文件,修改后再次上传覆盖源文件
cp /tmp/default.db /www/server/panel/data/
到这里又有一个问题,实测发现如果直接修改数据库,删除某条记录,上传覆盖后会导致面板新的日志序号不连续,管理员可明显看出数据异样
如下图,45号日志的下一条日志序号为47,而不是46,原因是登出前会有登入,原本记录46就是一条成功登入的日志
我们观察DDL可知id是自增关键字,因此即便我们删除了原来的46号记录,但由于此时logs表的id值为46,下一条记录的序号自然是47,导致不连续
解决序号不连续问题
我找到的方法是,导出原logs表数据后,删除原表,再次生成表、导入原数据,使id值为45
(1)在修改完logs表后,先把修改后的数据导出
(2)记住logs表的结构,删除原logs表,新建一个和原表结构一样的logs表。
drop table if exists "logs";CREATE TABLE logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, log TEXT, addtime TEXT, uid INTEGER DEFAULT '1', username TEXT DEFAULT 'system');
(3)然后把刚才导出的数据导入
注意编码使用UTF-8
此时id值为45
(4)再次覆盖上传后,发现新产生的日志序号已经连续
此时浏览器再次打开面板地址,登录状态还在,同时面板记录不会有隐藏账户的登录日志
如何正确退出面板
注意此时不能点击左边的“退出”,否则会再次生成一条登出记录
直接关闭页面,等待登录状态失效即可
清除服务器日志(Linux)
一般管理员在面板看不出异样,就不会去查看日志
但如果想完全擦除自己的痕迹,避免被溯源,就要清除访问日志和登录失败日志,主要是access.log和error.log
日志目录如下:
删除含个人IP的行,其他关键词和文件也可参考
sed -i -e '/[YOUR_IP]/d' /www/wwwlogs/access.log
最后清除命令行记录即可。
# 将目前 shell 中的所有 history 命令消除。对命令历史文件没有影响history -c# 完全清空.bash_history文件,并不是很建议使用echo > ~/.bash_history
往期推荐文章
【点击头像翻看历史文章】有了webshell之后应该怎么拿下宝塔?
本文仅用于学习和交流,由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用者本人负责,文章作者不为此承担任何责任。
文章首发于公众号:安道实验室,随缘更新但篇篇干货。新号求关注、点赞、收藏和转发!!!