Repository navigation
Expand file tree
/
Copy path15446869314706.html
More file actions
518 lines (329 loc) · 17 KB
/
Copy path15446869314706.html
File metadata and controls
518 lines (329 loc) · 17 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
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>
xss、csrf、sql注入快速检测方法 - lonelyorのblog
</title>
<link href="atom.xml" rel="alternate" title="lonelyorのblog" type="application/atom+xml">
<link rel="stylesheet" href="asset/css/foundation.min.css" />
<link rel="stylesheet" href="asset/css/docs.css" />
<script src="asset/js/vendor/modernizr.js"></script>
<script src="asset/js/vendor/jquery.js"></script>
<script src="asset/highlightjs/highlight.pack.js"></script>
<link href="asset/highlightjs/styles/github.css" media="screen, projection" rel="stylesheet" type="text/css">
<script>hljs.initHighlightingOnLoad();</script>
<script type="text/javascript">
function before_search(){
var searchVal = 'site:www.lonelyor.org/lonelyorNotes ' + document.getElementById('search_input').value;
document.getElementById('search_q').value = searchVal;
return true;
}
</script>
</head>
<body class="antialiased hide-extras">
<div class="marketing off-canvas-wrap" data-offcanvas>
<div class="inner-wrap">
<nav class="top-bar docs-bar hide-for-small" data-topbar>
<section class="top-bar-section">
<div class="row">
<div style="position: relative;width:100%;"><div style="position: absolute; width:100%;">
<ul id="main-menu" class="left">
<li id=""><a target="_self" href="index.html">主页</a></li>
<li id=""><a target="_self" href="archives.html">归档</a></li>
<li id=""><a target="_self" href="lost.html">失乐园</a></li>
<li id=""><a target="_self" href="about.html">关于</a></li>
</ul>
<ul class="right" id="search-wrap">
<li>
<form target="_blank" onsubmit="return before_search();" action="https://google.com/search" method="get">
<input type="hidden" id="search_q" name="q" value="" />
<input tabindex="1" type="search" id="search_input" placeholder="Search"/>
</form>
</li>
</ul>
</div></div>
</div>
</section>
</nav>
<nav class="tab-bar show-for-small">
<a href="javascript:void(0)" class="left-off-canvas-toggle menu-icon">
<span> lonelyorのblog</span>
</a>
</nav>
<aside class="left-off-canvas-menu">
<ul class="off-canvas-list">
<li><a target="_self" href="index.html">主页</a></li>
<li><a target="_self" href="archives.html">归档</a></li>
<li><a target="_self" href="lost.html">失乐园</a></li>
<li><a target="_self" href="about.html">关于</a></li>
<li><label>Categories</label></li>
<li><a href="Web%E6%94%BB%E9%98%B2.html">Web攻防</a></li>
<li><a href="%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html">操作系统</a></li>
<li><a href="%E8%99%9A%E6%8B%9F%E5%AE%9E%E9%AA%8C%E5%AE%A4.html">虚拟实验室</a></li>
<li><a href="CTF.html">CTF</a></li>
<li><a href="%E5%BC%80%E5%8F%91.html">开发</a></li>
<li><a href="%E6%B5%8F%E8%A7%88%E5%99%A8.html">浏览器</a></li>
<li><a href="%E5%A5%87%E6%B7%AB%E5%B7%A7%E6%8A%80.html">奇淫巧技</a></li>
</ul>
</aside>
<a class="exit-off-canvas" href="#"></a>
<section id="main-content" role="main" class="scroll-container">
<script type="text/javascript">
$(function(){
$('#menu_item_index').addClass('is_active');
});
</script>
<div class="row">
<div class="large-8 medium-8 columns">
<div class="markdown-body article-wrap">
<div class="article">
<h1>xss、csrf、sql注入快速检测方法</h1>
<div class="read-more clearfix">
<span class="date">2018/12/13 15:42 下午</span>
<span>posted in </span>
<span class="posted-in"><a href='%E6%8A%80%E5%B7%A7.html'>技巧</a></span>
<span class="comments">
</span>
</div>
</div><!-- article -->
<div class="article-content">
<h2 id="toc_0">CSRF跨站请求伪造</h2>
<ul>
<li>原理<br/>
攻击者在受害者不知情的情况下,以受害者的名义伪造请求发送给受攻击的站点,从而在未授权的情况下执行在权限保护之下的操作。<br/>
CSRF攻击的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行 CSRF 的保护。<br/></li>
</ul>
<hr/>
<ul>
<li>检测方法<br/>
1.查看重要操作接口提交的请求中是否包含 csrf_token<br/>
2.更改和删除 csrf_token 后提交表单,查看请求是否能被正确响应。<br/></li>
</ul>
<hr/>
<ul>
<li>修复方案<br/>
1.对涉及数据<strong>增、删、改</strong>操作提交的表单中添加csrf_token,token 参数应校验一次后失效。<br/>
2.最好是在容器或框架上<strong>全局</strong>启用 csrf_token。(很多框架自带的解决办法容易遗漏一次失效的问题)<br/>
3.token 应有一定的<strong>时效性</strong>,建议为30分钟,过期需失效(即:单页面停留30分钟后,用户提交请求需提示“页面过期,请刷新页面后再次提交”)<br/></li>
</ul>
<hr/>
<ul>
<li>参考<br/>
<a href="https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005)">CSRF测试</a><br/>
<a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)">跨站请求伪造(CSRF)</a><br/>
<a href="https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/">CSRF 攻击的应对之道</a><br/>
## XSS跨站脚本攻击<br/>
### 反射型</li>
<li>原理<br/></li>
</ul>
<hr/>
<ul>
<li>检测方法<br/>
<strong>检测场景</strong>:任何有输入输出地方......<br/>
1.使用通用的web扫描器一般的都能发掘潜在的反射型XSS漏洞。<br/>
2.手工在一些输入框中或者post参数中加入拼凑过的JS代码,根据返回的页面源码中是否成功嵌入JS代码来判断XSS是否存在。<br/>
3.如果注入的代码经过后端处理后,永久性的嵌入到了页面当中,则该XSS为存储型的,反射型的XSS一般依赖于该次请求,且同时只能被用户自己所看到。<br/></li>
</ul>
<hr/>
<ul>
<li>修复方案<br/>
1.输出时统一使用 htmlEscape()转义用户输入的数据,将html、js中涉及到的关键字符进行html编码处理后再输出到页面上。<br/>
2.如果存在用户编写文章等类似用户可以自定义页面样式的功能,则限制用户输入,采用严格的白名单来过滤用户的输入,这种过滤应在后端应实现。(很多开源的第三方富文本编辑器,部分编辑器仅在JS端进行过滤,而不在后端进行关键字过滤)。<br/></li>
</ul>
<hr/>
<h3 id="toc_1">存储型</h3>
<ul>
<li>原理<br/></li>
</ul>
<hr/>
<ul>
<li>检测方法<br/>
<strong>检测场景</strong>:存在富文本编辑器的地方;用户的输入信息会作为固定的值回显到页面中;后台管理应用中维护用户输入的相关信息。<br/>
1.手工在一些输入框中或者post参数中加入污染的JS代码,根据返回的页面源码中是否成功嵌入JS代码来判断XSS是否存在(注入前端转义的情况)。<br/>
2.如果注入的代码经过后端处理后,永久性的嵌入到了页面当中,则该XSS为存储型的。<br/>
3.如果尝试注入的代码在页面中均被html编码,则再考虑其数据的流转会不会在后台其他应用中处理这些输入数据,如果有,对应的后台应用是否也做了完善的过滤机制。<br/>
4.可远程搭建XSS检测平台,如果有XSS测试代码被触发,则自动发起链接到该平台上,这样相对来说可以测试那些未知的数据流向是否造成问题。<br/></li>
</ul>
<hr/>
<ul>
<li>修复方案<br/>
1.输出时统一使用 htmlEscape()转义用户输入的数据,将html、js中涉及到的关键字符进行html编码处理后再输出到页面上。<br/>
2.如果存在用户编写文章等类似用户可以自定义页面样式的功能,则限制用户输入,采用严格的白名单来过滤用户的输入,这种过滤应在后端应实现。(很多开源的第三方富文本编辑器,部分编辑器仅在JS端进行过滤,而不在后端进行关键字过滤)。<br/></li>
</ul>
<hr/>
<h3 id="toc_2">基于DOM型</h3>
<ul>
<li>原理<br/></li>
</ul>
<hr/>
<p>没啥可说的,可以当成是特殊的反射型。</p>
<ul>
<li>检测方法<br/></li>
</ul>
<hr/>
<ul>
<li>修复方案<br/></li>
</ul>
<hr/>
<ul>
<li>参考<br/>
<a href="https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)">XSS跨站脚本</a>
## SQL_Inject<br/></li>
<li>原理<br/></li>
</ul>
<hr/>
<p>开发人员使用直接拼接 sql 的方法来访问数据库,导致攻击者能通过特殊构造的语句控制代码逻辑。典型的代码与数据没有分离导致的安全问题之一。</p>
<ul>
<li>检测方法<br/></li>
</ul>
<hr/>
<ul>
<li>常规方法<br/>
<code>
1 ,新建一个1 .txt文件,burp抓包将包含关键参数的请求存入。<br/>
2 ,使用sqlmap 进行扫描(python sqlmap [options] [file path])<br/>
3、等待结果输出
</code></li>
<li>另一种常规方法<br/>
<code>
使用burp插件SQLiPy<br/>
方案一(通用):将sqlapi地址配置成 192.168.2.22 2222<br/>
方案二:使用sqlipy生成测试语句,然后添加 -p 参数,指定注入参数,然后在 shell 里面运行 sqlmap。<br/>
一个指定参数的SqlMap示例语句: <br/>
sqlmap -u “ http://xxxxxx.com:80/x/xx?x_id=1507 ” --method = “GET”-- cookie = “SESSIONID = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<br/>
--user-agent= "Mozilla / 5.0(X11; Linux_x86_64; RV:60.0)/ 20100101火狐/ 60.0" --delay=0 --timeout=30 --retries=0 --dbms="MySQL" --os=Linux <br/>
--level=3 --risk=3 --threads=2 --time-sec=10 -b --batch --answers="crack=N,dict = N" -p "zone_id" --tables
</code>
我们在跑注入的时候需要重点设置的参数:<br/>
-risk=3<br/>
-level=3<br/>
--threads=2<br/>
--dbms和–os去问开发或者测试<br/>
-p 指定阐述减少服务器压力</li>
<li>不太常规的方法<br/>
1、写一个web界面调用sqlmapapi<br/>
2、直接找开发拉代码过来进行审计</li>
<li>修复方案<br/></li>
</ul>
<hr/>
<p>1、使用安全的API ,完全避免使用解释器,或提供参数化界面的接口,或迁移到ORM 或实体框架(通常开发框架里会自带访问sql的方法来预防注入)。<br/><br/>
2、做参数绑定,预编译查询。</p>
<ul>
<li>参考<br/>
<a href="https://www.owasp.org/index.php/SQL_Injection">SQL注入</a></li>
</ul>
</div>
<div class="row">
<div class="large-6 columns">
<p class="text-left" style="padding:15px 0px;">
<a href="15446874145620.html"
title="Previous Post: burpsuite插件编写之官方代码示例解读">« burpsuite插件编写之官方代码示例解读</a>
</p>
</div>
<div class="large-6 columns">
<p class="text-right" style="padding:15px 0px;">
<a href="15446866501207.html"
title="Next Post: IIS短文件名漏洞">IIS短文件名漏洞 »</a>
</p>
</div>
</div>
<div class="comments-wrap">
<div class="share-comments">
</div>
</div>
</div><!-- article-wrap -->
</div><!-- large 8 -->
<link rel="bookmark" href="http://images.lonelyor.org/favicon.ico" />
<link rel="shortcut icon" href="http://images.lonelyor.org/favicon.ico" />
<script id="dsq-count-scr" src="//lonelyor.disqus.com/count.js" async></script>
<div class="large-4 medium-4 columns">
<div class="hide-for-small">
<div id="sidebar" class="sidebar">
<div id="site-info" class="site-info">
<div class="site-a-logo"><img src="http://images.lonelyor.org/lonelyornotesico.jpeg" /></div>
</br>
<h1>lonelyorのblog</h1>
<div class="site-des">一个用来记录学习笔记的网站</div>
<div class="social">
<a target="_blank" class="github" target="_blank" href="https://github.com/AlShelley/lonelyorNotes" title="GitHub">GitHub</a>
<a target="_blank" class="email" href="mailto:lonelyor.org@gmail.com" title="Email">Email</a>
<a target="_blank" class="rss" href="atom.xml" title="RSS">RSS</a>
</div>
</div>
<div id="site-categories" class="side-item ">
<div class="side-header">
<h2>分类</h2>
</div>
<div class="side-content">
<p class="cat-list">
<a href="Web%E6%94%BB%E9%98%B2.html"><strong>Web攻防</strong></a>
<a href="%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html"><strong>操作系统</strong></a>
<a href="%E8%99%9A%E6%8B%9F%E5%AE%9E%E9%AA%8C%E5%AE%A4.html"><strong>虚拟实验室</strong></a>
<a href="CTF.html"><strong>CTF</strong></a>
<a href="%E5%BC%80%E5%8F%91.html"><strong>开发</strong></a>
<a href="%E6%B5%8F%E8%A7%88%E5%99%A8.html"><strong>浏览器</strong></a>
<a href="%E5%A5%87%E6%B7%AB%E5%B7%A7%E6%8A%80.html"><strong>奇淫巧技</strong></a>
</p>
</div>
</div>
<div id="site-categories" class="side-item">
<div class="side-header">
<h2>最新文章</h2>
</div>
<div class="side-content">
<ul class="posts-list">
<li class="post">
<a href="15453720146052.html">Pycharm编程遇到的技巧</a>
</li>
<li class="post">
<a href="15453717965995.html">npm Cannot find module 'semver' --解决方案</a>
</li>
<li class="post">
<a href="15453716917526.html">mongodb安装配置(arch)</a>
</li>
<li class="post">
<a href="15453714645346.html">linux安装配置aria2及其Web图形界面(debian为例)</a>
</li>
<li class="post">
<a href="15453713553710.html">linux下搜狗输入法不能用的解决办法</a>
</li>
</ul>
</div>
</div>
</div><!-- sidebar -->
</div><!-- hide for small -->
</div><!-- large 4 -->
</div><!-- row -->
<div class="page-bottom clearfix">
<div class="row">
<p class="copyright">Copyright © 2018
Powered by <a target="_blank" href="http://www.mweb.im">MWeb</a>,
Theme used <a target="_blank" href="http://github.com">GitHub CSS</a>,
Author is <a target="_blank" href="http://lonelyor.org">lonelyor</a>
</p>
</div>
</div>
</section>
</div>
</div>
<script src="asset/js/foundation.min.js"></script>
<script>
$(document).foundation();
function fixSidebarHeight(){
var w1 = $('.markdown-body').height();
var w2 = $('#sidebar').height();
if (w1 > w2) { $('#sidebar').height(w1); };
}
$(function(){
fixSidebarHeight();
})
$(window).load(function(){
fixSidebarHeight();
});
</script>
<div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more">分享到:</a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间">QQ空间</a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信">微信</a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博">新浪微博</a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博">腾讯微博</a><a href="#" class="bds_fbook" data-cmd="fbook" title="分享到Facebook">Facebook</a></div>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"来自:http://www.lonelyor.org/","bdMini":"1","bdMiniList":["sqq","weixin","fbook","twi","qzone","tsina","tqq","tieba","douban","tsohu","linkedin","mshare","copy"],"bdPic":"http://images.lonelyor.org/lonelyornotesico.jpeg","bdStyle":"1","bdSize":"16"},"share":{"bdSize":16},"image":{"viewList":["qzone","weixin","tsina","tqq","fbook"],"viewText":"分享到:","viewSize":"24"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","weixin","tsina","tqq","fbook"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
</body>
</html>