0x00 前言
常规的登录口渗透的方法,比如
web类:扫目录,弱口令,万能密码;
逻辑类:密码重置,短信轰炸,验证码可重复利用,验证码逻辑缺陷;
框架类:shiro rememberMe,webpack;
接口类:swagger ui,springboot env WebService wsdl等
以上这些都测试未果,那么就可以参考下面的内容
0x01 思路
事到如今,我也不再隐瞒。决定拿出我的终极杀手锏!
现在大家日站,面对登陆口是不是非常难受,没有思路,无从下手,那么当你看到这篇文章的时候,就会多出一个骚思路。
首页,登陆页面肯定有很多的js文件,那些这些js是否有可利用的价值呢?
比如常规的js文件,如登陆js之类的,这些代码格式比较容易观看,但相对的内容较少
但下面这个,特么的这什么玩意,乱七八糟的,给狗,狗都不看,但是,就是这些东西,决定着你能不能让甲方爸爸直呼牛逼的方法
其实这里面有可能存放是后台地址的api,比如这个
/crmpm/product/supplierList
如果说这个api未做权限校验,是不是收获到了未授权漏洞。
0x02 脚本
这么多的api,要怎么收集呢,自己写了一个简单的提取代码
脚本1 提取网站api
import re import requests # 匹配 HTTPS 网页中的 JavaScript 中的 API 路径 url = "http://127.0.0.1/test.js" response = requests.get(url) list = ["(/[a-z][a-zA-Z]+)+","(/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+)+","(/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+)+","(/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+/[a-z][a-zA-Z]+)+"] for api in list: pattern = re.findall(api,response.text) print(pattern)
大致意思就是从网站中的js读取内容,然后正则匹配内容
这里的list写了四个,分别代表一级路径,二级路径,三级路径,四级路径,如果有五级,就在后面加上就可以了,多个js可以自己加个循环,或者手动修改
这样就把这个js里的api地址全部提取出来,然后把list里的api单独取出来到txt里
这里就把上面的list数据放到一个list里,当作二维数组,中间加个,
脚本2 处理api格式
list =[['/teamwork', '/group'],['/setup/teamwork', '/setup/teamwork', '/setup/client'],['/setup/teamwork/group', '/crmpm/part/operatePart', '/crmpm/part/editPart'],['/business/message/query/redot', '/docx/zip/pdf/xls', '/rp/ppt/pptx/pptm', '/business/report/message/detail']] for path in list: for api in path: print(api)
把上面的api放到uri.txt里,然后再把api 和 域名拼接,获取状态码
脚本3 拼接路径
import requests url = "http://127.0.0.1" for api in open("uri.txt"): uri = api.strip("\n") all_url = url+uri text = requests.get(all_url) if text.status_code == 200: print(all_url)
脚本4 获取网站响应包
# 获取200对应链接的相关内容,是否存在未授权等 for uri in open("2.txt"): url = uri.strip("\n") req = requests.get(url) print(url +"\t\t"+req.text)
0x03 实战未授权挖掘
首页是一个登陆口,查看源代码发现就存在几个js文件,然后通过脚本1 爬取js
然后拼接路径
发现有两个接口返回的数据比较多
访问接口,发现成功访问后台页面的功能,也可以进行修改,添加,测试
然后组合拳,未授权+文件上传jsp,getshell。