-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
2609 lines (2036 loc) · 144 KB
/
Copy pathindex.html
File metadata and controls
2609 lines (2036 loc) · 144 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 6.3.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
<link rel="stylesheet" href="/lib/pace/pace-theme-undefined.min.css">
<script src="/lib/pace/pace.min.js"></script>
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {"hostname":"acindm.github.io","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
</script>
<meta name="description" content="Welcome to the 1/30000 🫧">
<meta property="og:type" content="website">
<meta property="og:title" content="acind の blog">
<meta property="og:url" content="https://acindm.github.io/index.html">
<meta property="og:site_name" content="acind の blog">
<meta property="og:description" content="Welcome to the 1/30000 🫧">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="https://acindm.github.io/">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome : true,
isPost : false,
lang : 'zh-CN'
};
</script>
<title>acind の blog</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<h1 class="site-title">acind の blog</h1>
<span class="logo-line-after"><i></i></span>
</a>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger">
<i class="fa fa-search fa-fw fa-lg"></i>
</div>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="main-menu menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签<span class="badge">4</span></a>
</li>
<li class="menu-item menu-item-categories">
<a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类<span class="badge">0</span></a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档<span class="badge">9</span></a>
</li>
<li class="menu-item menu-item-search">
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
</a>
</li>
</ul>
</nav>
<div class="search-pop-overlay">
<div class="popup search-popup">
<div class="search-header">
<span class="search-icon">
<i class="fa fa-search"></i>
</span>
<div class="search-input-container">
<input autocomplete="off" autocapitalize="off"
placeholder="搜索..." spellcheck="false"
type="search" class="search-input">
</div>
<span class="popup-btn-close">
<i class="fa fa-times-circle"></i>
</span>
</div>
<div id="search-result">
<div id="no-result">
<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
</div>
</div>
</div>
</div>
</div>
</header>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content index posts-expand">
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://acindm.github.io/2024/08/15/%E7%94%B2%E6%96%B9%E6%BC%8F%E6%B4%9E%E7%AE%A1%E7%90%86%E5%BB%BA%E8%AE%BE/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.png.jpg">
<meta itemprop="name" content="">
<meta itemprop="description" content="Welcome to the 1/30000 🫧">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="acind の blog">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/08/15/%E7%94%B2%E6%96%B9%E6%BC%8F%E6%B4%9E%E7%AE%A1%E7%90%86%E5%BB%BA%E8%AE%BE/" class="post-title-link" itemprop="url">甲方漏洞管理建设</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-08-15 14:05:07" itemprop="dateCreated datePublished" datetime="2024-08-15T14:05:07+08:00">2024-08-15</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-24 21:34:51" itemprop="dateModified" datetime="2024-09-24T21:34:51+08:00">2024-09-24</time>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>2.6k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>10 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>个人学习时对安全最原始的近距离接触就是安全漏洞,企业中也不例外。</p>
<p>前段时间就有幸参与并且落地了一些与漏洞管理相关的项目。与个人学习差距较大的地方在于,甲方企业对安全漏洞的最核心最关键需求就是“闭环漏洞”,这里涉及到的不仅是如何发现、如何修复之类技术问题,整体建设的思路、运营的流程、运营与管理流程中业务方与安全方视角的切换,环环相扣,都非常重要。</p>
<p>目前阶段我理解的“安全事件管理与漏洞管理”的终极目标,就是“结果导向,解决问题”。发现问题很重要但不是目的,如何解决问题降低安全风险才是最终目的。忽略对修复结果的追踪、缺少标准化流程来对漏洞状态进行持续管理,会导致修复周期长、漏洞无法闭环等问题。</p>
<h3 id="基础安全建设"><a href="#基础安全建设" class="headerlink" title="基础安全建设"></a>基础安全建设</h3><p>公司最初的安全管理形式是“甩文档,甩表格”,原始低效。最大问题是人工成本太高,尤其是公司资产数量不少,扫描出的漏洞数量也不少,拉群与业务方同学逐个沟通,管理起来比较费劲。而且业务同学普遍在漏洞修复这件事上很不积极(这涉及到企业员工安全意识建设,另开一篇博客说)就导致漏洞修复效率奇低。严重漏洞还比较有压力,修复速度很快,从高危往后的漏洞修复,大家的效率会随着漏洞等级的降低逐级递减。</p>
<p>这时候如果有平台、有机制规范修复的整体流程的话,问题想必会得到很大缓解。好的流程可以让人自觉地进入“管束”状态,对解决问题本身是很有益的。</p>
<p>流程依赖两个必要条件:</p>
<ul>
<li>一个好用的漏洞管理平台<ul>
<li>管理平台可以减少重复的人力劳动,提高安全运营效率。</li>
</ul>
</li>
<li>公司资产管理<ul>
<li>管理公司资产,也可以将发现的安全问题及时给到业务侧修复。</li>
</ul>
</li>
</ul>
<h4 id="漏洞管理平台"><a href="#漏洞管理平台" class="headerlink" title="漏洞管理平台"></a><strong>漏洞管理平台</strong></h4><ul>
<li>报警管理:</li>
</ul>
<p>漏洞管理平台所汇集的信息来源是多方的,包括外部报告(渗透测试、SRC)、HIDS、威胁情报、扫描器。每个报警源低耦合、可插拔、易扩展。</p>
<ul>
<li>漏洞全生命周期管理</li>
</ul>
<p>以上告警信息经人工研判后,需要将有效漏洞导入漏洞管理平台,并将安全问题分发至业务线。可以通过安全调度中心或企业工单等自动化流程分发。</p>
<ul>
<li><p>流程:漏洞发现 ➡️ 漏洞验证 ➡️ 漏洞分发 ➡️ 业务修复 ➡️ 复测 ➡️ 打回/延期/关闭 ➡️ 结束</p>
</li>
<li><p>全程留痕(日志等)</p>
</li>
<li><p>支持表格/图表导出</p>
</li>
<li><p>模版化</p>
</li>
</ul>
<p>常见/常规的漏洞描述、危险描述、修复方案可以模版化存储到漏洞知识库中。</p>
<ul>
<li>权限控制</li>
</ul>
<p>漏洞owner只允许访问自己负责修复的漏洞的信息。做好权限的分类分级。(基于功能模块,基于角色)</p>
<ul>
<li>扩展性与易用性<ul>
<li>与其他平台/流程的打通。(如加入到工单中)</li>
<li>开放API</li>
<li>支持批量操作</li>
</ul>
</li>
</ul>
<p>ps:对于安全侧,定期的数据分析和统计是必要的,常见的例如dashbord页面,实时展示不同统计维度、多种漏洞数据情况,同时漏洞运营的监控指标也可以在这个页面实时显示,便于运营同学及时发现问题。</p>
<p>为什么在业务侧也需要做数据分析,一方面是业务真的有这种诉求(安全意识较高的业务),他们希望了解每季度甚至每月对体系内部的安全风险情况;另一方面从安全的角度,让业务侧能看见这些“触目惊心”的漏洞数据,也是警示和提醒。</p>
<h4 id="资产管理"><a href="#资产管理" class="headerlink" title="资产管理"></a>资产管理</h4><p>安全问题的处理自然离不开业务部门的参与,安全漏洞更需要细粒度到资产属主、定位到人,因此需要具备公司各类资产的全量接口,如:域名、IP、主机名、容器名、实例名等,以及各类资产之间的映射关系查询,以确保安全问题定位的准确性和实效性。</p>
<p>除了上述提到的常见类型资产,指纹库、第三方组件库的建立也是很必要的,尤其是fastjson、struts 2这类安全漏洞爆发时,如何在快速应急也是对安全的考验。 由于资产的动态性,内部梳理是一部分,也需要外部视角的资产探测来做补充,也正是由于资产动态变化这个特性,这往往也是实际工作中的<strong>难点和痛点。</strong></p>
<h3 id="流程"><a href="#流程" class="headerlink" title="流程"></a>流程</h3><p>基础安全建设的前提下,将漏洞管理平台的运行与运营流程结合起来,让整个系统进入良好运转状态。</p>
<ul>
<li>关键点:闭环<ul>
<li><strong>时效性要求</strong>:对于高、中、低不同等级的漏洞有不同的修复优先级和时效性要求。</li>
<li><strong>通知渠道覆盖</strong>:安全平台以工单形式自动化将问题下发至业务,通过邮件、IM、短信等通知渠道将工单状态的变更实时同步至业务和安全。</li>
<li><strong>周期提醒、过期升级抄送</strong>:对业务进行周期性修复提醒,若在规定时间内未修复将安全问题逐级上升至业务侧管理角色,督促整改,确保安全问题处置的时效性保证闭环率。</li>
<li><strong>人工定期review流程</strong>:不断优化迭代运营流程。</li>
</ul>
</li>
</ul>
<p>优化策略:定期的数据统计和分析,可以发现流程和机制上的gap点,及时改进。</p>
<ul>
<li>协同与通知</li>
</ul>
<p>协同的重要作用之一是促进业务方与安全方效率协同,效率协同就需要彼此理解,需要同步安全与业务的认知。</p>
<ul>
<li><strong>从上至下推进</strong>:首先是安全制度层面,明确各类资产、虚拟资源的安全职责,出了安全问题谁来担责(安全制度一定要经过高层review确认和背书,具备权威性)。</li>
<li><strong>明确接口人机制:</strong>在每个业务体系设立安全负责人、安全接口人角色(也需要在制度层面达成一致),有职责和义务配合安全,牵头推进该业务体系安全问题的处理。</li>
<li><strong>OKR协同</strong>:OKR协同机制,将安全任务拆解至业务的OKR里(前提也是需要沟通达成一致),形成“契约”后让业务能主动推进。</li>
</ul>
<h3 id="安全review意识"><a href="#安全review意识" class="headerlink" title="安全review意识"></a><strong>安全review意识</strong></h3><ul>
<li><p>针对外部报告的各种漏洞、情报,甚至是一次突发的应急事件、红蓝对抗等,安全需要对内部各能力线进行审视,内部安全能力是否有覆盖、是否该覆盖、是否能覆盖、资产是否有遗漏、安全能力是否存在gap点、安全流程是否存在改进空间等,需要不断优化迭代内部的安全能力,不断提高纵深防御水平。</p>
</li>
<li><p><strong>风险分析:</strong>漏洞管理起源于漏洞,但绝不止于漏洞。从一个安全漏洞可以深挖的东西很多,如:业务逻辑业务形态是怎样的,他们为什么会出现这类问题,在现有安全需求下出现这类问题是否合理,安全能力还能做什么,发生这个问题的根因是什么、以及背后潜在的可能风险面等等,可以更加发散的来看。</p>
<ul>
<li><p>基于以上两点,举个简单的例子:</p>
<p>比如业务侧被发现存在一个fastjson某个版本的RCE漏洞并且被getsehll了,从这个问题知道业务侧代码大概率是使用JAVA的,那么现在安全能力是否有定期的在进行扫描,是否有被扫描到,如果有被提前扫描到,那么业务侧为什么当时没有修复,是漏洞信息未触达业务还是业务不会修、不能修;</p>
<p>如果内部没有提前扫描出来,那么安全就需要反思排查了,是组件库/指纹库/POC 没覆盖、不准确还是压根这台机器就不在我们的资产库里;</p>
<p>除了扫描的问题,被反弹shell了,websehll检测、HIDS是否有报警,如果没报警是为什么,机器不覆盖还是规则不覆盖还是什么其他原因,若是有报警,为什么安全侧未提前发现,报警功能是否还正常、报警处理流程是否不够高效导致处理滞后….</p>
<p>从业务侧来说,是测试机还是开发机,测试机严格讲是不允许部署在外网的,这说明业务侧开发部署上线流程不规范,至少是存在安全隐患的;</p>
<p>从发现的这一台机器来看,业务侧是否还有别的部署了该版本fastjson的机器,除了fastjson其他JAVA类的组件是否还应该排查;</p>
<p>从整个公司范围来说,单个业务出现这类case,其他业务是否也会有,是否需要进行针对性的排查………</p>
</li>
</ul>
</li>
<li><p><strong>数据分析</strong>:精细化运营少不了对数据的分析解读,对安全来说需要定期查看数据、指标,是否在阈值范围内,近期漏洞数量/类型变化情况,安全是否需要采取新的控制措施;各业务线漏洞的分布情况,哪些业务目前安全风险较大,是否需要进一步了解等;</p>
</li>
</ul>
<p>针对业务方,可以定期给业务线安全接口人/负责人等管理角色推送安全数据以及风险评估报告。</p>
<p> </p>
<p> </p>
<blockquote>
<p>Reference:<a target="_blank" rel="noopener" href="https://www.cnblogs.com/ffx1/p/15406732.html">https://www.cnblogs.com/ffx1/p/15406732.html</a></p>
<p>在自我梳理过后搜到上面这篇博客。很高兴我的前面的大部分想法与作者不谋而合,这件事本身也是对我自己的一种激励~😆</p>
</blockquote>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://acindm.github.io/2023/12/07/Top%E6%BC%8F%E6%B4%9E/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.png.jpg">
<meta itemprop="name" content="">
<meta itemprop="description" content="Welcome to the 1/30000 🫧">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="acind の blog">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2023/12/07/Top%E6%BC%8F%E6%B4%9E/" class="post-title-link" itemprop="url">OWASP Top-10</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2023-12-07 15:32:06" itemprop="dateCreated datePublished" datetime="2023-12-07T15:32:06+08:00">2023-12-07</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-24 21:45:20" itemprop="dateModified" datetime="2024-09-24T21:45:20+08:00">2024-09-24</time>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>5.7k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>21 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h3 id="👉🏻TOP1:越权漏洞-Broken-Access-Control"><a href="#👉🏻TOP1:越权漏洞-Broken-Access-Control" class="headerlink" title="👉🏻TOP1:越权漏洞 Broken Access Control"></a>👉🏻TOP1:越权漏洞 Broken Access Control</h3><p><strong>简介</strong></p>
<p>主要分为水平越权和垂直越权。</p>
<ol>
<li><p><strong>水平越权</strong>:普通用户拥有其他平行级别用户的权限</p>
</li>
<li><p><strong>垂直越权</strong>:跨越自身所属用户组,获取更高级别用户的权限(比如管理员权限)</p>
<p></p>
</li>
</ol>
<p><strong>常见情况</strong></p>
<ol>
<li><p>通过修改url、内部应用程序状态或HTML页面绕过访问控制检查,或简单地使用自定义的API攻击工具</p>
<blockquote>
<p>网站以用户提交的id判断用户是否具有信息查询权限并返回用户提交id对应的用户信息</p>
<p>避免方式:根据用户本身的Session判断当前用户是否拥有读取个人信息权限</p>
<p>漏洞利用示例:攻击者A利用抓包工具将自动发送的查询请求中的userid修改为B用户的id,就可以查询到B用户的信息;未加密且用的是get请求时,通过修改url里的userid直接登入其他用户的账号</p>
</blockquote>
</li>
<li><p>特权提升,垂直越权</p>
<blockquote>
<p>用户具有阅读文章权限而不具有编辑文章权限,阅读文章的接口是read_article。权限保护方式基于接口名称的秘密</p>
<p>漏洞出现原因:可以猜测到修改文章的接口是edit_article</p>
<p>漏洞利用示例:攻击者A根据阅读文章的接口名称是read_article猜测修改文章的接口名称是edit_article,调用该接口,实现垂直越权</p>
</blockquote>
</li>
<li><p>修改Cookie中参数</p>
<blockquote>
<p>早期的网站设计会在Cookie中加入“admin = true”标识用户是否具有管理员权限</p>
<p>漏洞出现原因:Cookie不同于Session,Cookie中的参数存储在用户浏览器上,可以直观展现给用户;Session存储在服务器端,比Cookie安全</p>
<p>漏洞利用示例:攻击者A掌握网站的Cookie规律后</p>
<p> 方法①:通过JavaScript代码重置 document.cookie 内容越权</p>
<p> 方法②:抓包将“admin = false”修改为“admin = true”</p>
</blockquote>
</li>
<li><p>系统权限回收有问题</p>
<blockquote>
<p>漏洞出现原因:网站保留了注销用户信息而没有把它从用户表中删除,而仅仅对该用户是否有效这个字段进行了标记</p>
<p>漏洞利用示例:攻击者A注册时保留与注销用户B同样的用户id,覆盖了原用户的信息单保留了元用户的权限</p>
</blockquote>
<p></p>
</li>
</ol>
<p><strong>检测方法</strong></p>
<p>未授权访问与水平越权:cookie伪造;修改返回包中某个参数的值(比如false改为true);水平越权常见与业务系统中,对用户信息或者订单信息进行增删改查操作时,用户编号和订单编号常常有规律可循,测试人员通过burpsuit的intruder对目标参数进行遍历测试即可</p>
<p>垂直越权:将cookie中的false改为true;文件上传与下载漏洞可以通过./和../绕过,admin权限验证绕过也可以尝试这种方法</p>
<p> </p>
<p><strong>如何预防?</strong></p>
<p>将访问控制限制在仅在受信任的服务器端代码或者无服务器API中,这样攻击者就无法修改访问控制检查或元数据</p>
<ol>
<li><p>合理划分网站权限,设置功能验证,验证失败禁止访问</p>
</li>
<li><p>最小权限原则。除公有资源外,其他资源默认情况下拒绝访问,限制用户不必要的权限,用户权限过期后收回</p>
</li>
<li><p>进行严格的权限判断,用户只能操作属于自己的内容。此处权限判断需要识别用户身份,识别用户身份基于Session而非Cookie验证(即在服务器端进行验证)</p>
</li>
<li><p>记录失败的访问控制,适当时候对管理员进行告警(比如银行卡密码最多输入三次三次输错需要重新验证/找管理员更改密码,不能无限次试。避免了暴力破解)</p>
</li>
<li><p>对API和控制器的访问进行速率限制(避免高速爆破),最大限度降低自动化攻击工具的危害(也会有后续处置,比如后台发现某个ip多次异常尝试且多次失败,就把ip封了) </p>
<p></p>
</li>
</ol>
<p><strong>补充知识</strong></p>
<ul>
<li>网站会给用户分配不同的Session(会话标识符)维持用户对话</li>
</ul>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP2:加密机制失效-Cryptographic-Failures"><a href="#👉🏻TOP2:加密机制失效-Cryptographic-Failures" class="headerlink" title="👉🏻TOP2:加密机制失效 Cryptographic Failures"></a>👉🏻TOP2:加密机制失效 Cryptographic Failures</h3><p><strong>简介</strong></p>
<p>通常是缺乏加密措施或者加密失效导致敏感数据泄露</p>
<p> </p>
<p><strong>常见情况</strong></p>
<ol>
<li>以明文方式传输数据,未执行加密</li>
<li>使用旧or弱加密算法或协议</li>
<li>使用弱加密密钥、重复使用弱加密密钥、缺少适当的密钥管理和轮换、不小心将加密密钥提交到了源代码数据库中</li>
<li>接收到的服务器证书和信任链没有经过正确验证</li>
</ol>
<p> </p>
<p><strong>如何预防?</strong></p>
<ol>
<li>使用安全协议对所有数据进行传输加密</li>
<li>使用最新版且标准的强演算法、协定及密钥;使用适当的密钥管理</li>
<li>使用经过身份验证的加密而不仅仅是加密</li>
</ol>
<p> </p>
<p><strong>攻击范例</strong></p>
<ol>
<li><strong>情境1</strong>:某应用程序加密了存储在数据库中的信用卡号,但却在检索数据时自动解密,因此容易受到 SQL 注入攻击,导致信用卡号被泄露</li>
<li><strong>情境2</strong>:网站没有强制使用 TLS 或支持弱加密,导致攻击者能够通过网络监控、降级 HTTPS 连接为 HTTP,并截取会话 cookies,从而劫持用户的会话并访问或修改其隐私数据。攻击者还可以篡改传输的数据,例如修改汇款收款人信息</li>
<li><strong>情境3</strong>:密码库使用简单的散列函数存储密码,没有使用盐值或者使用了简单的盐值。由于上传文件的漏洞,攻击者可以访问密码库,未经盐值加密的哈希密码可以被预先计算的彩虹表破解。即使使用了盐值,如果哈希函数简单或快速,仍然容易受到 GPU 加速破解(PS:“盐”指随机生成的额外字符串)</li>
</ol>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP3:注入攻击-Injection"><a href="#👉🏻TOP3:注入攻击-Injection" class="headerlink" title="👉🏻TOP3:注入攻击 Injection"></a>👉🏻TOP3:注入攻击 Injection</h3><p>web对用户输入的内容的合法性判断不严或者过滤不严,攻击者在web应用程序中事先定义好的查询语句的结尾添加额外的执行语句,在管理员不知情的情况下进行非法操作,奇葩数据库执行非授权的任意查询,进一步得到数据信息。</p>
<p>其本质是对于输入的检查不充分,导致SQL语句将用户提交的非法数据当做语句的一部分来执行,简言而之就是用户提交的数据代入数据库的查询。</p>
<p> </p>
<p><strong>SQL注入</strong>:把SQL命令插入到Web表单递交或者输入域名或者页面请求的查询字符串,欺骗服务器执行恶意SQL命令</p>
<p> </p>
<p><strong>SQL注入分类</strong>:所有与用户进行交互的地方都可能存在注入</p>
<ol>
<li><p>基于数据类型:字符串类型注入;整型注入</p>
</li>
<li><p>基于程度和顺序的注入:一阶注入;二阶注入</p>
</li>
<li><p>基于从服务器收到的响应</p>
</li>
<li><p>基于错误的SQL查询</p>
</li>
<li><p>联合查询的类型</p>
</li>
<li><p>堆查询注射</p>
</li>
<li><p>SQL盲注:基于布尔;时间;报错</p>
<p></p>
</li>
</ol>
<p><strong>注入思路</strong>:</p>
<ol>
<li>判断是否存在注入,类型是字符型还是数字型</li>
<li>猜解SQL查询语句中的字段数</li>
<li>确定显示的字段顺序</li>
<li>获取当前数据库</li>
<li>获取数据库中的表</li>
</ol>
<p> </p>
<p><strong>盲注思路</strong></p>
<ol>
<li>判断是否存在注入,类型是字符型还是数字型</li>
<li>猜解SQL查询语句中的字段数</li>
<li>猜解数据库名</li>
<li>猜解数据库表名</li>
<li>猜解表中字段名</li>
<li>猜解数据</li>
</ol>
<p> </p>
<p><strong>防范方式</strong></p>
<ol>
<li>关闭SQL错误回显</li>
<li>使用成熟的WAF</li>
<li>前端输入字符白名单验证(长度、类型)</li>
<li>SQL服务运行专门的账号并且使用最小权限</li>
<li>对输入的特殊字符进行转义处理</li>
</ol>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP4:不安全设计"><a href="#👉🏻TOP4:不安全设计" class="headerlink" title="👉🏻TOP4:不安全设计"></a>👉🏻TOP4:不安全设计</h3><p><strong>产生原因</strong></p>
<p>开发软件时在关键的身份验证、访问控制、业务逻辑和关键流部位没有进行安全的设计</p>
<p> </p>
<p><strong>漏洞利用</strong></p>
<p>业务逻辑的体现</p>
<ol>
<li>支付逻辑</li>
<li>密码找回</li>
<li>验证码:暴力破解;重复使用;客户端回显;绕过;自动识别</li>
</ol>
<p><strong>支付逻辑漏洞</strong></p>
<p>修改支付价格、状态;修改购买数量;修改优惠券和积分;修改支付接口;多重替换支付;重复支付;最小额和最大额支付;无限制试用</p>
<p> </p>
<p><strong>场景</strong></p>
<ol>
<li>使用burpsuit抓包并且修改原始数据(用户界面数据无法更改,前端有封装),将运费金额30修改为9.9</li>
<li>把state的值从2修改为1,这样随机输入的密码也会被识别为真,导致任意密码重置</li>
</ol>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP5:安全配置不当"><a href="#👉🏻TOP5:安全配置不当" class="headerlink" title="👉🏻TOP5:安全配置不当"></a>👉🏻TOP5:安全配置不当</h3><p>通常由于不安全的默认配置、不完整的临时配置、不必要的功能启用或者安装、开源云储存、错误的http标头配置、包含敏感信息的详细报错信息。因此不仅要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级</p>
<p> </p>
<p><strong>案例</strong></p>
<ol>
<li>Tomcat、Apache服务器后台弱口令和服务器的不当配置容易被利用</li>
<li>中国电信交换机弱口令</li>
<li>行业内设备(比如华为的SmartAXMT调制解调器初始ip和默认密码是xxxxx都是已知的网上能找到的)</li>
</ol>
<p> </p>
<p><strong>防范</strong></p>
<ol>
<li>按照加固手册加固</li>
<li>搭建最小化平台,这个平台不包含任何不必要的功能、组件、文档和示例,移除或者不安装不适用的功能和框架</li>
<li>临时文件及时删除</li>
</ol>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP6:组件问题(API-框架-库-)"><a href="#👉🏻TOP6:组件问题(API-框架-库-)" class="headerlink" title="👉🏻TOP6:组件问题(API 框架 库 )"></a>👉🏻TOP6:组件问题(API 框架 库 )</h3><p>组件(例如库、框架、其他软件模块)拥有和应用程序相同的权限。如果应用程序中有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或者服务器接管,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御,造成攻击产生影响</p>
<p> </p>
<p><strong>场景</strong></p>
<ol>
<li>某个组件出现新的漏洞,攻击者可能凭借这个情报利用这个组件漏洞攻击应用程序(信息不对称)</li>
</ol>
<p> </p>
<p><strong>防范</strong></p>
<ol>
<li>移除不使用的依赖、不需要的功能、组件、文件和文档</li>
<li>仅从官方渠道获取组件,并使用签名机制来降低组件被篡改或被加入恶意漏洞的风险</li>
<li>持续监控CVE、NVD等是否发布已使用组件的漏洞信息,可以使用软件分析工具来自动完成此功能,订阅组件漏洞最新信息的邮件以获取即时信息</li>
</ol>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP7:认证及验证机制失效(密码交互存在问题)"><a href="#👉🏻TOP7:认证及验证机制失效(密码交互存在问题)" class="headerlink" title="👉🏻TOP7:认证及验证机制失效(密码交互存在问题)"></a>👉🏻TOP7:认证及验证机制失效(密码交互存在问题)</h3><p>错误使用应用程序的身份认证和会话功能管理,使攻击者能够破译密码、密钥或者会话令牌,或者利用其他开发缺陷冒充其他用户身份。web程序开发者过于专注程序功能开发,可能会建立自定义的认证和会话方案,这可能会存在漏洞。可能会在推出、密码管理、超时、密码找回、账户更新等方面存在漏洞。</p>
<p>也就是说在密码等重要数据进行交互的过程中程序存在问题,并且被利用</p>
<p> </p>
<p><strong>情景</strong></p>
<ol>
<li>应用程序没有实施自动化威胁保护或撞库攻击保护的情况下,使用已知列表密码撞库(比如旧密码泄露)</li>
<li>使用明文、加密或者弱散列密码或者用户重复使用同一种密码,容易被暴力破解(不是特殊加密方法的话密码破解可能会很快)</li>
<li>缺少或失效的多因素身份验证</li>
<li>暴露url中的会话id</li>
<li>会话ID使用时间过长</li>
</ol>
<p> </p>
<p><strong>防范</strong></p>
<ol>
<li><p>使用多因素身份验证</p>
</li>
<li><p>检查弱口令,模拟爆破操作</p>
</li>
<li><p>对API和控制器的访问进行速率限制,限制或逐渐延迟失败的登录尝试(避免高速爆破),最大限度降低自动化攻击工具的危害(也会有后续处置,比如后台发现某个ip多次异常尝试且多次失败,就把ip封了</p>
</li>
<li><p>session id 每隔一段时间就生成新的高度负责的新随机会话id。这个id不能出现在url中,登出、闲置、绝对超时的时候就使其失效</p>
<p></p>
</li>
</ol>
<p> </p>
<h3 id="👉🏻TOP8:软件和数据完整性失效-Software-and-Data-Integrity-Failures"><a href="#👉🏻TOP8:软件和数据完整性失效-Software-and-Data-Integrity-Failures" class="headerlink" title="👉🏻TOP8:软件和数据完整性失效 Software and Data Integrity Failures"></a>👉🏻TOP8:软件和数据完整性失效 Software and Data Integrity Failures</h3><p><strong>简介</strong></p>
<p>软件更新、关键资料(critical data)、持续集成/持续部署(CI/CD)流程等关键内容没有经过完整性验证导致产生的漏洞</p>
<blockquote>
<p>软件更新:指在已发布的软件版本中修复漏洞、增加功能或改进性能等目的而发布的新版本</p>
<p>关键资料:软件更新过程中使用的关键数据,比如用户隐私信息、安全凭证、加密密钥等</p>
<p>持续集成/持续部署(CI/CD)流程:旨在通过自动化构建、测试和部署流程来实现快速、频繁的软件发布。持续集成是指频繁地将开发人员的代码集成到共享存储库中,持续部署是指自动将通过测试的代码部署到生产环境中</p>
<p>没有经过完整性验证:指的是在软件更新过程中,假设了某些关键资料的完整性已经被验证,或者假设了CI/CD流程的整体安全性和正确性,而实际上并没有进行充分的验证。这样的假设可能导致漏洞或安全风险的存在</p>
</blockquote>
<p> </p>
<p><strong>常见情况</strong></p>
<ol>
<li><strong>不安全的序列化和反序列化</strong>:当对象或数据被编码或序列化成攻击者可以看到和修改的结构时,容易受到不安全的反序列化攻击</li>
<li><strong>依赖不受信任来源</strong>:应用程序来自不被信任的来源,包括一些不被信任的外部库、内容传递网络(CND)、库或者模组</li>
<li><strong>不安全的持续集成/持续部署 (CI/CD) 流程</strong>:不安全的集成/部署(CI/CD)流程可能导致未经授权的访问、恶意代码注入或系统破坏</li>
<li><strong>自动更新的安全性问题</strong>:很多应用程序会进行自动更新,在缺乏完整性验证的情况下把更新包应用到之前信任的应用程序上。这里攻击者可以上传自制的所谓“更新”内容在所有应用程序上运行,达到窃取信息等目的</li>
</ol>
<p> </p>
<p><strong>如何预防?</strong></p>
<ol>
<li>使用数字签名或者类似的机制验证软件数据来源正确且未被更改</li>
<li>使用可信任度较高的库和依赖项;确保安全工具验证组件不包含已知漏洞;尽量保证代码在构建和部署过程中的完整性;确保有代码审计和配置更改的审查流程,避免恶意代码或者恶意配置被引入软件流程</li>
<li>确保未签名或未加密的序列化数据不被发送到不受信任的客户端,除非有完整性检查或者数字签名来检测数据是否被篡改或重放。</li>
</ol>
<p> </p>
<p><strong>防范举例</strong></p>
<p>安卓手机,通过官方的应用商城安装软件相对比较安全,因为应用商城会对更新包和软件包进行检测以防范这种漏洞。如果从浏览器或者其他途径下载软件手机会警告用户软件可能不安全。</p>
<p> </p>
<p> </p>
<h3 id="👉🏻TOP9:安全记录记录和监控失效"><a href="#👉🏻TOP9:安全记录记录和监控失效" class="headerlink" title="👉🏻TOP9:安全记录记录和监控失效"></a>👉🏻TOP9:安全记录记录和监控失效</h3><p><strong>概念</strong></p>
<p>自己内部的检查能力不足,没办法在别人攻击自己的时候发现自己被攻击了</p>
<p> </p>
<p><strong>场景</strong></p>
<ol>
<li><p>印度一家大型航空公司发生涉及数百万乘客超过十年包括护照及信用卡资料等个人资料的资料泄漏。资料泄漏发生在第三方供应商提供的云端服务,该供应商在资料泄漏发生一段时间后通知航空公司。</p>
</li>
<li><p>未记录可审计的事件,如登录、登录失败、高额交易</p>
</li>
<li><p>告警和错误事件未能产生或者产生不足和不清晰的日志信息</p>
</li>
<li><p>日志信息仅在本地存储,日志信息可能被消掉</p>
</li>
<li><p>没有利用应用系统、API的日志信息监控可以活动</p>
</li>
<li><p>对于实时或者准实时攻击,应用程序无法检测、处理和告警</p>
<p></p>
</li>
</ol>
<p><strong>防范</strong></p>
<ol>
<li><p>确保所有的登录、访问控制失效、输入验证失败能够被记录到日志中去,保留足够的用户上下文信息,识别可疑或者恶意账户,为货期取证预留时间</p>
</li>
<li><p>日志集中管理、备份</p>
</li>
<li><p>审计信息保存在只能增加不能删除的数据库中</p>
</li>
<li><p>建立有效的告警机制,使可疑活动在可接受的范围内被发现和应对</p>
<p></p>
</li>
</ol>
<h3 id="👉🏻TOP10:SSRF-服务器端请求伪造"><a href="#👉🏻TOP10:SSRF-服务器端请求伪造" class="headerlink" title="👉🏻TOP10:SSRF-服务器端请求伪造"></a>👉🏻TOP10:SSRF-服务器端请求伪造</h3><p>攻击者利用服务器上的应用程序,发送伪造请求到服务器内部或者其他内网,从而达到攻击的目的</p>
<ol>
<li><p>限制访问权限:确保服务器上的应用程序只能访问必要的资源,避免访问敏感的内部网络资源。</p>
</li>
<li><p>过滤和验证输入: 对用户输入进行有效的过滤和验证,确保输入的URL是合法的且安全的,防止攻击者利用URL参数进行攻击。</p>
</li>
<li><p>使用白名单: 配置白名单,只允许应用程序访问特定的URL或者IP地址,从而避免访问未经授权的资源。</p>
</li>
<li><p>使用防火墙和WAF: 配置防火墙和Web应用程序防火墙(WAF),监控和过滤服务器上的入站和出站流量,阻止恶意请求和攻击。</p>
</li>
<li><p>更新和维护: 定期更新和维护服务器上的软件和组件,修复已知的漏洞和安全问题</p>
<p></p>
</li>
</ol>
<p> </p>
<p><strong>XXE</strong></p>
<p>应用程序解析XML文件时包含了对外部实体的引用,攻击者传递恶意包含XML代码的文件,读取指定服务器资源</p>
<p>防范:</p>
<ol>
<li>使用简单的数据格式(如JSON),避免对敏感数据序列化</li>
<li>服务器端实行白名单验证、过滤、清除,防止在XML或者标题中出现恶意数据</li>
<li>及时更新或者修复应用程序和底层操作系统使用的所有XML处理器和库</li>
<li></li>
</ol>
<p> </p>
<h3 id="CSRF-跨站请求伪造"><a href="#CSRF-跨站请求伪造" class="headerlink" title="CSRF-跨站请求伪造"></a>CSRF-跨站请求伪造</h3><p>利用用户在某个网站上已经登录的身份,在用户不知情的情况下,在另一个网站上执行一些非法操作</p>
<p>已经在购物网站上登录,然后收到一封看起来很正常的电子邮件。点击邮件中的链接,不知不觉地执行了一个操作,比如购买了一件商品或者更改了密码</p>
<ol>
<li>在每个表单提交或者敏感操作中包含一个随机生成的Token,并在后端进行验证。这个Token在每次请求中都会发生变化,攻击者无法伪造有效的Token,从而阻止了CSRF攻击。</li>
<li>限制cookie的发送范围,只允许来自同一站点的请求携带Cookie,防止跨站请求伪造</li>
<li>服务器端对请求的Referer进行验证(HTTP头中有一个字段叫Referer,它记录了该请求的来源地址),确保请求来源合法</li>
<li>执行敏感操作的请求,需要用户进行双重确认,比如输入密码、验证码等</li>
<li>对于执行敏感操作的Session,设置短暂有效期,减少攻击者利用的时间窗口</li>
<li>使用POST方法而不是GET方法来执行敏感操作</li>
</ol>
<p> </p>
<p> </p>
<h3 id="XSS-跨站脚本攻击"><a href="#XSS-跨站脚本攻击" class="headerlink" title="XSS-跨站脚本攻击"></a>XSS-跨站脚本攻击</h3><p>将可执行的前端脚本代码(一般为JavaScript)植入到网页中,通过利用网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。</p>
<p>反射型:攻击者将JS代码作为请求参数放置URL中,诱导用户点击,落入陷阱<br>存储型:将攻击脚本入库存储,在后面进行查询时,再将攻击脚本渲染进网页,返回给浏览器触发执行</p>
<p>DOM型:它和反射型以及存储型XSS的区别在于,DOM XSS的代码并不需要服务器解析响应的直接参与,触发XSS靠的是浏览器的DOM解析,可以认为完全是客户端的事情。</p>
<p> </p>
<p><strong>防御方式</strong></p>
<ol>
<li>输入验证和过滤: 对用户输入的内容进行严格的验证和过滤,确保其中不包含恶意脚本。可以使用白名单过滤、转义特殊字符等方式来防止</li>
<li>输出编码:使用合适的编码方式编码,防止浏览器误将其中的内容解析为可执行的脚本。常用的编码方式包括HTML编码、URL编码等。</li>
<li>HTTP头部设置: 在HTTP响应头中设置合适的Content-Security-Policy(CSP)头部,限制页面加载的资源和执行的脚本</li>
<li>将敏感信息存储在HttpOnly Cookie中,这样即使页面存在XSS漏洞,攻击者也无法窃取到Cookie中的敏感信息。</li>
</ol>
<p> </p>
<p> </p>
<blockquote>
<p>Reference:</p>
<p>OWASP官网</p>
<p>《Web漏洞解析与攻防实战》</p>
</blockquote>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://acindm.github.io/2023/11/06/%E9%9D%B6%E5%9C%BA%E6%80%BB%E7%BB%93/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.png.jpg">
<meta itemprop="name" content="">
<meta itemprop="description" content="Welcome to the 1/30000 🫧">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="acind の blog">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2023/11/06/%E9%9D%B6%E5%9C%BA%E6%80%BB%E7%BB%93/" class="post-title-link" itemprop="url">靶场攻击-总结与拓展</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2023-11-06 23:56:06" itemprop="dateCreated datePublished" datetime="2023-11-06T23:56:06+08:00">2023-11-06</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-24 21:21:19" itemprop="dateModified" datetime="2024-09-24T21:21:19+08:00">2024-09-24</time>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>1.9k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>7 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h4 id="W1r3s靶场攻击"><a href="#W1r3s靶场攻击" class="headerlink" title="W1r3s靶场攻击"></a>W1r3s靶场攻击</h4><p><strong>思路</strong>:由于是内网渗透,首先进行主机的扫描来发现目标主机,之后对目标主机进行端口扫描查看开放的端口,在这里发现其21端口允许匿名登陆,以此为攻击点,对其进行漏洞脚本扫描,得到 /wordpress/wp-login.php,发现其漏洞,之后进行ftp匿名登录,将worktodo.txt以及employee-names.txt下载下来,得到一个新的ftp服务器以及两个字符串,访问nmap得到的 /wordpress/wp-login.php发现为一个登陆页面,常见的用户名密码登陆失败,决定进行目录爆破,在这里使用gobuster工具进行目录爆破,得到三个结果,挨个访问得到一个安装页面,在此页面中发现为cuppa cms,接下来进行cuppa cms渗透,通过cuppa cms的利用文件,可发现漏洞在 /alerts/alertConfigField.php中,查看发现为使用post方法传递参数并且将他拼接至前面文件中包含过来,使用curl命令得到密码的内容,发现加密,使用John进行破解得到破解后的密码,最后使用ssh获取shell与提权,通过破解过的密码成功获取root权限。</p>
<p><strong>攻击工具</strong>:nmap,gobuster,John</p>
<p><strong>防御方法</strong>:关闭匿名登陆</p>
<h4 id="shop1靶场"><a href="#shop1靶场" class="headerlink" title="shop1靶场"></a>shop1靶场</h4><p><strong>思路</strong>:首先尝试默认登录后台未成功,使用阿D注入工具(SQL注入的渗透测试工具)扫描注入点,等到两组登录信息,登录成功。尝试上传一句话木马,更改为.jpg格式,将图片与木马链接上传并抓包。在信息路径下添加888.asp.jpg,进行00截断(利用了字符串的结束标识符“0x00”的特性,攻击者可以在目标文件名或URL中手动添加字符串标识符,将后面的内容进行截断,从而绕过某些安全检测),木马添加成功,在菜刀工具中输入木马路径即可修改任意文件。</p>
<p><strong>攻击工具</strong>:阿D注入工具、菜刀、MD5</p>
<p><strong>防御方法</strong>:</p>
<p>密码强度和保护(启用多因素身份验证可以增加额外的安全层)</p>
<p>安全配置和更新(及时更新软件和操作系统,以及设置适当的安全组和防火墙规则)</p>
<p>输入验证和过滤(对所有用户输入进行验证和过滤)</p>
<p>文件上传安全控制(限制上传的文件类型和大小并设置合适的文件存储路径和命名规则。)</p>
<p>安全扫描和监控(定期进行安全扫描和监控,以发现和修复潜在的安全漏洞)</p>
<p>访问控制和权限管理(实施严格的权限管理策略)</p>
<h4 id="尤里的复仇-sql注入"><a href="#尤里的复仇-sql注入" class="headerlink" title="尤里的复仇-sql注入"></a>尤里的复仇-sql注入</h4><p><strong>攻击思路和原理</strong>:sql注入与数据库对话,获得账号和密码,进入后台,上传木马,最后连接菜刀,达到控制网站的目的。</p>
<p><strong>防御方法</strong>:防御sql注入可以将sql语句转化成无法执行的sql语句,这样攻击者就无法和数据库进行对话。</p>
<h4 id="尤里的复仇-信息收集1"><a href="#尤里的复仇-信息收集1" class="headerlink" title="尤里的复仇-信息收集1"></a>尤里的复仇-信息收集1</h4><p><strong>攻击思路和原理</strong>:通过御剑扫描后台,这里是二级目录,然后获得flag</p>
<p><strong>防御方法</strong>:后台路径如果和大家的认知一样,就很容易被发现,因此设计网站时需要把后台的路径名设置的和认知不一样。</p>
<h4 id="尤里的复仇-绕过WAF"><a href="#尤里的复仇-绕过WAF" class="headerlink" title="尤里的复仇-绕过WAF"></a>尤里的复仇-绕过WAF</h4><p>网站做了WAF过滤防护,因此用cookie注入进行绕过,获得账号和密码,再用御剑扫描,获得后台路径,输入账号密码,得到flag</p>
<h4 id="红日靶场"><a href="#红日靶场" class="headerlink" title="红日靶场"></a>红日靶场</h4><p><strong>思路</strong>:首先进行网络配置,添加一个外网,一个内网。将攻击机kali第一个适配器连接互联网,第二个使用外网。将web服务器(win7),一个适配器连内网,第二个连外网。开始进行web渗透,通过端口扫描、目录爆破等尝试操作,进行信息收集,主要目的是为发现有关目标系统的漏洞,这是后续进行攻击的前提。接下来是利用漏洞:目录爆破发现了后台登录(phpmyadmin页面),通过bp暴力破解之后成功登录,之后在SQL界面尝试用日志写下一句话木马getshell,成功执行。通过webshell将探测等攻击文件成功植入(目标主机)win7,拿到权限。之后就进入到,权限维持和内网渗透的步骤了主要收集是关于域控的环境探测的信息,接着尝试使用远程桌面连接控制失败,用msf创建并运行木马尝试修改密码,提权成功。获取了域用户的密码信息,然后开始内网主机探测(扫描内网网段),至此内网信息收集结束。最后是横向移动:对域控渗透并进行IPC连接。让域控访问win7的指定端口,win7监听指定端口并将监听到的流量转发给kali的指定端口,在攻击机(kali)上监听,成功获取域控的shell。</p>
<h4 id="Hackdamic"><a href="#Hackdamic" class="headerlink" title="Hackdamic"></a>Hackdamic</h4><p><strong>思路</strong>:</p>
<p>①主机发现和端口扫描</p>
<p>②Web渗透:发现cms是WordPress 1.5.1.1,searchsploit发现可能存在SQL注入漏洞。在超链接Uncategorized的url下可以看到参数cat,尝试添加单引号’发现报错并回显了SQL查询语句,找到了SQL注入的位置。</p>
<p>③手工进行SQL注入,通过order by确定列数,再通过联合查询执行我们想要的代码。Google搜索WordPress的数据库结构,构造我们的查询语句。</p>
<p>④文件上传:拿到凭据后,登录WordPress后台,设置允许上传php文件,并上传反弹shell的php代码,得到了文件上传的路径。开启nc监听后,访问shell.php路径,触发了代码执行,拿到了初始Shell。</p>
<p>内核提权:由于内核版本老旧,寻找内核提权的exp,成功提权。</p>
<p><strong>防御方法</strong>:</p>
<p>-防御SQL注入,采取以下措施:</p>
<p>1.输入过滤:对用户输入的数据进行过滤和验证,确保其中不包含任何恶意的SQL查询语句。</p>
<p>2.参数化查询:使用参数化查询或预编译语句来减少SQL注入攻击的风险。</p>
<p>-防御文件上传漏洞,采取以下措施:</p>
<p>1.文件类型检查:对用户上传的文件进行类型检查,只接受可信的文件类型。</p>
<p>2.文件内容验证:在上传文件后,对文件内容进行检查,确认其是否符合预期的格式和结构。</p>
<p>3.文件名处理:对用户上传的文件名进行检查和处理,避免文件名中包含特殊字符或路径遍历漏洞。</p>
<p>4.文件存储位置:将上传的文件存储在非web根目录下。</p>
<p>5.文件大小限制:限制上传文件的大小,避免上传过大的文件导致服务器资源耗尽。</p>
<p>6.输入过滤和验证:对用户上传的文件名和其他相关字段进行输入过滤和验证,确保其中不包含恶意代码。</p>
<p>7.权限控制:为不同用户分配不同的上传权限,并根据需要对上传文件进行审核或审查。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://acindm.github.io/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.png.jpg">
<meta itemprop="name" content="">
<meta itemprop="description" content="Welcome to the 1/30000 🫧">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="acind の blog">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/" class="post-title-link" itemprop="url">Hackdamic渗透</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2023-11-02 13:20:51" itemprop="dateCreated datePublished" datetime="2023-11-02T13:20:51+08:00">2023-11-02</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-24 21:45:53" itemprop="dateModified" datetime="2024-09-24T21:45:53+08:00">2024-09-24</time>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>1.5k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>6 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>扫描虚拟机</p>
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87157.png" class title="This is an test image">
<p>编辑虚拟机设置</p>
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87158.png" class title="This is an test image">
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87159.png" class title="This is an test image">
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87160.png" class title="This is an test image">
<p> </p>
<p><strong>信息收集</strong></p>
<p>Nmap扫描</p>
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87161.png" class title="This is an test image">
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87162.png" class title="This is an test image">
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87163.png" class title="This is an test image">
<p> </p>
<p>可以看到开放的端口和对应的服务</p>
<table>
<thead>
<tr>
<th>Port</th>
<th>service</th>
</tr>
</thead>
<tbody><tr>
<td>22/tcp</td>
<td>ssh</td>
</tr>
<tr>
<td>80/tcp</td>
<td>web</td>
</tr>
</tbody></table>
<p> </p>
<p>Attempt to access port 80</p>
<p>scan information on web page</p>
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87164.png" class title="This is an test image">
<p>Plug-in viewing framework</p>
<p><a target="_blank" rel="noopener" href="http://192.168.182.131/Hackademic_RTB1/?p=%E2%80%99%E2%80%A6%E2%80%99">http://192.168.182.131/Hackademic_RTB1/?p=’…’</a></p>
<p><a target="_blank" rel="noopener" href="http://192.168.31.162/Hackademic_RTB1/?cat=1">http://192.168.182.131/Hackademic_RTB1/?cat=1</a></p>
<p> </p>
<p><strong>反弹shell</strong></p>
<p>使用dirsearch scan</p>
<img data-src="/2023/11/02/Hackdamic%E9%9D%B6%E6%9C%BA/%E5%9B%BE%E7%89%87165.png" class title="This is an test image">