一、前言
Webug定义为“我们的漏洞”靶场,基础环境基于PHP/MySQL搭建而成,整个web环境装在了一个纯净版的Windows Server 2003的虚拟机中。
此靶场包含了常见的漏洞,较为全面。
本次大实验基于Webug3.0版本的渗透基础部分。由于环境已经搭建完毕,在网上直接下载压缩包,解压后,在浏览器输入虚拟机的IP地址即可开始闯关测试。
(不过,使用过程中,还是发现了一些配置以及环境不完善的问题)
二、实验过程
1.第一关:很简单的一个注入(普通的GET注入)
(1)既然说了是GET注入,那就从参数gid入手,单引号报错,说明需要闭合单引号来完成注入
(2)提交 1' or '1'='1 会显示出所有信息
(3)使用order by 语句猜解这个数据表有多少个字段,这里从5个字段开始,若报错则说明没有这么多字段,若显示正常则说明字段数小于等于当前输入字段数,可通过二分法快速缩小范围,通过尝试,得出有4个字段数(输入参数为: 1' or 1=1 order by 5-- ' )
(4)使用联合查询union select,目的是观察这四个字段数显示在页面的什么位置
(5)查询数据表名称,参数为:
1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema = database() -- '
(6)猜测flag在flag数据表中,查询该数据表中的字段名,参数为:
1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name = 'flag' -- '
(7)union select 语句直接查询得到flag值,完成(参数为: 1' union select 1,2,3,flag from flag -- ' )
2.第二关:从图片中你能找到什么?(从图片中找到有用的信息)
(1)从图片中能找到什么?感觉应该是数据隐藏在图片中,那就直接binwalk进行一下文件分析,果然藏了一个压缩包文件
(2) binwalk -e 123.jpg 提取其中的文件,得到一个txt文件
(3)txt中只有“密码123”这几个字,作为flag进行提交,显示flag错误。
(4)用vi编辑器打开该图片,发现有“123.txt”字样,估计指的就是txt文件,除此以外,并没有发现其他flag线索
(5)后来在网上搜了一下,网上说这道题有bug。。。那就只能放着了。。。
3.第三关:你看到了什么?(渗透网站的时候目录也很重要)
(1)直接告诉flag,当然不相信。。。
(2)题目提示说“渗透网站的时候目录也很重要”,那就直接枚举一下网站的目录吧(这里用的工具是OWASP_ZAP),对当前目录san/下进行试探爬取
(3)发现下图这个目录有些奇怪,打开后,居然直接得到了flag
(4)注:后来在页面的源代码发现注释也给出了“扫描目录”的提示
4.第四关:告诉你了FLANG是5位数(当遇到五位验证码的时候可以爆破)
(1)随意输入用户名和密码,提交后出现下图界面
(2)提示很明显,直接爆破,利用BurpSuite对用户名和密码进行暴力破解
(3)拿到用户名和密码分别为“admin”与“admin123”,显示login success
(4)不过有点疑惑,并没有看见flag,而且这次的爆破跟“FLANG是5位数”有啥关系。。。
注:之后看了下服务器上的源代码,爆破的思路是对的,但是flag被注释掉了,额,是题目没出好吗。。。
5.第五关:一个优点小小的特殊的注入(头部的一个注入)
(1)头注入的方法和位置的主要关注点在:X-Forwarded-For、User-Agent、Referer这几个地方,抱着“但愿没有注入防护”的想法,对这几个地方都进行了简单的注入测试,发现X-Forwarded-For存在注入
(2)之后的注入测试与第一关基本相同,这里给出最后的注入结果
6.第六关:这关需要RMB购买哦(支付问题:用最少的钱去购买)
(1)又是需要用户名密码登录,试着SQL注入登录一下,没想到居然真的绕过了,可是,没法做题。。。
注:后来上网查了才知道,原来这一关的用户名和密码写在了第七关那,这是啥操作。。。
(2)试着购买了一下,发现会被扣除相应的金额
(3)题目的意思是“用最少的钱去购买”,感觉可能存在逻辑漏洞或者服务器不验证数据的情况,用BurpSuite抓了下包,发现还真是如此,每本书的价格和数量都一起通过POST方式提交给了服务器,而服务器那边并没有进行进一步的验证
(4)那就直接在BurpSuite上修改数据(将价格全部修改为0),再Repeater给服务器
(5)既然金额为0(不用花钱)能买书,那。。。把金额改成负数,是不是意味着厂家还可以倒贴给我钱呢。。。
好吧,看来还是有限制的。。。
7.第七关:越权(已有账号:tom 密码 123456)
(1)登录后,进入如下页面,单击更改密码链接,进行密码修改
(2)发现当前账户的用户名是以GET传参到change.php界面,尝试直接将name的值修改为admin,随意输入一个旧密码,接着设定新密码,点击更改密码。居然成功修改,看来,不仅网页的访问没做限制,服务器那边也没做任何的验证。
(3)用admin账号和修改过的密码进行登录,可以成功登录
8.第八关:CSRF(管理员每天晚上十点上线!)
(1)界面与上一题较为相似,CSRF,要求进行跨站请求伪造
(2)模拟一个修改密码的页面诱导管理员点击页面,达到修改密码的目的,这里用BurpSuite抓包,然后构造一个页面
(3)将页面保存为html代码,就可以发给管理员了(不过显然是没法进行下去了,毕竟内网里没有WeBug管理员。。。),这道题的目的应该是制造CSRF的过程以了解CSRF。
(4)不妨把管理员要做的事也做了。。。看看是如何上当的。
点击BurpSuite里的“Test in browser”,发现弹出的页面仅仅是一个提交按钮,若是出于好奇,不小心点击了一下,新密码就被成功提交修改了
9.第九关:URL跳转(能不能从我到百度那边去?)
(1)界面与之前一致,登录后,功能仍为修改密码
(2)既然是URL跳转,估计是需要在某个地方插入网址
(3)在每个页面的地址栏都试了一遍,最后发现,在登录界面加了个url参数可以成功跳转
10.第十关:文件下载(根据提示下载需要的文件)
(1)404???
(注:上网查询发现,源码里url跳转有问题,把原来的跳转修改成download.php就可以)
(2)跳转到正常网页后,title提示帮管理员找回mysql账号密码
(3)点击下载图片,显示图片不存在,但是显示的结果也暴露了整个网站的目录情况。
结合“根据提示下载需要的文件”以及url地址栏上的fname参数,猜测可能是文件包含漏洞
(4)dirbuster暴力枚举一下/pentest/test/6/1/下的内容,发现/db目录下有一个config.php文件,猜测可能为mysql配置文件
(5)尝试构造路径,最终通过包含如下路径,下载得到config.php,拿到账号密码
11.第十一关:我和上一题有点像(boom,沙卡拉卡!)
(1)确实挺像,点击下载后,依然是无法找到文件,但是注意到url地址栏没有带参数。
猜测上一题通过GET方式提交,而这一题通过POST方式提交
(2)BurpSuite抓下包,发现确实是通过POST方式提交
(3)那么,接下来步骤跟上题一样,扫描得到db目录下存在config.php文件,在BurpSuite上修改POST的pic参数为 ../../../pentest/test/7/1/db/config.php ,Repeater后,得到了包含用户名和密码的Response
12.第十二关:我系统密码忘记了!(请帮我找回在D盘下。)
(1)登录后,是一个文件上传界面,随意上传一个文件,发现会回显上传到服务器的具体路径
【注:由于虚拟机win server 2003(服务器)的重启,IP地址发生了变化】
(2)接下来的思路是,用kali上的weevely工具生成php后门,上传到服务器上,之后,kali连接后门,到D盘下找寻密码文件
(3)确实成功连接了,也获取了windows的一些信息。
但是cd到D盘发现,没有任何内容。。。去服务器上看了一下,D盘是驱动器。。。额。。感觉是找不到密码了
注:后来上网查了大神的解决方法:如果只是为了得到密码,可以用“中国菜刀”上传一句话木马,再通过mimikatz神器(此神器可获取windows处于active状态账号的明文密码)得到管理员密码。之前win7虚拟机里装有“菜刀”,不过一直无法连接服务器,又换了好几个版本的“菜刀”,依然“无法连接服务器”。。。不晓得是啥原因,可能是菜刀失灵了,这一题只好先到这了。
13.第十三关:XSS(看看你能给我带来什么惊喜)
(1)进入界面后,只有一个链接,点击后,url地址栏出现了id这个参数,除此以外,无其他变化
(2)改id值为999,发现页面第一行也直接呈现出999字样(当输入中某个参数的全部或其中一部分,原封不动地在源代码里出现时,就可认为这个参数存在XSS漏洞)
(3)因此直接修改id的值,果然弹框了
14.第十四关:存储型XSS(suprise!)
(1)既然题目是“存储型XSS”,界面呈现出的又是留言功能,那直接在留言区写下