靶机下载地址
信息收集
主机发现
扫描攻击机同网段存活主机。
nmap 192.168.31.0/24 -Pn -T4
靶机ip:192.168.31.165
端口扫描
nmap 192.168.31.165 -A -p- -T4
开放端口22,80。
网站信息收集
访问80端口的http服务。首页是空白页面,F12检查页面得到隐藏信息bassam,ctf,大概是域名?
向/etc/hosts添加一条主机名和ip地址的映射,添加成功后重启网络服务确保更改生效。
vim /etc/hosts
# 添加一条映射关系
192.168.31.165 bassam.ctf
# 保存后,重启网络服务
sudo systemctl restart networking
访问bassam.ctf,是个人博客的项目,没有其他提示,卡住了,去跑了一遍目录扫描,没有收获。是不是还存在其他子域名,对应着其他项目。
wfuzz爆破子域名
字典位置是: /usr/share/amass/wordlists/
wfuzz -w subdomains-top1mil-110000.txt -u http://192.168.31.165/ -H "Host:FUZZ.bassam.ctf" --hw 3
welcome.bassam.ctf。修改主机名和IP的映射关系,别忘了重启网络服务。
访问http://welcome.bassam.ctf,得到提示open your eyes
。
welcome.bassam.ctf目录扫描
gobuster dir -u http://welcome.bassam.ctf/ -w directory-list-2.3-medium.txt -x html,php,js,jpg,png,txt
扫描出三个路径,其中config.php是空页面。
访问index.php,可以下载文件。经过测试能下载当前项目根目录下的文件,即上面扫出来的三个文件。config.php有内容,并非空文件。
config.php,得到一组用户名密码test:test123。
渗透
ssh登录
ssh服务开启,test:test123,尝试远程登录ssh服务。
ssh test@192.168.31.165
# 获得交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
拿到shell后进行一些信息收集。有三个用户,分别是bassam,kira,test。
/home/bassam下,可执行文件down.sh,是通过curl访问并通过bash执行script.sh。属主是root,可能与提权有关。
/home/kira下,可执行文件test.sh。
test家目录内容:
.bash_history是每个用户的主目录下,用于记录用户执行过的历史命令的隐藏文件。通过查看/home/test/.bash_history得知上一次注销test账号之前使用的命令,查看了MySecretPassword文件。(补充知识:history命令和~/.bash_history的区别是,只有当前shell关闭时才会将内容写入到~/.bash_history中,而history是随时记录的。)
locate命令定位MySecretPassword文件,发现命令不生效,只能一个个文件夹找。在找MySecretPassword文件的过程中发现另一个可疑文件夹PassProgram。
该文件夹下,加密程序和解密程序。
并告诉了用法,对文件进行解密。
/var/www/ctf/MySecretPassword,/var/www下就是部署的三个项目。
查看MySecretPassword发现没有显示,但是文件大小不是0。file [filename]看一下文件类型,MySecretPassword: ASCII text
,文本文件。
开启简易http服务,方便将MySecretPassword下载到本地查看,发现想简单了,修改后缀名为txt也看不到内容。
用PassProgram下的解密程序,切换到PassProgram目录。
./decoder /var/www/ctf/MySecretPassword
疑似kira用户的密码kira2003。
提权
切换到kira用户,kira:kira2003
,sudo -l提权。可以以bassam身份执行test.sh从而获得bassam的bash。
sudo -u bassam ./test.sh bash
成功。
还有down.sh,执行看一下结果。提示http://mywebsite.test不可达,因为靶机/etc/hosts下这个主机名的映射ip。
解决http://mywebsite.test不可达的问题,将http://mywebsite.test映射ip改成攻击机ip。
准备script.sh。
当前目录开启简易http服务,注意指定端口为80。
python3 -m http.server 80
bassam窗口执行sudo ./down.sh
,攻击机另开一个终端nc监听端口。成功获得root权限。🎆