前言

书接上文。还没有看过的小伙伴可以关注公众号,翻翻历史文章:有了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之后应该怎么拿下宝塔?


本文仅用于学习和交流,由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用者本人负责,文章作者不为此承担任何责任。

文章首发于公众号:安道实验室,随缘更新但篇篇干货。新号求关注、点赞、收藏和转发!!!