vulnyx loweb writeup
信息收集
arp-scan
nmap
这里也可以接其它选项进行深入的扫描,因为我是打完后再写的wp,第一次做的时候我是扫了的,但是我没有得到什么有用的信息,所以写wp的时候我就没放出来了。这里直接去web
获取userFlag
一个默认的apache2 debian的web页面,接下来dirsearch扫一下吧
进这个library后继续用dirsearch扫
发现有用的东西了,访问admin
来到了一个登录页面,那首先测试一下是否存在sql注入,当我在用户名一栏输入 admin' 时页面会变成:
而输入其它的都显示认证失败,那说明这里应该存在一个以单引号包裹的字符型sql注入,我们先直接尝试万能密码登录,用户名那里输入:admin' or 1 -- q
直接就登录上来了,然后就翻翻这个网站吧
然后点到这里的时候会发现url变成了:
那这里我首先就觉得是一个文件包含,然后测试了一下,发现可以读到/etc/passwd
之后我想通过日志文件包含的方式写入webshell的,但是我发现这里居然没有读到日志文件,后来又尝试了一下 data:// 和 php://input 都不行,但是php://filter可以,所以先用它读一下index.php的源码吧,伪协议这里这样写:
php://filter/read=convert.base64-encode/resource=index.php
然后解码后发现后端就是一个include,也没有什么过滤,那之前失败,只能说明这个机器里确实没有日志文件,以及它不允许远程文件包含。也就是说,目前web上只有一个文件包含点,且伪协议这里只有php://filter可用。第一次做到这我是没有办法了,因为那个普通用户的家目录不可读,所以想要拿到userflag我们必须得先拿到webshell即我们必须能RCE,后来查了一下后发现只是使用php://filter也是能够RCE的,具体的原理如果感兴趣的话各位可以自己去查。
想要RCE我们需要用到一个工具:php_filter_chain_generator
基本使用方式:
python3 php_filter_chain_generator.py --chain '一句话木马'
然后把生成的php://filter传进去后就可以RCE了
然后就可以直接通过busybox调用nc反弹个shell回来了,拿到shell先通过以下命令稳定shell:
# 在反弹 shell 中执行
script /dev/null -c bash
# 按 Ctrl+Z 暂停
# 在 Kali 终端执行
stty raw -echo; fg
# 按 Enter 恢复,然后继续在反弹 shell 中执行
reset xterm
export TERM=xterm
export SHELL=/bin/bash
stty rows 40 columns 178 # 可选,调整大小
拿到www-data shell后可以在/opt目录里看到一个monitor.sh文件,cat一下就可以获得 r3dh4ck 用户的密码
su登上去
然后你去家目录里看user.txt是看不了的,因为属主不是r3dh4ck,我们sudo -l看一下
发现可以以任意用户的身份无密码执行chown,那就简单了,直接改user.txt的属主为 r3dh4ck 后查看user.txt即可,userflag:
ed568ec0cd3aef96d4c17a7f02a8391e
获取rootFlag
这里我的思路是通过chown将/etc/passwd的属主改为r3dh4ck,然后向里面写一个具备root权限的后门用户,然后再把/etc/passwd的权限改回root,然后su切到后门用户上,进入/root获得rootflag
然后用openssh生成一个密码hash,这里我设置的密码是1234
然后通过echo将后门用户追加到/etc/passwd里
然后把/etc/passwd权限恢复,然后su切到backdoor上去
这样就拿到了root shell了,rootflag:
f6a0195e175989b2f9dd92fe4e35d6e4