靶场搭建
靶场下载地址:https://www.vulnhub.com/series/empire,507/
下载下来是虚拟机压缩文件,直接用Vmvare导出就行
打开后把网络模式设置为NAT模式(桥接模式也可以)
开启虚拟机
看到靶机ip为:192.168.109.129
渗透测试
先扫描一下靶机开启了那些端口和服务
nmap -sS -p 0-65535 -Pn -O -sV 192.168.109.129
开启了80端口,存在web,为Apache服务器
开启了445、139端口存在SMB文件共享服务
开启了10000、20000端口,存在Webmin MiniServ服务(Webmin 是功能强大的基于 Web 的 Unix/linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理操作。)
先访问web
查看源码发现一段提示
给了一段奇怪的编码
) ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.
这应该是密码经过某种加密或者编码形成的
经过查询这是一种brainfuck加密方法
brainfuck 语言用 > < + - . , [ ] 八种符号来替换C语言的各种语法和命令,具体规则如下: Brainfuck 编程语言由八个命令组成,每个命令都表示为一个字符。 > 增加指针。 < 减少指针。 + 增加指针处的字节。 - 减少指针处的字节。 . 输出指针处的字节。 , 输入一个字节并将其存储在指针处的字节中。 [ 跳过匹配项] 如果指针处的字节为零。 ] 向后跳转到匹配的 [ 除非指针处的字节为零。 Brainfuck 命令的语义也可以用 C 语言简洁地表达,如下(假设 p 之前已定义为 char*): > 变为 ++p; < 变成 --p; + 变为 ++*p; - 变成 --*p; . 变成 putchar(*p); , 变成 *p = getchar(); [ 变成 while (*p) { ] 变成 }
利用在线工具解密解出密码为:
.2uqPEfj3D<P'a-3
目前不知道是用在哪里的密码,我们先看看10000和20000端口
10000和20000端口都为webmin后台登陆页面
前面得到的密码可能是用在这里,但是不知道用户名,这里需要用到kali自带的工具enum4linux
Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具。 它试图提供与以前从www.bindview.com可用的enum.exe类似的功能。 它是用Perl编写的,基本上是一个包装Samba工具smbclient,rpclient,net和nmblookup。 用法: ./enum4linux.pl [选项] ip地址 枚举选项: -U 获取用户列表 -M 获取机器列表* -S 获取共享列表 -P 获取密码策略信息 -G 获取组和成员列表 -d 详述适用于-U和-S -u user 用户指定要使用的用户名(默认"") -p pass 指定要使用的密码(默认为"") 以下选项是enum.exe未实现的: -L, -N, -D, -f 其他选项: -a 做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项 -h 显示此帮助消息并退出 -r 通过RID循环枚举用户 -R range RID范围要枚举(默认值:500-550,1000-1050,隐含-r) -K n 继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用 -l 通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN) -s 文件暴力猜测共享名称 -k user 远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none) 用于获取sid与“lookupsid known_username” 使用逗号尝试几个用户:“-k admin,user1,user2” -o 获取操作系统信息 -i 获取打印机信息 -w wrkg 手动指定工作组(通常自动找到) -n 做一个nmblookup(类似于nbtstat) -v 详细输出,显示正在运行的完整命令(net,rpcclient等)
enum4linux -a 192.168.109.129
发现用户名cyber,并且成功登录20000端口后台,10000端口没有成功
发现文件上传功能和命令执行功能
发现一个flag
反弹shell
在/etc目录下发现可执行python
不是完整shell,使用pyhton中的pty模块反弹一个完整的shell环境
python -c 'import pty;pty.spawn("/bin/bash")'
提权
发现tar有读写执行权限
在/var/backups目录下发现.old_pass.bak文件,但是没有读取权限
可以利用tar来读取,先进入/tmp目录,因为/tmp目录下具有权限,先将/var/backups目录压缩,再将压缩包解压,即可读取文件
读取到密码为Ts&4&YurgtRX(=~h
试了一下为root的密码
成功过关