vulnhub靶场Jangow: 1.0.1

闲得无聊,好久没做题了。去vulnhub发现21年好多没做过。找了个Jangow: 1.0.1做做,以此记录。

image

导入到Vbox里正常启动。

信息搜集

虽然启动后控制台已经有IP了,但是假装不知道,先fping扫一下这个网段。
image

发现128和132,,128是我本机kali的IP,所以应该是132(和控制台提示也一样)
image

image

再使用nmap详细扫描

image

等了一下就看到80和21开着,让它先扫着。先看看这两个端口。

首先看看80。

进来以后发现一个目录,点击进去长下面这样。

image

image

image

随便点点。

首页下面有个框

image

image

试了试也没啥入口

这还有一个超链接,

image

点了一下跑到 https://startbootstrap.com/theme/grayscale 了。

image

再点点

image

发现这里点完跳转到 http://192.168.110.132/site/busque.php?buscar=

image

http://192.168.110.132/site/busque.php?buscar=

这个URL有点意思,,后面加个ls试试 http://192.168.110.132/site/busque.php?buscar=ls

image

好吧,这里应该就是这道题的入口了。

回头看一眼nmap,

image

啥,,只有一个21和80,,系统类型unix,为啥连个22都没有,有点不太正常。

不过web里已经有命令注入了,那就用命令注入重新搜集一些基本信息吧。

系统类型NAME="Ubuntu" VERSION="16.04.1 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.1 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" UBUNTU_CODENAME=xenial

image

内核版本Linux jangow01 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

image

当前用户www-data

image

本机用户:有一个普通用户jangow01和root有shell权限

image

本机监听的端口

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp6 0 0 :::80 ::😗 LISTEN - tcp6 0 0 :::21 ::😗 LISTEN - tcp6 0 0 :::22 ::😗 LISTEN - tcp6 0 0 192.168.110.132:80 192.168.110.1:4352 TIME_WAIT - tcp6 0 0 192.168.110.132:80 192.168.110.1:4336 TIME_WAIT - tcp6 0 0 192.168.110.132:80 192.168.110.1:4374 ESTABLISHED - tcp6 0 0 192.168.110.132:80 192.168.110.1:4363 TIME_WAIT - tcp6 0 0 192.168.110.132:80 192.168.110.1:4337 TIME_WAIT -

image

本机监听的端口,看到了0.0.0.0:22 ,有22呀,nmap为啥没扫到。

手动试试,80可以,22还是不行。

image

继续搜集信息

当前运行服务:

image

看到一个防火墙ufw,且还是enabled。22端口正在监听。但是无法通,八成是22端口被拦截了。生产中大概率是物理防火墙做的,但是这个虚拟机,,,大概率是自带的ufw防火墙。

image

其它能用的端口,也确实像nmap扫描的那样,也就21端口还通着。试了一把匿名登录。无法登录。

好像也就web能下手了。

再看看web的目录有啥值得的信息

本来就没几个文件,找到一个config.php

image

php无法直接在浏览器打开,也懒得用bp。。就改个后缀复制一个

image

看一眼有个用户名和密码,但是没有ssh。只有个ftp,,用ftp试了试,这个用户名密码无法登录。

image

确定方向,开始动手

根据搜集的系统信息,找个本地提权exp。先试试45010.c。。

image

因为暂时没有交互shell,,所以我们需要exp可以直接执行脚本文件,将main函数改为,mysh.sh是我们一会儿要自己写的东西。

image

先看看这个机器上有没有编译工具。如果有的话,就传上去以后在目标机上编译,也少报错。。如果没有的话,我们可能需要在本地编译后再传上去,环境不一样也可能报错。

image

好的,有gcc。下面就是想办法把这个exp的源文件搞上去。

根据现有的信息,目前只有一个web命令注入可以继续动手,其它的ftp只能是爆破。看来只能用web命令注入来提权了。先传个shell进去吧。

搞了个webshell准备传进去。

image

使用web启用一个web。

image

image

使用命令注入传进去

先用确认下有没有wget 或者curl,是有的。

image

然后准备传进去,可是一直在转圈圈。

image

我只好试试将错误输出到文件。结果是这样,,,根本不通。。换curl也是一样。

image

image

得,完了,对外连接好像禁止了。这个机器貌似禁止访问外网,只有80和21两个端口提供监听。反弹shell不能用了。这……写个一句话木马进去吧。

image

直接写个python去连接它,执行一下,可以用。

image

将exp文件使用base64编码,以便分割传输文件或转码错误。然后使用脚本或bp、http等工具发送post请求将这个东西上传。

image

上传成功后应该可以看到这个文件。简单和源文件对一下。对比没啥错。

image

然后使用base64 解码(linux服务器一般都会有base64命令,)

image

对比完EXP也没啥问题。

image

改个名字,然后编译。

image

image

image

OK,编译成功。

然后就是搞一个mysh.sh试试了。看看能不能获取到权限。

image

直接执行./exp.out,看到exp后的mysh.sh,是以root权限执行的。也就意味着我们只要修改mysh.sh,mysh.sh里的文件都是以root权限执行的。

image

网络不通的问题,看看是不是本机防火墙吧(但是现实生产中,可能是前端的安全设备做的策略,搞起来可能更费劲,这里只是个题,所以大概率是本机防火墙)。

image

image

呃,是防火墙!!!我当时看到这个的时候,是想要吐血的。简单说下这个防火墙的规则,,,允许外部访问本机的80 和21端口,,允许本机主动访问外部的TCP443端口,,这个如果当时反弹shell我的python HTTP使用443端口而不是8000,,wget 是可以下载webshell的。。。唉!!!!!!

所以可以直接用TCP443反弹shell。现在先不关防火墙,试试443端口。

先将webshell 中反弹的端口改成443。

image

然后使用python在443端口启动服务

image

下载shell。

image

监听反弹

image

然后执行

image

nc已经得到shell了。

image

进到web目录

image

把防火墙关了,然后新增个后门用户hello,密码hello123

image

image

果然是这样,,防火墙关了以后,使用刚刚创建的用户可以直接进来了。

image

将exp.c中的文件修改为原来是,然后重新编译

image

image

image

这次是在ssh的命令行里拿到root权限了。。。做到这基本就算完了。。。有时间再研究一下那个ftp服务。现在还不清楚是用来干啥的。。

posted @ 2023-01-09 15:50  GoudaX  阅读(192)  评论(0编辑  收藏  举报