zoukankan      html  css  js  c++  java
  • sqlmap --os-shell执行原理(mysql篇)

    sqlmap --os-shell执行原理

    对于mysql数据库来说,--os-shell的本质就是写入两个shell文件,其中的一个可以让我们用来执行命令,而另外一个,如果在网站访问的话,可以让我们可以上传文件。

    说到写入shell,就要说一下两个限制条件,首先,我们需要知道上传文件的两个限制条件,首先我们要知道网站的绝对路径(我们的shell写入到哪里),然后要有导入导出的权限。

    导入导出的权限在mysql数据库中是由secure_file_priv参数来控制的,当这个参数后面为null时,表示不允许导入导出,如果为具体文件夹时,表示仅允许在这个文件夹下导入导出,如果后面没有值(为空)时,表示可以在任何文件夹下导入导出。

    当mysql 5.7版本以上的时候,secure_file_priv参数的值默认为null,也就是说,如果管理员没有修改过这个参数后面的数值的话,我们没办法在5.7以上版本使用--os-shell。

    过程演示

    (本次实验环境是本机上搭建的sqli-libs,目的为了研究--os-shell的原理,所以假设我们已知网站绝对路径)

    首先,我们先打开sqli-labs,找一个页面添加参数,然后放置到sqlmap中,测试是否为dba权限。

    可以看到,我们拥有dba的权限,接下来就可以使用--os-shell了。

    这里需要关注一下红框框起来的地方,在一般正常渗透测试情况下,可能在成功执行--os-shell之后,不会给出这个提示信息,我们将这句话翻译一下。

    可以看到,在我们成功执行了--os-shell之后,sqlmap对目标服务器写入了两个文件,一个是tmpugjwq.php,一个是tmpbvjfi.php,首先,这两个里面肯定有一个文件的目的是为了让我们能够执行系统命令,另外一个文件的目的是什么,我们可以直接在网页上访问一下。

    假设第二个文件是让我们执行命令的文件。

    假设是成立的,第一个文件的目的是给我们写了一个文件上传的页面,让我们可以通过这个页面上传脚本文件。

    然后,我们可以去网站根目录看一下这两个文件里面的内容

    tmpbvjfi.php

    在开始看到这个文件的时候,我以为这是个一句话木马,尝试以cmd为密码使用蚁剑进行连接,但是最后发现无法成功连接,随后尝试在url里面往cmd传参,发现该文件给我们返回了一个cmdshell,我们可以直接通过该文件在网站url里面执行系统命令。

    tmpugjwq.php

    这个脚本是写了一个文件上传的页面,那我们尝试往网站上上传一个phpinfo,看能否成功执行。

    上传成功,尝试访问。

    文件执行成功。

    总结

    从刚才的实验结果来看,sqlmap的--os-shell在mysql数据库中的原理,其实就是往服务器上写入了两个shell,其中一个给我们提供了一个文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下,另外一个则是返回了一个可以让我们执行系统命令的命令行,命令行也可以在网页url中通过对cmd参数传参执行系统命令。

  • 相关阅读:
    sikuli 安装
    pychar入门参考教材
    Jmeter 问题集
    appium 中文API 集
    执行Chrome自动化时--正在受到自动软件的控制的显示屏蔽
    下拉框选择
    发邮件 文字+ 附件的方法(QQ or 网易 邮箱)
    发送邮件(单独文字)的方法(网易邮箱 OR QQ邮箱)
    aapium 设置安卓机参数
    -循环点击遇到的坑(每次点击后返回,页面元素都会变化的解决方法)
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/13951894.html
Copyright © 2011-2022 走看看