靶机下载地址: https://www.vulnhub.com/entry/typo-1,472/
教程链接地址: https://www.infosecarticles.com/typo-1-vulnhub-walkthrough/
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 TYPO:桥接于 192.168.31.1 的网卡,ip 未知
1 )确定靶机 ip 地址
sudo arp-sacn -l

-> 靶机 ip:192.168.31.153
2 )确认靶机 ip 开放的端口信息
sudo nmap -p 192.168.0.153

-> 靶机开放端口 22,80,8000,8080,8081
# 网站信息收集
依次打开 80,8000,8080,8081 的网站进行访问,收集相关信息
打开 http://192.168.0.153 进行信息收集,发现网站是一个 typo3 的地址

打开 http://192.168.0.153:8000 搜集信息

打开 http://192.168.0.153:8080 搜集信息

打开 http://192.168.0.153:8081 搜集信息

收集目录: dirsearch -u 192.168.0.153:8000

依次打开收集到的目录看能否找到更多信息
http://192.168.31.176:8080/phpinfo.php

收集目录: dirsearch -u 192.168.0.153:8081

# phpmyadmin 渗透测试
发现敏感地址,phpmyadmin 存在弱口令
http://192.168.31.176:8081/phpmyadmin/

用弱口令 root:root 登陆成功拿到后台的权限

对 phpmyadmin 进行写 shell 拿网站权限
1 | 显示目录 |

1 | 是否可以写入 |

1 | 查看是否开启日志记录以及日志保存目录 |

1 | 开启写入日志的开关: |

查看设置是否正确,是否开启成功,检测到已经开启了日志写入,并且写入的地址在下面的文件中

1 | 修改默认的日志写入地址 |

-> phpmyadmin 拿 shell 失败,得采用其他的方式
# 覆盖 admin 密码
查看 sql 之后看到密码采用 argon 算法

既然数据的密码采用的是 argon 的算法加密的,那么现在的思路就是通过 argon 算法生成一个加密后的密码并且替代原来的密码
在网站 https://pypi.org/project/argon2-cffi/ 上看到了 argron2 的生成教程
通过 python 依次输入以下的命令可以将自定义的密码以 argon 加密

用 pip 来安装 argon: python3 -m pip install argon2-cffi

1 | 打开python的命令行,依次输入以下命令 |

打印出来的即为密码为 typo 的 argon 算法之后的加密字符:
$argon2id$v=19$m=65536,t=3,p=4$BLSCVncgUy7tfYFMab+XMQ$LDy6bITURoFWRdb4JNHQ53e+t2TF9oiWeBdzLxHVoUM
打开数据库中修改用户名密码的位置,将上述产生的 typo 加密后的字符替换原先的密码,点击确定即修改成功

-> 现在就有了一个用户名密码分别为 admin:typo 的组合
但是这个账户应该在哪个位置登陆还不确定,看起来像是一个网站后台的登陆地址;继续之前 80 端口的网站目录扫描,发现了一个 /typo3 的后台地址

(这里换了地方测试,重启了机器,重新分配了 ip 地址,靶机的 ip 地址发生了变化,正常的操作 ip 地址是不会发生变化的)
用 admin:typo 进入此后台

-> 拿到了后台地址
# 修改过滤规则上传木马
进入后台之后看到是一个普通的后台管理地址

在 fileList 中找到了可以上传的位置,并且注明了上传文件的位置在 fileadmin 目录下,尝试从这个位置上传一个 php 后门

准备好 php 一句话木马,这里的 php 木马来源于 kali 机器上默认的木马,由于提前将此后门放在了公网 ip 上,就在自己的公网 ip 上直接拉下来即可,修改其主机和端口号为 kali 机器的地址

点击上传文件,从本地选择 php 文件后,发现服务器拒绝了,说明有判断需要尝试绕过,可以用 00 截断的方式,这个地方尝试去寻找过滤文件的方式是否在后台能修改,进行绕过

在设置里边查找,看到了 Configure Installation-Wide Options 中有关于文件上传的格式限制,其正则表示如下:
\.(php[3-8]?|phpsh|phtml|pht|phar|shtml|cgi)(\..*)?$|\.pl$|^\.htaccess$

将原有的过滤规则全部清除

确定之后,接下来文件上传将不会受到任何限制

再次尝试上传 shell.php 就上传成功了

监听木马文件中的端口,同时去执行上传成功的木马,成功拿到网站权限


# 服务器信息收集
1 | 用一些命令将终端变为一个标准的shell |

1 | 收集信息 |
判断出来没有其他的用户,需要直接拿到 root 的 shell

1 | 查看定时任务 |

发现没有任何任务被加载
1 | 查看是否有设置错误的s权限的文件 |

-> 找到一个 apache2-restart
# 文件权限设置错误提权
很显然这是一个自己封装的命令,需要进行读取或者反编译这个命令里边封装了哪些命令,通过 strings 将命令读取

是一个 service 的命令,意味着我们去执行 apache 2-restart 命令的时候,会去环境变量里边去找 service,而且去执行这个 service 的时候是以 root 权限执行的,
1 | 通过修改环境变量提权 |

-> 成功拿到 root 权限