0x01 外部打点首先拿到手的是一个域名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的链接在群里……好的,又是队友带飞躺赢的一天。0x03 寻找数据库进入内网,首先找配置文件连接数据库,但是数据库里寥寥的几条数据暗示着这只是一个测试库。不死心的我又ping了一下之前发现的mysql.A.com,发现确实能ping通而且和本机不是同一个ip。看来目前只拿到了一台测试服务器而已,这个mysql.A.com才是我们要努力的方向。对这个方向目前没什么太好的思路。因为时间还很充裕,遂放弃了大规模扫描的念头。打算先把已经getshell这台机器的信息好好收集一下再说。在本机的nginx的日志文件中,收集到一个域名testadmin.C.com,解析ip正是getshell这台机器。同时子域名爆破发现C.com的绝大多数子域名都和mysql.A.com一样解析到内网ip。遂猜想这是一个内网专用的域名,于是加大力度,换了一个大字典继续进行子域名爆破。最终爆破出一个harbor.C.com,访问发现是内网的一个Harbor镜像仓库,用默认密码admin/Harbor12345登入,发现里面按功能不同存放了好多镜像。找了一个名字为manage的镜像拖回来,在里面翻找到了配置文件,上面写的数据库ip正是mysql.A.com对应的ip。用配置文件里的账密,直接连接成功,给客户看了一下确实是生产数据库,项目结束。0x04 后记VX公众号:《小黑的安全笔记》攻击链:初始域名——扫目录——收集到后台——登陆后esc中止跳转——审查前端源码——收集到测试后台——扫端口——爆破redis弱口令——redis利用失败——爆破测试后台弱口令——改上传配置——文件上传getshell——web日志中收集到内网域名——爆破子域名——Harbor系统默认口令——拖镜像找配置文件——连接数据库。从生产后台收集到测试后台,再从测试后台打回生产数据库。一些平平无奇的操作,也许对新手来说会有点帮助吧~小黑个人从这次渗透经历中总结到的新经验如下:1、外部打点时偶然收集到的内网信息也要记录下来,后面进到内网会有用的。2、getshell后从web日志中可能会收集到内网专用的域名。