0x00 前言
对几个靶机的渗透过程全纪录,分享出来,共同学习,不足之处敬请指正。
0x01 symfonos1
探测靶机IP地址:
为192.168.88.148
。
nmap扫描靶机端口信息:
发现开放了139和445端口的smb,因此尝试枚举smb相关信息:
发现了user:helios
和部分共享目录信息,尝试访问:
其中,在anonymous
目录下发现了attention.txt
文件:
根据提示,猜测helios
的口令为三者之一,经过尝试,确定口令为qwerty
利用上述口令信息,访问helios目录,发现两个txt文件,内容分别为:
research.txt:
Helios (also Helius) was the god of the Sun in Greek mythology. He was thought to ride a golden chariot which brought the Sun across the skies each day from the east (Ethiopia) to the west (Hesperides) while at night he did the return journey in leisurely fashion lounging in a golden cup. The god was famously the subject of the Colossus of Rhodes, the giant bronze statue considered one of the Seven Wonders of the Ancient World.
todo.txt:
1. Binge watch Dexter
2. Dance
3. Work on /h3l105
简单分析,猜测有价值的信息可能与todo.txt的最后一句话有关:3. Work on /h3l105
,猜测/h3l105
可能为目录名称,但当前smb共享目录下并未发现相关信息。
回看端口扫描的信息 ,还开放了80web端口,猜测可能在此处进行利用,首先访问80端口web页面:
恩,一幅还蛮好看的画。。。。
根据猜测,尝试访问/h3l105
子目录看是否成功:
果然有东西~
页面上存在这样一句提示语句:just another wordpress site
,暗示该站点为wordpress
架构。
显然,我们可以利用工具对wordpress
进行脆弱点扫描,包括其相关插件的漏洞
首先修改本地Hosts文件:
wpscan
扫描结果如下:
结果显示,相关插件的漏洞包括:本地文件包含、SQL注入。
尝试分析Mail Masta 1.0
的本地文件包含漏洞:
漏洞说明提示,典型的poc可以泄露passwd文件,尝试利用:
如图所示,我们通过访问http://192.168.88.148/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
,成功泄露passwd文件。
这也证明了LFI漏洞的可用性
下一步,如何实现由LFI到RCE?网上的参考资料也很多,例如From Local File Inclusion to Code Execution
结合本靶机的具体情况,由于靶机开启了25端口SMTP服务,因此这里通过发送恶意邮件的途径,实现RCE,具体步骤如下:
首先参考协议格式利用telnet发送邮件:
EHLO test.example.com
MAIL FROM:<SENDERADDRESS>
RCPT TO:<RECIPIENTADDRESS>
DATA
Subject: Testmessage
(Blank line, press Enter again)
This is a test.
(Blank line, press Enter again)
.
QUIT
成功发送邮件后,访问链接http://192.168.88.148/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=ls
,成功执行恶意php:
下一步,利用该恶意php获取reverse shell:
显然当前用户权限较低,尝试提权操作,从本地拉取脚本文件,搜集可利用的提权相关信息:
发现一可疑文件/opt/statuscheck
,该文件为64位ELF程序:
拉回本地,扔到IDA分析,发现该程序执行了curl -I http://localhost
尝试执行该程序,结果如下:
查看环境变量信息,当前的$PATH存储的curl可执行程序路径为/usr/bin/curl
这里容易想到的利用思路是,自行创建一个curl程序,将其路径添加到$PATH环境变量中,则statuscheck
程序执行时,就劫持了curl
程序为我们自己的恶意程序
因此在tmp
目录下创建curl文件/bin/sh
,此处注意需要修改curl的权限可执行。
将tmp
路径添加到环境变量,此时再执行curl命令,实际上执行的是tmp
目录下的文件
执行/opt/statuscheck
,成功拿到root权限以及flag:
0x02 symfonos2
该靶机的前半部分与symfonos1有相似之处
探测靶机IP:
照例扫描靶机开放的端口信息:
依然存在139和445端口,enum4linux
查看开放的共享文件信息:
发现存在anonymous
目录,进一步利用smbclient进行验证
将/anonymous/backups/log.txt
文件拉回本地,查看文件内容发现一用户名信息:aeolus
到这一步,卡住了一段时间
smb的扫描结果显示并不存在其他共享目录了,猜测该用户名aeolus
可能不是在此处进行利用
回看端口扫描的结果,其开放了22端口ssh服务,hydra尝试爆破,果然有新发现:
获得ssh的登录凭证:aeolus:seagioteamo
成功ssh登录到靶机:
ssh连接状态下,命令的执行受到一定约束:
转而利用msfconsole的ssh相关模块登录靶机:
在检查网络相关信息时,发现可疑之处,靶机一直监听其本机的8080端口,且只允许来自靶机自身的连接
这里自然想到利用端口转发,此处利用portfwd端口转发/重定向工具,其集成到metasploit内,
将对本机9001端口的访问映射到靶机的8080端口,web访问本机9001端口如下:
而利用之前的ssh登录凭证aeolus:seagioteamo
也可登录此web页面:
这里直接利用metasploit查找该librenms是否存在可利用漏洞:
果然存在脆弱点,直接利用该模块尝试漏洞利用
注意,由于利用portfwd设置了端口转发,这里RHOSTS和RPORT的参数,需要设置为本机的IP和端口
漏洞利用成功,拿到shell:
下一步需要进行提权操作
查看当前用户的命令和权限相关信息,发现存在可利用的mysql,将权限提升至root:
提权成功,拿到flag如下:
0x03 matrix_v3
探测靶机的ip信息:
IP为:192.168.88.146
nmap扫描靶机端口,找寻可利用信息:
发现开发的端口信息:80(http)、6464(ssh)、7331(caldav)
首先访问80端口的web页面如下:
没有可利用信息。尝试对站点进行子目录爆破:
发现了assets
和Matrix
子目录
先访问assets
页面如下:
发现一名为Matrix_can-show-you-the-door.png
的图片:
然而这只阔爱的兔兔好像并没有什么价值
文件的名称给了暗示,信息可能蕴含在名为Matrix
的目录下
访问页面如下:
简单浏览了一下目录,发现各目录下又包含众多空目录
猜测:有价值的信息应该包含在某一目录下
利用上述目录构建字典,尝试爆破:
根据上述结果,发现其/n/e/o
的目录较为可疑
最终在/n/e/o/6/4
的目录下,发现了信息:
把文件拉回本地,查看信息:
猜测为某登录凭证,口令经过了hash运算,尝试破解口令如下:
得到密码为passwd
下一步,注意力转向7331端口,访问该端口,要求输入身份验证信息:
输入之前得到的身份凭证信息admin:passwd
,进入如下页面:
没有发现重要线索信息,依然尝试子目录爆破:
发现data
目录,访问页面如下:
发现一个二进制文件,拉回本地进行分析:
扔到ida里,发现如下字符串信息:
猜测仍然为身份凭证信息
至此,只剩下6464端口的ssh没有进行分析利用,因此尝试利用上述得到的身份凭证登录ssh:
上图所示,我们得到了一个受限制的bash,即rbash(restriced bash)
在这种情况下,命令的执行将受到多种约束。
因此,利用-t "bash --noprofile"
来禁止相关的启动脚本,获得一个完整的guest的shell:
get it!
查看一下当前用户下相关命令的权限情况:
发现,当前guest用户可以以trinity用户的权限来执行/bin/cp
命令
由此想到以下利用思路:可以生成ssh登录凭证,然后利用cp命令将其公钥拷贝至trinity用户目录下,这样guest用户就可以用生成的私钥ssh登录至trinity用户
流程如下:
(注:这里需保证公钥文件有足够的权限)
成功登录到trinity用户下,照旧,查看一下当前用户用户下命令的权限情况
发现可以以root权限执行/home/trinity/oracle
程序,在oracle
文件内写入/bin/bash
命令,然后赋予执行权限,执行~成功拿到root权限。
拿到flag如下: