• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

【入门推荐】SQL注入对WebShell渗透测试基础的讲解


H4CK

Recommended Posts

(Web安全防御、渗透测试、逆向破解可添加QQ 75960992 )

导语:  

利用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[' '] 来接受我们发送的数据,并把接收到的数据传递给一句话木马中执行命令的函数,进而执行命令。所以我们看到很多一句话木马大多数都有两个部分,一个用来接受命令,一个用来执行命令。

举个例子:

1322332-20190405142945871-620283046.png

这就是一个经典的一个一句话木马,其中 post 就是使用 post 的方式来接受命令,而 eval 就是执行命令的函数,eval 在 PHP 中的意思是将收到的数据转化成 PHP 代码来执行,这样我们就能够让插了一句话木马的网站执行我们传递过去的任意php语句,是不是觉得一下豁然开朗?

演示一下一句话木马的使用:

1322332-20190405143109742-969607831.png

新建立一个叫做muma.php的php文件,将它放入到www目录中

1322332-20190405143127462-1744650859.png

因为是post方法,所以我们用hankbar来提交数据

1322332-20190405143147640-1902773742.png

我们提交一个叫 phpinfo 的命令,phpinfo 的意思是展现当前php版本信息,然后提交一下

1322332-20190405143221699-788745761.png

成功执行!

但是不只是 eval 这一个函数可以实现这个功能,还有很多函数可以间接或者直接的实现,而你要做的,便是想方设法进行变异来绕过某些检测机制,这些思路网上有很多,这里就不在赘述了。

常用工具:中国蚁剑的使用

不一定得是这个工具,笔者只是将用这个工具来做个科普。

中国蚁剑,一剑在手,纵横无忧!其他的多余的话咱们就不说,来做个演示:

利用蚁剑链接一句话木马

1322332-20190405143352871-595230272.png

还是写入一个一句话木马,密码值是value

1322332-20190405143414659-2027782211.png

将其中写入到www目录里面

1322332-20190405143438538-641849721.png

添加数据

1322332-20190405143500368-1426027571.png

然后添加数据,成功!

1322332-20190405143528510-1879952958.png1322332-20190405143535940-1740209046.png

点击文件管理,就可以成功进入到目标服务器了。

利用SQL注入漏洞获取webshell:

从前文我们可以看出,一切一切的难度在于如何上传小马,而我们一般都是利用上传漏洞来进行上传各种大马小马,本次我们利用SQL注入来进行上传操作,以达到写入webshell的这一个操作。

select ...into outfile介绍:

正常的使用规则就是select A into outfile B,意思就是选择a的数据导入到b,常和union连用。但是有两种写法,一种是利用union的,一种是不用的。

如果要利用需要满足多种条件:

  1. 必须能用单引号
  2. -secure-file-priv没有进行配置
  3. 需要绝对路径
  4. 对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

这个十六进制码这个翻译过来就是:

1322332-20190405143720243-1072972099.png

带引号的一个小马,欸这里有人可能要问了,小马就算了,为什么还要带引号?

SQL语句因为是解释型语言,这条语句进入后台后,首先后台会解码,把十六进制转换成字符,然后再执行,而带引号的小马会被当成字符串传递到muma.php的php文件中,这时在muma.php里面就是已经变成字符串的一句话木马,但是如果不加引号,传递到muma.php 的就是未被转换的十六进制,这就是为什么要加引号的原因。

注入语句!

1322332-20190405143758933-397557630.png

打开www目录,我们发现已经注入进去了

1322332-20190405143820206-953641914.png

现在我们用蚁剑来进行连接

1322332-20190405143839181-1035766570.png

成功链接!

1322332-20190405143856327-1939559767.png

常见防御姿势:

  1. 设置 secure_file_prive = null (不允许导入和导出)
  2. 防止暴露网站绝对路径
  3. 正确设置 web 目录权限,除 log、upload 等目录外不授予写权限,upload 目录不授予执行权限
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now