服务器渗透测试练习(part5:发掘漏洞(2))

#0:挖掘密码

上一次是通过注册获得的session,这次就看一下登录页面有没有什么可以发掘的漏洞。打开登录页面,输入上一次注册时用的账号密码,点击登录,发现跳转到了和昨天一样的主页面,我们注销,然后再登录一次,但是要先把Burp suite打开并设置浏览器的代理,来看看能不能捕捉到登录请求。

发现捕捉到的是明文的账号密码,也就是说无法通过修改请求的方法来在不知道密码明文的情况进行登录。

真的吗?还需要进一步验证,点击放包,页面并没有加载,回到Burp suite,发现又捕捉到一个请求。

诶,这里是密码的哈希值,也就是说,在之前的那个页面只是将密码进行处理,验证是另一个网页的工作。那么,我们可不可以尝试一下修改请求呢?

将请求的两个参数分别改为之前看到的xml文件中root的账号和密码,点击放包。

好的,我们拿到了网站的管理权。

#1:爆破密码

但是现实中可能没有那么简单,有可能只能捕捉到明文,所以想要登录别人的账号,还需要破解密码(这里需要将网页更改一下,将logcheck.php上面的get_real_ip函数和下面的第一个if语句(if(isset($_POST["un"]) && isset($_POST["pwd"])))内部的内容分别复制到login.php的开头和将信息发送到logcheck页面(最后一个echo)之前的位置,并将最后一个echo删掉,但是别忘了在使用完密码爆破后将其复原)。Burp suite有提供密码爆破,但是速度要看情况,如果密码强度大的话,有可能几个月甚至几年都无法爆破,但是其他的密码破解软件也差不多。

这里我使用Burp suite进行密码爆破(当然你也可以用John The Ripper之类的软件进行爆破,但是为了方便,笔者没有打开过多软件)。

登录页面,账号输入root,密码随意输一个,提交,返回Burp suite,点击行动->发送到Intruder,然后前往测试器选项卡,点击位置选项卡,类型设置为攻城锤(Battering ram),然后点击下方的清除,手动框选pass=后面刚刚随便输入的部分,点击添加,转到有效载荷选项卡,设置类型为蛮力(如果有密码字典的可以使用字典)字符集默认,最短4,最长6(其实还应该更长,但是用的时间也会变得更长),点击开始攻击。

耐心等待一段时间,然后查看结果。一般正确的密码和错误的密码反馈结果的长度不同,所以点击长度选项,以此来进行排序(如果出现的结果是一样的,那么再点一下,因为长度也可能比其他的小,反正就是这个地方会不一样)。

如图,我们成功的找到了root账号的密码(但是现实中是不可能这么简单的,这是一个很短的密码,由小写字母、大写字母和数组组成的一个六位数密码会耗费数天时间)。

#2:获取cookie

之前提到了会有session这个东西,但是查看浏览器会发现说网址使用了0个cookie,那么也就是说cookie是保存在服务器上的。还是用read页面验证一下吧。在经过多次尝试后,我们知道了服务器将cookie储存在tmp子目录下,文件名是session@+IP地址.txt。

这是我们刚刚使用抓包的方式登录root账号时留下的,第一行暂时不知道是什么,第二行是账号名,第三行是权限,第四行是IP地址。复制这些信息,回到主页面,点击注销,重新登录我们自己注册的账号,新建文档,文件名为..\tmp\session@你的IP地址,类型为txt,标题随意,内容为我们刚刚复制的内容,点击提交。如果距离使用root账号登录的时间不是很长,那么你会发现主页面的提示已经变成root账号的提示了,如果时间较长了,那么会有登录过期的提示,那么我们可以猜测第一行的是登录时间(具体是什么格式的时间还需要多次尝试才能知道,但是这里应该是Unix时间戳)。如果因为登录过期被强行注销了,那么就重新以自己的账号登录,新建文档,文件名为time,类型为txt,标题随意,内容为

<script>var time=new Date();var utime=time.getTime();alert(utime)</script>

然后在返回主页面的时候就能看到提示(因为txt设定是有预览的,从而执行了JS代码),如果点击链接进入read页面,也会看到一个提示框,里面就是我们要的东西,复制,然后返回主页面,新建文档,与上面的session文件输入一样,但是把第一行改为刚刚复制的时间,提交保存,返回主页面,发现已经以主管身份登陆了。

这篇文章简单讲解了提高权限的方法,下一篇文章将利用我们之前找到的漏洞进行一些别的操作。

posted @ 2021-02-28 17:17  awcyvan  阅读(69)  评论(0)    收藏  举报