服务器渗透测试练习(part4:发掘漏洞(1))
#0:开始之前
因为是自己一个人搭建的网站,所以没有那么多的防护措施,只是一个演示,所以漏洞其实都很明显,与现实不符。但是因为马上要开学了(还是初三毕业班),所以没有那么多时间来编写适当的防护措施。所以看上去会很简单,但是主要是想了解方法,并不一定要特别难,掌握到方法就行了。
之前在搭建网站的过程中都没有放图片,因为赶时间没有截图,但是后面如果没有图片会不方便,所以还是打算把图片放出来。
#1:初步了解
因为是自己搭建的网站,所以会对结构了如指掌,但是现在是以一个攻击者的视角来观察的,所以并不可能知道网站的整个结构,所以要先进行了解。
打开浏览器(我是在Win10上搭建的服务器,现在用的是Kali Linux的虚拟机进行攻击,因为Kali Linux集成了很多工具,会更方便),访问服务器的地址,得到游客的主页面(都是自己写的文章):

初步看来,好像没有什么特别的东西,但是,search字样表明这是一个搜索框,也许会有什么呢?
搜索网站上有的东西对我们帮助不大,那么随便输入一些无序的字符(把手放到键盘上乱敲一通),然后点击search。

输出了提示,中间被引号框住的地方就是我们的输入,也许,网站把输入直接输出了?
为了防止网页在本地先处理了输入后在发给服务器(虽然这里没有,但是攻击者还是谨慎点比较好),我们打开Burp suite,将浏览器代理设为127.0.0.1:8080,重新访问该页面。可以看到浏览器没有反应,而Burp suite已经捕捉到请求了。

切换到参数列表,将in参数改为

然后点击放包,切换回浏览器,发现

说明这里确实有一个问题,但是我们现在不管它,后面再谈如何利用。
回忆一些,刚开始我们看到的index页面有两篇文章,分别是条款和html格式的写作,也许里面有我们需要的线索(因为一般网站让你不要做的都是有可能的突破口)。来看看第一个,条款。

好,我们现在知道了,3、5条的东西可能会有帮助。3条中提到的指导应该就是我们看中的另一篇文章,那么5条呢?它提到了一个奇怪的文件格式,还说是主管自定义的,一般自定义的东西都会有点问题(也有可能没有,谁知道呢?),所以先放在这里,点击3条中的链接,跳到指导

印证了我们的想法,这就是刚才发现的另一篇文章。来看看,2条中说不能使用JS和表单,而4条又说了例外情况,那么就说明它应该不会对创建文章时的内容有太严格的审查,再来看5条和6条,看来想发布恶意脚本应该没什么希望了,但是变通的方法还是有的,也许txt文件包含的html甚至php或asp的标签都能解析,后面再来验证这个。然后还知道xml格式会原样输出,所以不要想用这个来进行攻击,但是可以用来干别的。很多网站都用xml储存数据,也许我们可以找到办法让他输出配置文件或者数据文件,而且还可以看到清晰的文档结构。7、8没什么用,Pass。
等等,观察一下此时的网址,是以明文传输的文件名(虽然即使用POST代替GET就看不到参数了,但是Burp suite还是能够捕捉到信息,所以差不多),我们手动改一下。在网上查找之后,发现大多数用xml储存账号数据的网站,xml的文件名都是AuthInfo,那么我们把name=后的how_to_write_html_doc.XXX改为AuthInfo.xml,访问网址。
很遗憾,文件不存在。但并不是说就没有这个文件,也许我们忽略了什么。等等,网址不大可能会将文章和主页面之类的东西放在一起,所以应该存放文章的是一个子文件夹,而要找的xml文件应该与主页面在同一级文件夹下,那么再来,在AuthInfo.xml前加上"..\",重新加载网址。

果不其然,我们拿到了账号列表。root账号应该是最高级别的账号了(而且后面的permissions也是它最高),所以如果能够弄到他的密码,那么就可以干很多事了。但是文件里的密码全是哈希值,如果密码强度大的话是没法破解的,所以还是先放一下,反正想要的时候随时都能看。
然后我们先去注册一个账号,看一下和游客有什么区别。注册之后就是提示、注销和新建文档按钮不一样。提示没什么意义,注销意义也不大,但是结合刚刚看到的东西,文章里面可以包含能够执行的代码,所以值得一试,这里新建2篇文档。点击新建文档,在名称处分别输入hack1、hack2,类型填写为hak(自己随便取的,为了规避检查),标题随意(其实名字也随意,但是是为了防止冲突和好记),正文部分分别填写如下
###hank1### <button onClick="alert("test!")">test</button>
###hack2### <?php error_reporting(0);echo $_GET["in"];?> <form method="post" name="frm" action=""> 输入: <input type="text" name="in"> <input type="submit" name="sub" value="确定"> </form>
提交后返回index页面,搜索hack,进入两篇文章进行测试,发现没有什么用。但是,hack1可以再改一下,改为
<script>alert("Hack!")</script>
然后重新加载,发现确实输出了提示,那么这里就得到了一个和index页面类似的XSS漏洞。
但是,这和主页面的XSS还不一样,这里可以输入任意长度的JS代码,可以进行重定向,LFI,RFI等等可以执行的攻击手段。
或许有的时候网址会检查输入中是否带有script等标签,那么我们就需要别的方法了。
比如,插入一个超链接,链接到别的服务器上的恶意脚本,或者使用
<img src="test.jpg" alt="" onerror="alert('error')">
指定一个一定不存在的图片,然后利用这种方法执行JS脚本,可以接近完美的躲避网址的审查,毕竟没有网址会阻止用户上传图片。
再看看hack2,好像php的语句根本没有执行,所以这里先放着,以后再来看有没有其他漏洞。
下一篇文章再继续发掘漏洞。

浙公网安备 33010602011771号