首先拿到手的是一个域名A.com,常规收集一下子域名,收集到很多,这里只列出到最后发现是对项目有帮助的:www.A.com和mysql.A.com,毕竟渗透测试是在那一百次失败中寻找一次成功,如果把所有操作步骤都列出来恐怕一篇文章就写不下了。mysql子域名解析的是一个内网ip,之前的项目中有时也会遇到这种情况,暂时不清楚原理,队伍里的老师傅说是因为dns服务器的配置失误导致内网的ip信息泄露。不过现在不在内网里,还是老老实实的看外网:平平无奇的子域名www.A.com,手试出admin目录,是一个采用前后端分离的技术开发的后台。随便输一下账号密码然后点登陆就可以看到后台界面了,只不过很快就会强制跳转回登陆框,而且不能执行任何操作。这时利用一下手速,在看到后台界面后马上按esc键,就可以中止跳转了。虽然还是不能执行什么操作,但是可以看后台页面的前端源码,发现源码中注释了一个域名admin.B.com。访问发现是和http://www.A.com/admin一模一样的后台(后面得知是测试后台)。测试后台爆破出弱口令admin/123456,登入后简单看了看没发现能getshell的地方。转战admin.B.com这个域名的ip地址:123.123.123.123,扫了一下全端口发现是宝塔搭建的(宝塔有几个知名度很高的默认端口:888,8888……)。并且开放了6379端口,用超级弱口令检查工具爆破出弱口令abc123,拿到了redis的权限。至此外部打点初步结束,接下来尝试用redis去getshell。0x02 失败的redis利用用telnet连接redis,config set dir /root 发现没有权限,非root权限写计划任务和覆盖/etc/passwd就没戏了。用openssh枚举漏洞爆破一下用户名,发现有redis用户(后面得知是宝塔自带的nologin用户)。尝试向/home/redis/.ssh目录中写公钥,却发现redis用户的家目录里没有.ssh目录,写公钥的方法也行不通。redis的利用方式就只剩下写webshell了,但是不知道绝对路径怎么写?不要慌,宝塔建站的绝对路径是很固定的,于是盲猜一手:/www/wwwroot/admin.B.com/,猜中了!但是尝试save一下,结果还是ERR,看来宝塔的权限控制真的很完善,redis连写webshell的权限都没有。关于redis常用的利用方式就这么几种,主从rce也因为redis版本太高而没法打。这时我想到的最后一个尝试思路:找到admin.B.com的类似upload、images之类的上传目录写webshell,这些目录有可能被分配777的权限。虽然这种用宝塔建站的目标不太可能会手动分配目录的权限,但是总要试一下再说……不过还没等我去尝试,队友那边突然发了一个webshell的链接在群里……