1.信息收集
端口扫描:
开放了HTTP和3128端口的Squid代理,其中22端口被过滤了。
看到一个登录页面,先尝试一下简单的SQL注入。
注入没有成功,靶机过滤了简单的sql注入,比如过滤掉“or”。尝试把or改为oorr。
成功!提示ssh登录,提供了用户名和密码。
用户名:john
密码:hereisjohn
2.Squid代理绑定SSH
现在有了SSH登录凭据,但是22端口是过滤掉的。然而squid服务是开启的,可以利用这个代理绑定本地端口来获取SSH回话。
proxytunnel -p 192.168.56.101:3128 -d 127.0.0.1:22 -a 1234
代理设置成功后,连接SSH:
管理员似乎很聪明,编辑了这个用户 .bashrc 文件以在连接时终止会话。可以使用 SSH 客户端的 -t参数连接:
接入成功!
3.获取系统用户账密
首先查看login.php,发现了mysql的登录凭据:
连接数据库:
查看数据库内容:
获取到系统登录凭据。
4.提权
尝试切换用户,但是由于管理员的设置,没有办法切换,也只能利用ssh加-t参数的连接的方式。
且当前的john用户没有sudo权限。
用ssh连接到sara用户,sara用户的sudo权限:
可以看到/accounts/后面的*
。*
是一个通配符,因此后面的任何内容都可以运行。这意味着像这样的命令:sudo cat /accounts/../../etc/shadow
是可以执行的,因为通配符允许我们进行一种形式的目录遍历。
因此用以下命令可以查看root目录下的flag。
sudo cat /accounts/../../root/flag.txt
flag里提供了root的密码:theskytower
5.总结
这个靶机的新知识点:
- 用Squid代理绕过过滤端口;
- 目录遍历读取文件;
- 登录框的简单SQL注入和绕过。