├── .gitattributes
├── README.md
├── jwt认证攻击.md
└── test.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
实战社工库搭建 solr架构 python开发查询页面
2 |
3 | ## 0x前言
4 |
5 | 之前就在坛子里和大家交流了下搭建裤子的问题,本来还以为估计要被喷死,没想到大家还是挺友好的,多谢理解。之前一直有ctf比赛 acm训练赛 之前本来和404约好8月初弄好的结果一下子到26号才开始弄,现在差不多了,后面就是导入数据和扩容 移植ssd的问题了(数据量大再过滤)
6 |
7 |
8 |
9 | ## 0x吐槽
10 |
11 | elk的查询速度其实是比solr要好的 tools里面也有大佬分享了这个教程[elk搭建社工库](https://www.t00ls.net/viewthread.php?tid=32593&highlight=%E7%A4%BE%E5%B7%A5%E5%BA%93) 当时看了下 感觉硬盘要求有点高 而且是企业级的 后来在freebuf看到[技术分享:如何用Solr搭建大数据查询平台](http://www.freebuf.com/articles/database/100423.html) 这个文章 当时看到java tomcat 什么的 自己作为ctf一个web选手平时都没本地玩过 就耐着性子弄下去了。
12 |
13 | ## 0x正文
14 |
15 | 环境:Mac pd虚拟机ubuntu16.04 安装mysql solr5.5.5 java8
16 |
17 | 具体安装过程:参考上面的链接
18 |
19 | 其中有些细节参考下评论区来解决 (感觉solr还是low 不建议去安装 不过我已经入坑,分享经验)
20 |
21 | 安装好后 做个优化
22 |
23 | solr开机自启动(方便做增量更新)
24 |
25 | 按照上面那个教程 成功从mysql导入到solr中
26 |
27 | 然后solr有web的查询接口:
28 |
29 | ```
30 | http://10.211.55.6:8983/solr/solr_newsgk/select?q=keyword:xq17&start=10&rows=100&wt=json&indent=true
31 | ```
32 |
33 | 返回的是json格式的数据 很方便
34 |
35 | 然后我们只要本地写个查询web就行了 作者后面也给出了java和solr内置接口的代码 看起来比http要
36 |
37 | 快. 不过我最近买了本<>比较薄的一本书还有bootstrap详解 然后干脆用这两个来锻炼下
38 |
39 | python开发能力。
40 |
41 |
42 |
43 | 
44 |
45 | ssbootstrap简单写了下模版:
46 | 
47 | 然后前端差不多弄好了,然后后台对key字段做了一些处理,比如对非纯数字字符加*达到精确查询的效
48 | 果。
49 |
50 | ##0x 导入数据 清理数据
51 |
52 | 这里我采用某盟89w会员数据作为测试。 后期就是清理各种数据 导入的问题了 诚请教大佬们技巧
53 |
54 | 首先得到的是一个sql数据. 我直接在naviat 转储数据结构 然后把sql还原 然后再导出向导 把id字段去掉
55 |
56 | 这个时候就得到了一个比较规则的insert语句了
57 |
58 | 然后把本来那个cdb_uc_member字段替换为````b41new`(username,password,email,salt)```
59 |
60 | 然后再navicat sgk这个数据库那里右键运行sql文件 直接导入89w数据 然后sql update 添加
61 |
62 | 来源 (ps:感觉自己做的有点多余,有数据清理导入数据的大佬求指点)
63 |
64 | 
65 |
66 | 做完这一步之后,接下来就是全量导入数据的问题了
67 |
68 | 
69 |
70 | 接近90w条 导入花费了1min 42秒 这个速度的话导入1亿需要2*100=200/60=3.3小时
71 |
72 | 要是用固态会好很多估计 虚拟机感觉跑的有点吃力 solr只要存好配置 很简单就可以在移植到另外
73 |
74 | 一个平台 等数据量大了 我就去听画船师傅那样去搞个树莓派 弄个流弊的ssd 大出血。
75 |
76 |
77 |
78 | ## 0x效果
79 |
80 |
81 |
82 | 
83 |
84 | 这个0秒其实没那么快 是因为做了缓存的缘故 第二次才会那么快 一般都是几秒.
85 |
86 | 这里我分享下数据库结构
87 |
88 | ```
89 | `id` bigint NOT NULL auto_increment,
90 | username varchar(255),
91 | email varchar(255),
92 | password varchar(255),
93 | salt varchar(255),
94 | ip varchar(255),
95 | iphone varchar(255),
96 | wechat varchar(255),
97 | idno varchar(255),
98 | realname varchar(255),
99 | site varchar(255),
100 | updatetime timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
101 | PRIMARY KEY (id)
102 | ```
103 |
104 | 因为手头有一些校花的数据 微信 手机号 真实姓名就把这个字段弄进去 个人感觉没啥用 浪费前端位置
105 |
106 | 后期考虑加个隐藏窗口(目的:学习bootstrap的js技巧啦) 美女啥的不在乎
107 |
108 | ## 0x增量更新
109 |
110 | 增量更新solr很简单参考上文文章和网上的教程
111 |
112 | 上面我也给出了updatetime这个字段
113 |
114 | 按照文章配置:
115 |
116 | db-data-config.xml
117 |
118 | 这个文件就行了
119 |
120 | 后面就可以选择直接get更新或者
121 |
122 | 自己手动去(我就是手动的哈 自动啥的不存在的我电脑 又不是挂机的,树莓派后期考虑下)
123 |
124 | 
125 |
126 | 这里我的表没有更新数据 所以就没数据可以进行索引。
127 |
128 |
129 |
130 | ## 0xEnd
131 |
132 | 这个东西是个长期维护的过程,清理数据和整理数据导入,还有对solr进行优化 达到更快的要求 都是我
133 |
134 | 接下来空闲的时候去思考的。
135 |
136 | 后面对小七论坛 还有 网易x箱 进行 数据清洗 这个挑战有点大 合起来差不多100g了
137 |
138 | 弄好的话maybe可以分享下清理的思路(本菜鸡都是切割出来丢服务器慢慢跑脚本哈哈 50g硬盘)
139 |
140 | ## 0xTODO
141 |
142 | 吗的。为啥我没入elk的坑呢 我是土豪啊。。。。。。
143 |
144 | 算了还是十几万的车,我适合开
145 |
146 | ps:我感觉solr的搭建过程还是比较简单的 几个小时就能从一无所知到修修改改
147 |
148 | 由于web查询页面写的太垃圾 避免被同学嘲笑 故不开源 等后期 弄清楚flask开发 完善下再考虑丢
149 |
150 | githud。
151 |
152 |
153 |
154 | tools论坛好像不支持外链(图片挂的话请直接访问githud):
155 |
--------------------------------------------------------------------------------
/jwt认证攻击.md:
--------------------------------------------------------------------------------
1 | (1)解密链接:
2 |
3 | (2)参考链接:
4 |
5 | 1.jwt 全称: json web token
6 |
7 |
8 |
9 | 掌握知识点:
10 |
11 | (1)http是无状态的
12 |
13 | (2)session两个弊端:
14 |
15 | 1.session保存在服务端,占用服务端空间
16 |
17 | 2.服务端为集群时,将session保存到服务器内存中,当用户访问到其他服务器时,会无法访问
18 |
19 | 解决办法:缓存一致性技术 或者 第三方缓存
20 |
21 | (3) jwt 在header的位置 cookie 或者header Authorization: Bearer
22 |
23 | (4) 第二部分base64不能解密 很可能是缺少= 没有填充满
24 |
25 | 1.jwt的构成
26 |
27 | (1)Header eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
28 |
29 | (2)Payload eyJhZG1pbiI6InRydWUifQ
30 |
31 | (3)Signature eyJhZG1pbiI6InRydWUifQ.03jOKnTqOkqP7gzd1rxaIy4wQSntb18yg2noERrVhUU
32 |
33 |
34 |
35 | Example:
36 |
37 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6InRydWUifQ.03jOKnTqOkqP7gzd1rxaIy4wQSntb18yg2noERrVhUU
38 |
39 |
40 |
41 | 一.header
42 |
43 | {
44 |
45 | "alg": "HS256”, 加密签名的散列算法
46 |
47 | "typ": “JWT” 令牌类型
48 |
49 | }
50 |
51 | 二.payload
52 |
53 | Data 包含声明的有效负载 声明:关于实体(通常是用户)和其他院数据的声明
54 |
55 | {
56 |
57 | "admin": “true”
58 |
59 | }
60 |
61 | 三.Signature
62 |
63 | HS 256 (HMAC SHA256)
64 |
65 | HMACSHA256(
66 |
67 | base64Encode(header)+”.”+base64Encode(payload),secret
68 |
69 | )
70 |
71 |
72 |
73 | 二.JWT的攻击手段
74 |
75 | 1.算法修改攻击
76 |
77 | 原理: 头部的alg可被修改 若公钥泄漏 后台通过alg选择验证算法 可以把rs256(非对称加密)->hs256(对称加密)进行伪装
78 |
79 | 2.秘钥可控
80 |
81 | header{
82 |
83 | “type”:”jwt”,
84 |
85 | “alg”:”sha256”,
86 |
87 | “kid”:”8201"
88 |
89 | }
90 |
91 | Kid可以注入 然后获取key进行加密
92 |
93 | 3.秘钥爆破问题
94 |
95 | 工具:https://[github.com/brendan-rius/c-jwt-cracker](http://github.com/brendan-rius/c-jwt-cracker)
96 |
97 | 然后即可进行消息的恶意伪造,篡改
98 |
99 | 4.指定算法为none
100 |
101 | 原理:有些实现jwt的库直接将使用none算法的token认为是已经过检验的
102 |
103 | 利用:”alg”:”none” signature部分为空值即可
104 |
105 |
106 |
107 | 三.JWT实战分析
108 |
--------------------------------------------------------------------------------
/test.md:
--------------------------------------------------------------------------------
1 | 实战社工库搭建 solr架构 python开发查询页面
2 |
3 | ## 0x前言
4 |
5 | 之前就在坛子里和大家交流了下搭建裤子的问题,本来还以为估计要被喷死,没想到大家还是挺友好的,多谢理解。之前一直有ctf比赛 acm训练赛 之前本来和404约好8月初弄好的结果一下子到26号才开始弄,现在差不多了,后面就是导入数据和扩容 移植ssd的问题了(数据量大再过滤)
6 |
7 |
8 |
9 | ## 0x吐槽
10 |
11 | elk的查询速度其实是比solr要好的 tools里面也有大佬分享了这个教程[elk搭建社工库](https://www.t00ls.net/viewthread.php?tid=32593&highlight=%E7%A4%BE%E5%B7%A5%E5%BA%93) 当时看了下 感觉硬盘要求有点高 而且是企业级的 后来在freebuf看到[技术分享:如何用Solr搭建大数据查询平台](http://www.freebuf.com/articles/database/100423.html) 这个文章 当时看到java tomcat 什么的 自己作为ctf一个web选手平时都没本地玩过 就耐着性子弄下去了。
12 |
13 | ## 0x正文
14 |
15 | 环境:Mac pd虚拟机ubuntu16.04 安装mysql solr5.5.5 java8
16 |
17 | 具体安装过程:参考上面的链接
18 |
19 | 其中有些细节参考下评论区来解决 (感觉solr还是low 不建议去安装 不过我已经入坑,分享经验)
20 |
21 | 安装好后 做个优化
22 |
23 | solr开机自启动(方便做增量更新)
24 |
25 | 按照上面那个教程 成功从mysql导入到solr中
26 |
27 | 然后solr有web的查询接口:
28 |
29 | ```
30 | http://10.211.55.6:8983/solr/solr_newsgk/select?q=keyword:xq17&start=10&rows=100&wt=json&indent=true
31 | ```
32 |
33 | 返回的是json格式的数据 很方便
34 |
35 | 然后我们只要本地写个查询web就行了 作者后面也给出了java和solr内置接口的代码 看起来比http要
36 |
37 | 快. 不过我最近买了本<>比较薄的一本书还有bootstrap详解 然后干脆用这两个来锻炼下
38 |
39 | python开发能力。
40 |
41 |
42 |
43 | 
44 |
45 | ssbootstrap简单写了下模版:
46 | 
47 | 然后前端差不多弄好了,然后后台对key字段做了一些处理,比如对非纯数字字符加*达到精确查询的效
48 | 果。
49 |
50 | ##0x 导入数据 清理数据
51 |
52 | 这里我采用某盟89w会员数据作为测试。 后期就是清理各种数据 导入的问题了 诚请教大佬们技巧
53 |
54 | 首先得到的是一个sql数据. 我直接在naviat 转储数据结构 然后把sql还原 然后再导出向导 把id字段去掉
55 |
56 | 这个时候就得到了一个比较规则的insert语句了
57 |
58 | 然后把本来那个cdb_uc_member字段替换为````b41new`(username,password,email,salt)```
59 |
60 | 然后再navicat sgk这个数据库那里右键运行sql文件 直接导入89w数据 然后sql update 添加
61 |
62 | 来源 (ps:感觉自己做的有点多余,有数据清理导入数据的大佬求指点)
63 |
64 | 
65 |
66 | 做完这一步之后,接下来就是全量导入数据的问题了
67 |
68 | 
69 |
70 | 接近90w条 导入花费了1min 42秒 这个速度的话导入1亿需要2*100=200/60=3.3小时
71 |
72 | 要是用固态会好很多估计 虚拟机感觉跑的有点吃力 solr只要存好配置 很简单就可以在移植到另外
73 |
74 | 一个平台 等数据量大了 我就去听画船师傅那样去搞个树莓派 弄个流弊的ssd 大出血。
75 |
76 |
77 |
78 | ## 0x效果
79 | 
80 |
81 | 这个0秒其实没那么快 是因为做了缓存的缘故 第二次才会那么快 一般都是几秒.
82 |
83 | 这里我分享下数据库结构
84 |
85 | ```
86 | `id` bigint NOT NULL auto_increment,
87 | username varchar(255),
88 | email varchar(255),
89 | password varchar(255),
90 | salt varchar(255),
91 | ip varchar(255),
92 | iphone varchar(255),
93 | wechat varchar(255),
94 | idno varchar(255),
95 | realname varchar(255),
96 | site varchar(255),
97 | updatetime timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
98 | PRIMARY KEY (id)
99 | ```
100 |
101 | 因为手头有一些校花的数据 微信 手机号 真实姓名就把这个字段弄进去 个人感觉没啥用 浪费前端位置
102 |
103 | 后期考虑加个隐藏窗口(目的:学习bootstrap的js技巧啦) 美女啥的不在乎
104 |
105 | ## 0x增量更新
106 |
107 | 增量更新solr很简单参考上文文章和网上的教程
108 |
109 | 上面我也给出了updatetime这个字段
110 |
111 | 按照文章配置:
112 |
113 | db-data-config.xml
114 |
115 | 这个文件就行了
116 |
117 | 后面就可以选择直接get更新或者
118 |
119 | 自己手动去(我就是手动的哈 自动啥的不存在的我电脑 又不是挂机的,树莓派后期考虑下)
120 |
121 | 
122 |
123 | 这里我的表没有更新数据 所以就没数据可以进行索引。
124 |
125 |
126 |
127 | ## 0xEnd
128 |
129 | 这个东西是个长期维护的过程,清理数据和整理数据导入,还有对solr进行优化 达到更快的要求 都是我
130 |
131 | 接下来空闲的时候去思考的。
132 |
133 | 后面对小七论坛 还有 网易x箱 进行 数据清洗 这个挑战有点大 合起来差不多100g了
134 |
135 | 弄好的话maybe可以分享下清理的思路(本菜鸡都是切割出来丢服务器慢慢跑脚本哈哈 50g硬盘)
136 |
137 | ## 0xTODO
138 |
139 | 吗的。为啥我没入elk的坑呢 我是土豪啊。。。。。。
140 |
141 | 算了还是十几万的车,我适合开
142 |
143 | ps:我感觉solr的搭建过程还是比较简单的 几个小时就能从一无所知到修修改改
144 |
145 | 由于web查询页面写的太垃圾 避免被同学嘲笑 故不开源 等后期 弄清楚flask开发 完善下再考虑丢
146 |
147 | githud。
148 |
149 |
150 |
151 | tools论坛好像不支持外链(图片挂的话请直接访问githud):
152 |
--------------------------------------------------------------------------------