设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

网易游戏运维林伟壕:永不落幕的数据库SQL注入攻防战(2)

发布时间:2021-01-12 02:43 所属栏目:53 来源:网络整理
导读:主要会用到下面几款工具. Nmap:社区最著名端口扫描工具. AWVS:商业级Web漏洞扫描工具,准确率和效率名列漏扫工具Top3. sqlmap.py:全自动SQL注入工具,神器之“神”. NoSQLMap.py:sqlmap的NoSQL版本,支持MongoDB等

主要会用到下面几款工具.

  • Nmap:社区最著名端口扫描工具.
  • AWVS:商业级Web漏洞扫描工具,准确率和效率名列漏扫工具Top3.
  • sqlmap.py:全自动SQL注入工具,神器之“神”.
  • NoSQLMap.py:sqlmap的NoSQL版本,支持MongoDB等.
  • webshell:Web木马,攻城掠地不可或缺.

2、渗透测试环境

要知道,在欧美,扫描别人网站可能违法,更别说入侵网站了.同理,我们的测试,也仅使用模拟环境.下面有很多Web渗透的模拟环境,部署起来非常简单.

https://github.com/ethicalhack3r/DVWA
https://github.com/WebGoat/WebGoat
https://github.com/Audi-1/sqli-labs
https://hack.me/t/SQLi
https://github.com/davevs/dvxte
https://github.com/rapid7/metasploitable3

3、全景图

在开始测试前,先整理一遍思路.通常渗透测试会遵循:信息采集、入口发现、入口测试、获取webshell、提权等步骤.下面大概介绍下每个环节需要做的事情.

  • 收集信息:通过端口扫描工具、搜索引擎或者目录爆破工具收集敏感信息或者端口开放信息,以便作为测试入口.
  • 注入:一般说是入口发现,我们这次是Web站点存在SQL注入,然后通过手工尝试PoC(漏洞验证payload)或者自动化工具测试,一旦发现SQL注入点,立马开始遍历数据库,俗称“脱库”.但是,别忘了世纪佳缘白帽子事件,殷鉴不远啊.
  • Getshell:基于SQL注入上传木马,获取服务器控制权限.
  • 提权:基于已有的普通用户权限,利用系统内核漏洞或者应用漏洞,将自己升级到root用户.
  • 进阶:思路足够广,要多深入就有多深入.

4、发现漏洞

nmap -p1-65535 192.168.115.131
发现开放tcp/80端口,为Web服务,手工验证注入入口.

发现http://192.168.115.181/cat.php?id=1存在SQL注入.使用AWVS进行进一步验证,如图6.

图6

5、脱库

使用sqlmap全自动脱库,扫出数据库、表名、列等信息.

图7

6、Getshell

也是使用sqlmap直接在SQL Shell里写文件,当然也可以切换到–os-shell获取操作系统shell直接执行系统命令,如图8.

图8

这里科普一下传说中的“一句话木马”、“小马”、“大马”.“一句话木马”就是将接收任意字符进行执行的PHP/ASP/JSP文件,通常只有几行,甚至只有一行;“小马”就是“一句话木马”或者功能比较简单的Web木马,“大马”就是功能齐全的Web木马,比如图8所示,可以管理文件、数据库、执行系统命令、端口扫描甚至端口转发.

7、提权

从普通用户变成root用户.这个需要利用操作系统内核版本漏洞,所幸该内核版本(图9)很低,真找到了内核exp(图10),顺利提权.

图9

图10

8、进阶利用

提完权就算了?没这么简单,如果处于攻击目的,实际上可做的事情太多了.

  • 内网漫游:一般数据库都放在内网,我们都知道企业内网很多“宝藏”,各种空口令、弱密码、目录遍历,随便扫一下就大丰收了,如图11.
  • 流量劫持:ARP攻击、SSL流量劫持、抓包上传甚至攻击域控服务器等等,都深入到这程度,真没什么做不到的.
  • DDoS肉鸡:控制被入侵机器去攻击别人,当你发现某台服务器出向流量异常高就该担心了,如图12.
    远控:监控机器,比如键盘记录、用户命令记录等等.

图11

图12

刚才完整介绍了一个自动SQL注入攻击的过程,可能大家觉得还是不够过瘾,因为一路只看我在使用工具,连畸形SQL语句都没看到,所以下面大概介绍一下针对MySQL、msSQL、Oracle等主流关系型数据库的手工注入.

MySQL

图13

http://192.168.115.131/cat.php?id=1′

直接在参数后面跟上’,或者\,如果没有合理过滤,是会报语法错误的,不信你看看图13.

http://192.168.115.131/cat.php?id=1%20and%201=2%20union%20select%201,user(),3,4

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读