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注入和绕过。