WEB渗透实验-“又见DZ,我能拿你怎么办”-实验记录

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ai_64/article/details/90751058

WEB渗透实验-“又见DZ,我能拿你怎么办”-实验记录


感谢以下作者的解题思路
https://bbs.ichunqiu.com/thread-1953-1-1.html    独狼1927 


题目介绍:
本题是CTF大本营->竞赛训练营-> DZ漏洞 分类 的一道高级题目,是一道综合度很高的渗透题,涉及的知识面也广。实践并掌握本题中的所有知识点,对渗透测试的基本理解有很大帮助。

本题要求渗透的站点是大名鼎鼎的DZ(6.0版本)。
百度可知DZ6/7版本存在投票注入漏洞,需要使用工具自行完成SQL注入。


本实验关键点有3个(按实验步骤顺序列出): 
第一个:利用版主账号注入攻击得到管理员密码
第二个:爆破DZ6的驾驶证后4位
第三个:插入木马到模板,并找到模板所在位置拿shell。
按部就班做即可完成任务。
 


  

  

此实验只有一道题目:
获得目标服务器C盘下flag文件信息。

——————————————————————
步骤开始:

首先打开浏览器看看论坛的页面(收集信息)。

论坛为DZ6.0较老的版本。

百度可知DZ6/7版本存在投票注入漏洞,需要使用工具自行完成SQL注入。

大致浏览一下,发现论坛的标题是一句话木马,点击右上角的会员可以看到论坛已注册的会员有4人。

尝试登陆test1成功,发现test1会员存在弱口令,且无安全问题限制,用户名test1,密码test1。

登录后发现,test1是版主身份。利用版主身份,发起投票。

发起投票后,点击查看投票详情,在投票详情页面点击编辑。

重头戏来了,根据前面收集的DZ6漏洞信息可知,投票编辑页面存在SQL 报错注入。

在Burp的Repeater模块,将payload插入其中,具体见图。

PAYLOAD
name="polloption[1' or updatexml(1,concat(0,(select concat(username,password) from cdb_members limit 0,1)),0) or  ''=']"


A.B.C三个位置都可以注入,我这里选择A.happy位置注入。

在happy的上两行,有name=xxx,将payload语句替换到此处。
并将A.HAPPY  这一行内容清空。具体如图。


特别注意,最后面的等号前是两个单引号,后面是一个单引号。


根据burp回显,可以发现,payload利用了报错注入。

(可跳过)补充内容开始:——————————
报错注入原理:利用错误回显,通过floor()、updatexml()等函数将要查询的内容输出到页面上。
    第一步:判断是否存在注入点
    在url后面加一个标点符号,页面必须返回错误。
    第二步:可以将url交给Sqlmap自动化处理,获得整个数据库。
    若想手动尝试可以尝试构造:
    攻击者期望使用SQL语句: select * from where 'id'=1 ' and updatexml(1,concat(0x70,(select user()),0x7e),1)--+
    
    攻击者构造url:www.target.php?id=1 'and+updatexml(1,concat(0x7e,(select+user()),0x7e),1)--+
    上面的url可以获得当前操作数据库的user
    
    攻击者构造url:www.target.php?id=1 'and+updatexml(1,concat(0x7e,(select+database()),0x7e),1)--+
    上面的url可以获得当前数据库的名字

    攻击者构造url:www.target.php?id=1 'and+updatexml(1,concat(0x7e,(T-SQL语句),0x7e),1)--+
    知道数据库名字后,利用information_schema库,可以获得任意信息。
补充内容结束:——————————————————

上图的hash并不完整。
调整payload即可获得完整的32位hash。

hash破解之后的明文是whoami!@#123

利用用户名: admin,密码:whoami!@#123,登录dz论坛。密码验证通过后,提示输入安全问题。可是安全问题我们不知道,并且安全问题回答最多允许错误5次。此处是一个难点。

安全问题在数据库中经过加密处理,故用注入语句查询出来的值为加密后的散列值。它保存在表cdb_members中,字段叫secques,它就是我们要获取的值。

调整payload即可获得 secques的值。61A55235.
tips: 0x7E是 ~符号。

本地实验开始:————————

在本地搭建DZ6,admin登录后,直接设置第七个安全问题:我的驾驶证后四位,答案:随意填一个四位数。
然后将打开本地数据库,将本地dz库中的secques中的值改为61A55235。

最后将本地DZ论坛的登录限制干掉。我这里设置成5W次错误锁定。

如此一来我们就可以在本地爆破DZ的安全问题。

爆破需要字典,字典生成工具,可以用这个。 

使用burp暴力破解后可知,驾驶证后4位为9595。

本地实验结束————————————————————————————


实验进入了尾声。
使用用户名:admin,密码:whoami!@#123,驾驶证后四位:9595,成功登录论坛,点击右上角系统设置。按图一步步插入一句话木马。
 

 
 

菜刀连接地址: http://www.test.ichunqiu/templates/default/customfaq.lang.php
双击测试是否能连接成功。
 


显然,木马已成功执行。
使用命令快速找flag文件。
 


TIPS:输入dir /s,可以显示出目录和所有子目录中的文件。输入dir /s/p,可以分屏显示出目录和所有子目录中的文件。
Flag为 7hc9n2m3 。
回答问题:

至此实验结束。

补充内容:
DZ 问题答案加密源码实现:

对questionid进行MD5:
MD5(7)= 8f14e45fceea167a5a36dedd4bea2543

下一步,将安全回答的值跟加密后的7进行字符串连接:
95958f14e45fceea167a5a36dedd4bea2543

下一步,将这个值再进行MD5:
MD5(95958f14e45fceea167a5a36dedd4bea2543)= b399d3c744128d6a61a5523577d26479
复制代码
再取第17到24位的8位密码:
61a55235

实验小结
本实验内容较多,平时要多注意积累常见CMS的漏洞,投票漏洞是DZ6、7的通用漏洞,是一个经典漏洞。
爆破字典生成器有很多,如果需要结合社会工程学来生成字典,可使用亦思想社会工程学字典生成工具。
 
本实验的步骤可以总结分三步,
获取网站admin密码,本地爆破安全问题,上传木马获得shell。

本题的解题过程较为繁琐,耗时也比较长,需要具备耐心和熟练利用报错注入。如果可以将所使用到的技巧熟练掌握,将对渗透学习帮助很大。
 

猜你喜欢

转载自blog.csdn.net/ai_64/article/details/90751058