本文正在参与「金石方案 . 瓜分6万现金大奖」

前言

准备开一个新坑,最近在学linux提权,于是计划用几篇文章来记载一下linux提权的重要常识点。首先第一篇文章介绍一下linux权限的根底信息以及怎么进行信息搜集。

LINUX权限简介

由于咱们要学习权限提高,所以在学习提权之前咱们先了解一下linux里边的权限,咱们使用指令检查文件权限:

ls -al

即可检查列出文件所属的权限:

LINUX提权之信息收集篇

能够看到文件头前面都有一段类似的字符,下面咱们仔细分析一下里边符号别离代表什么。

-rw-r--r--  1 root root

第一个符号-的当地,能够是下面这些符号:

- : 代表一般文件
d:代表目录
l:代表软链接
b:代表块文件
c:代表字符设备

然后边的

rw-r--r--

表明的是文件所属的权限

r : 文件可读。w : 文件可修正。- : 表明暂时没有其他权限。x : 表明可履行

rw- 表明文件所具有者的权限。
r-- 表明文件地点组的用户的权限。
r--  表明其他组的用户的权限。 

但假如当时检查的文件是一个目录的话能够看下面的解读:

r 表明能够进入该目录进行检查。 w 表明文件能够进行增加。x 表明能够进入这个目录

后边的数据1代表的内容如下:

假如文件类型为目录,表明目录下的子目录个数

假如文件类型是一般文件,这个数据就表明这个文件的硬链接个数

后边两个root的别离含义便是:第一个为该文件一切者为root 用户,第二个表明该文件地点组为root组。

信息搜集

在提权之前咱们要进行信息搜集,例如体系信息,用户信息,安装的服务,方案任务等能被咱们进一步利用的信息,这些信息在咱们提权时会用到,下面就简单举一些经常需要用的信息搜集指令:

检查体系信息(可用于内核提权)

linux里边体系信息属于比较重要的信息了,有时候进犯者会通过该版别体系自带的缝隙来对电脑建议进犯(例如“脏牛”缝隙),所以体系信息是信息搜集时必不可少的。

uname -a    打印一切可用的体系信息
uname -r    内核版别
uname -n    体系主机名。
uname -m    检查体系内核架构(64位/32位)
hostname    体系主机名
cat /proc/version    内核信息
cat /etc/*-release   分发信息
cat /etc/issue       分发信息
cat /proc/cpuinfo    CPU信息
cat /etc/lsb-release # Debian 
cat /etc/redhat-release # Redhat

LINUX提权之信息收集篇

用户和群组

检查用户信息能够发现有哪些用户,便利咱们进行横向浸透。

cat /etc/passwd     列出体系上的一切用户
cat /var/mail/root
cat /var/spool/mail/root
cat /etc/group      列出体系上的一切组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'      列出一切的超级用户账户
whoami              检查当时用户
w                   谁目前已登录,他们正在做什么
last                最终登录用户的列表
lastlog             一切用户前次登录的信息
lastlog –u %username%  有关指定用户前次登录的信息

LINUX提权之信息收集篇

用户权限信息

当咱们查询到用户后,咱们能够检查用户的权限来寻觅具有root权限的用户,来尝试获取root权限。

whoami        当时用户名
id            当时用户信息
cat /etc/sudoers  谁被允许以root身份履行
sudo -l       当时用户能够以root身份履行操作

环境信息

能够利用于环境变量提权,之后会进行具体解说。

env        显现环境变量
set        实际环境变量
echo %PATH 途径信息
history    显现当时用户的前史指令记载
pwd        输出工作目录
cat /etc/profile   显现默认体系变量
cat /etc/shells    显现可用的shellrc
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout

进程和服务

通过进程和服务信息便利咱们快去了解当时机器的具体信息

ps aux
ps -ef
top
cat /etc/services

LINUX提权之信息收集篇

检查以root 运行的进程

ps aux | grep root
ps -ef | grep root

检查安装的软件(可用于第三方服务提权)

比如mysql能够被利用于提权,咱们寻觅是否存在能被提权的第三方服务文件

ls -alh /usr/bin/
ls -alh /sbin/
ls -alh /var/cache/yum/
dpkg -l

服务/插件

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
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

方案任务(可用于方案任务提权)

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

有无明文存放用户暗码

假如没对暗码进行加密咱们就能够随意登录不同用户来进行浸透。

grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find , -name "*.php" -print0 | xargs -0 grep -i -n "var $password"

有无ssh 私钥

假如有的话咱们就能够取得比较稳定的操控受害者机器的途径。

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

可提权SUID && GUID(用于SUID提权)

SUID为linux里边的一种特殊权限, 在履行文件时,该进程的权限将为root权限.

find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Only the owner of the directory or the owner of a file can delete or rename here.
find / -perm -g=s -type f 2>/dev/null    # SGID (chmod 2000) - run as the group, not the user who started it.
find / -perm -u=s -type f 2>/dev/null    # SUID (chmod 4000) - run as the owner, not the user who started it.
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    # SGID or SUID

检查可写/履行目录

Linux里的可写目录咱们能够在里边写入定时服务来进行提权。

find / -writable -type d 2>/dev/null      # world-writeable folders
find / -perm -222 -type d 2>/dev/null     # world-writeable folders
find / -perm -o w -type d 2>/dev/null     # world-writeable folders
find / -perm -o x -type d 2>/dev/null     # world-executable folders
find / ( -perm -o w -perm -o x ) -type d 2>/dev/null   # world-writeable & executable folders

检查安装过的东西

find / -name perl*
find / -name python*
find / -name gcc*
...

信息搜集东西

通过上面这些指令能够看到假如咱们一个一个的去查是很费事的,这儿引荐咱们使用信息搜集脚本LinEnum.sh往来不断进行信息搜集。

官方链接:github.com/rebootuser/…

下载后解压,先赋予LinEnum.sh履行权限:

chmod +x LinEnum.sh

之后就能够运行该脚本了:

./LinEnum.sh -r report -e /tmp/ -t #-e:将生成的一系列文件存放在何处,此处咱们存放在靶机的/tmp目录下

LINUX提权之信息收集篇

这样就便利了咱们进行下一步操作了,只需要在里边找能利用的数据信息就能够了。

结语

今日这篇仅仅作为一个入门常识的解说,这些都是今后提权中要知道的常识,值得注意的是提权有各种各样的方法来进行,所以就会考察到咱们对搜集的信息进行过滤的才能,喜爱本文的小伙伴不妨一键三连。