获取 WebShell 和反弹 Bash
旧文整理:WebShell(网络后门)通过 Web 服务器获取控制权限;反弹 Bash 通过主动连接攻击者的主机来建立一个交互式的 Shell 会话。
反弹 BASH
与 SSH 的区别在于,可以让目标主机主动连接黑客的主机,从而绕过防火墙的限制。
实现方式
最常用的反弹 Bash 方式是利用 nc(netcat)工具,黑客在自己电脑上监听端口
-l
: 监听模式。-v
: 显示详细的信息。-n
: 不进行域名解析。-p < 端口 >
: 监听的端口号。
在目标主机执行
-i
: 交互式 shell&>
: 将标准输出和错误进行重定向/dev/tcp/ip/port
: bash 建立 socket 的一种特殊写法,除此之外还有 udp<&1
: 把标准输入重定向到标准输出,其他写法0>&1
什么?你要问我都能连接到靶机执行指令了还要什么 nc?哼哼,黑客通常是使用各种漏洞连接到靶机,使用 nc 只是为了更方便的执行系统指令。
比如利用数据库漏洞执行 nc 反弹 bash
Web Shell
利用 Web 服务器漏洞执行 shell 指令,下面演示利用 PHP + MariaDB 写入一个后门文件。
利用 secure_file_priv
主要用于限制数据库对文件系统的访问。它规定 MySQL 服务器可以进行文件导入导出操作的目录。
- 空字符串(’’): 不限制导入导出目录,MySQL 可以在任意目录进行文件操作。
- 指定目录: 只能在指定的目录进行导入导出操作。例如:secure_file_priv=’/var/lib/mysql’
- NULL: 禁止所有的文件导入导出操作,包括 LOAD DATA INFILE、SELECT … INTO OUTFILE 和 LOAD_FILE () 函数。
然后查看用户是否具有 IO 权限
执行代码将后门输出到服务器
接下来就可以利用这个文件为所欲为啦
利用 general_log
如果上面的 secure_file_priv
规定了输出目录或者是 NULL,还可以使用 general_log
的方法来写 shell,它记录所有基础日志,默认关闭状态。
- 模糊查找关于 general 的信息
- 开启 general_log,设置路径
- 写入数据
如果数据库用户权限被严格管控了 IO,那么将无法实现上述步骤,比如在 Linux 里面,httpd 的用户是 http,mariadb 的用户是 mysql,默认情况下,mysql 无法写入,httpd 无法读取
总结
后端只要满足三个条件就可以反弹 shell
- 支持 tcp 链接
- 支持 IO 重定向
- 可以调用系统命令
参考
获取 WebShell 和反弹 Bash
https://artibix.github.io/reverse-shell/