|
链接:https://github.com/ossec/ossec-hids/releases/tag/2.8.1
影响版本:所有版本 OSSEC 0.5 (released 11/2005) - 2.8
细节:
脚本文件host-deny.sh有代码片段如下:
- 111 # Deleting from hosts.deny
- 112 elif [ "x${ACTION}" = "xdelete" ]; then
- 113 lock;
- 114 if [ "X$UNAME" = "XFreeBSD" ]; then
- 115 cat /etc/hosts.allow | grep -v "ALL : ${IP} : deny$"> /tmp/hosts.deny.$
- 116 mv /tmp/hosts.deny.$ /etc/hosts.allow
- 117 else
- 118 cat /etc/hosts.deny | grep -v "ALL:${IP}$"> /tmp/hosts.deny.$
- 119 cat /tmp/hosts.deny.$ > /etc/hosts.deny
- 120 rm /tmp/hosts.deny.$
- 121 fi
复制代码
第115行~118行 可以看到 将tmp目录下的文件直接移动到了/etc/hosts.allow
利用思路:
通过竞争关系,覆盖/etc/hosts.deny,如下:
1) 创建 /tmp/hosts.deny.$$ 文件
2) 等待管理员覆盖这个文件
3) 在该文件移动到 /etc/hosts.deny前 写入数据
通过 Inotify进程实时监控文件完成
利用演示代码:
- # [user@host ~]$ ./ossec2root.pl
- # Creating /tmp/hosts.deny.300 through /tmp/hosts.deny.65536 ...done
- # Monitoring /tmp ...
- #
- # (ssh root@host a few times with an incorrect password)
- # (10 minutes pass???)
- #
- # [user@host ~]$ cat /etc/hosts.deny
- # cat /etc/hosts.deny
- # sshd : ALL : twist id | wall
- #
复制代码
最新版 2.8.1 已经修复 |
|