-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
87 lines (85 loc) · 92.3 KB
/
index.html
File metadata and controls
87 lines (85 loc) · 92.3 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
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>burpsuite.html</title>
<meta name="generator" content="Haroopad 0.13.1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>#wrap{width:675px;margin:0 auto;background-color:#fff;}
div.oembedall-githubrepos{border:1px solid #DDD;border-radius:4px;list-style-type:none;margin:0 0 10px;padding:8px 10px 0;font:13.34px/1.4 helvetica,arial,freesans,clean,sans-serif;width:452px;background-color:#fff}div.oembedall-githubrepos .oembedall-body{background:-moz-linear-gradient(center top,#FAFAFA,#EFEFEF);background:-webkit-gradient(linear,left top,left bottom,from(#FAFAFA),to(#EFEFEF));border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #EEE;margin-left:-10px;margin-top:8px;padding:5px 10px;width:100%}div.oembedall-githubrepos h3{font-size:14px;margin:0;padding-left:18px;white-space:nowrap}div.oembedall-githubrepos p.oembedall-description{color:#444;font-size:12px;margin:0 0 3px}div.oembedall-githubrepos p.oembedall-updated-at{color:#888;font-size:11px;margin:0}div.oembedall-githubrepos ul.oembedall-repo-stats{border:none;float:right;font-size:11px;font-weight:700;padding-left:15px;position:relative;z-index:5;margin:0}div.oembedall-githubrepos ul.oembedall-repo-stats li{border:none;color:#666;display:inline-block;list-style-type:none;margin:0!important}div.oembedall-githubrepos ul.oembedall-repo-stats li a{background-color:transparent;border:none;color:#666!important;background-position:5px -2px;background-repeat:no-repeat;border-left:1px solid #DDD;display:inline-block;height:21px;line-height:21px;padding:0 5px 0 23px}div.oembedall-githubrepos ul.oembedall-repo-stats li:first-child a{border-left:medium none;margin-right:-3px}div.oembedall-githubrepos ul.oembedall-repo-stats li a:hover{background:5px -27px no-repeat #4183C4;color:#FFF!important;text-decoration:none}div.oembedall-githubrepos ul.oembedall-repo-stats li:first-child a:hover{border-bottom-left-radius:3px;border-top-left-radius:3px}ul.oembedall-repo-stats li:last-child a:hover{border-bottom-right-radius:3px;border-top-right-radius:3px}span.oembedall-closehide{background-color:#aaa;border-radius:2px;cursor:pointer;margin-right:3px}div.oembedall-container{margin-top:5px;text-align:left}.oembedall-ljuser{font-weight:700}.oembedall-ljuser img{vertical-align:bottom;border:0;padding-right:1px}.oembedall-stoqembed{border-bottom:1px dotted #999;float:left;overflow:hidden;width:730px;line-height:1;background:#FFF;color:#000;font-family:Arial,Liberation Sans,DejaVu Sans,sans-serif;font-size:80%;text-align:left;margin:0;padding:0}.oembedall-stoqembed a{color:#07C;text-decoration:none;margin:0;padding:0}.oembedall-stoqembed a:hover{text-decoration:underline}.oembedall-stoqembed a:visited{color:#4A6B82}.oembedall-stoqembed h3{font-family:Trebuchet MS,Liberation Sans,DejaVu Sans,sans-serif;font-size:130%;font-weight:700;margin:0;padding:0}.oembedall-stoqembed .oembedall-reputation-score{color:#444;font-size:120%;font-weight:700;margin-right:2px}.oembedall-stoqembed .oembedall-user-info{height:35px;width:185px}.oembedall-stoqembed .oembedall-user-info .oembedall-user-gravatar32{float:left;height:32px;width:32px}.oembedall-stoqembed .oembedall-user-info .oembedall-user-details{float:left;margin-left:5px;overflow:hidden;white-space:nowrap;width:145px}.oembedall-stoqembed .oembedall-question-hyperlink{font-weight:700}.oembedall-stoqembed .oembedall-stats{background:#EEE;margin:0 0 0 7px;padding:4px 7px 6px;width:58px}.oembedall-stoqembed .oembedall-statscontainer{float:left;margin-right:8px;width:86px}.oembedall-stoqembed .oembedall-votes{color:#555;padding:0 0 7px;text-align:center}.oembedall-stoqembed .oembedall-vote-count-post{font-size:240%;color:#808185;display:block;font-weight:700}.oembedall-stoqembed .oembedall-views{color:#999;padding-top:4px;text-align:center}.oembedall-stoqembed .oembedall-status{margin-top:-3px;padding:4px 0;text-align:center;background:#75845C;color:#FFF}.oembedall-stoqembed .oembedall-status strong{color:#FFF;display:block;font-size:140%}.oembedall-stoqembed .oembedall-summary{float:left;width:635px}.oembedall-stoqembed .oembedall-excerpt{line-height:1.2;margin:0;padding:0 0 5px}.oembedall-stoqembed .oembedall-tags{float:left;line-height:18px}.oembedall-stoqembed .oembedall-tags a:hover{text-decoration:none}.oembedall-stoqembed .oembedall-post-tag{background-color:#E0EAF1;border-bottom:1px solid #3E6D8E;border-right:1px solid #7F9FB6;color:#3E6D8E;font-size:90%;line-height:2.4;margin:2px 2px 2px 0;padding:3px 4px;text-decoration:none;white-space:nowrap}.oembedall-stoqembed .oembedall-post-tag:hover{background-color:#3E6D8E;border-bottom:1px solid #37607D;border-right:1px solid #37607D;color:#E0EAF1}.oembedall-stoqembed .oembedall-fr{float:right}.oembedall-stoqembed .oembedall-statsarrow{background-image:url(http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3);background-repeat:no-repeat;overflow:hidden;background-position:0 -435px;float:right;height:13px;margin-top:12px;width:7px}.oembedall-facebook1{border:1px solid #1A3C6C;padding:0;font:13.34px/1.4 verdana;width:500px}.oembedall-facebook2{background-color:#627add}.oembedall-facebook2 a{color:#e8e8e8;text-decoration:none}.oembedall-facebookBody{background-color:#fff;vertical-align:top;padding:5px}.oembedall-facebookBody .contents{display:inline-block;width:100%}.oembedall-facebookBody div img{float:left;margin-right:5px}div.oembedall-lanyard{-webkit-box-shadow:none;-webkit-transition-delay:0s;-webkit-transition-duration:.4000000059604645s;-webkit-transition-property:width;-webkit-transition-timing-function:cubic-bezier(0.42,0,.58,1);background-attachment:scroll;background-clip:border-box;background-color:transparent;background-image:none;background-origin:padding-box;border-width:0;box-shadow:none;color:#112644;display:block;float:left;font-family:'Trebuchet MS',Trebuchet,sans-serif;font-size:16px;height:253px;line-height:19px;margin:0;max-width:none;min-height:0;outline:#112644 0;overflow-x:visible;overflow-y:visible;padding:0;position:relative;text-align:left;vertical-align:baseline;width:804px}div.oembedall-lanyard .tagline{font-size:1.5em}div.oembedall-lanyard .wrapper{overflow:hidden;clear:both}div.oembedall-lanyard .split{float:left;display:inline}div.oembedall-lanyard .prominent-place .flag:active,div.oembedall-lanyard .prominent-place .flag:focus,div.oembedall-lanyard .prominent-place .flag:hover,div.oembedall-lanyard .prominent-place .flag:link,div.oembedall-lanyard .prominent-place .flag:visited{float:left;display:block;width:48px;height:48px;position:relative;top:-5px;margin-right:10px}div.oembedall-lanyard .place-context{font-size:.889em}div.oembedall-lanyard .prominent-place .sub-place{display:block}div.oembedall-lanyard .prominent-place{font-size:1.125em;line-height:1.1em;font-weight:400}div.oembedall-lanyard .main-date{color:#8CB4E0;font-weight:700;line-height:1.1}div.oembedall-lanyard .first{width:48.57%;margin:0 0 0 2.857%}.mermaid .label{color:#333}.node circle,.node polygon,.node rect{fill:#cde498;stroke:#13540c;stroke-width:1px}.edgePath .path{stroke:green;stroke-width:1.5px}.cluster rect{fill:#cdffb2;rx:40;stroke:#6eaa49;stroke-width:1px}.cluster text{fill:#333}.actor{stroke:#13540c;fill:#cde498}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#arrowhead{fill:#333}#crosshead path{fill:#333!important;stroke:#333!important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#326932;fill:#cde498}.labelText,.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#326932}.note{stroke:#6eaa49;fill:#fff5ad}.noteText{fill:#000;stroke:none;font-family:'trebuchet ms',verdana,arial;font-size:14px}.section{stroke:none;opacity:.2}.section0,.section2{fill:#6eaa49}.section1,.section3{fill:#fff;opacity:.2}.sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.grid .tick{stroke:lightgrey;opacity:.3;shape-rendering:crispEdges}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#487e3a;stroke:#13540c}.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#cde498;stroke:#13540c}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000!important}.done0,.done1,.done2,.done3{stroke:grey;fill:lightgrey;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000!important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#cde498;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000!important}.titleText{text-anchor:middle;font-size:18px;fill:#000}text{font-family:'trebuchet ms',verdana,arial;font-size:14px}html{height:100%}body{margin:0!important;padding:5px 20px 26px!important;background-color:#fff;font-family:"Lucida Grande","Segoe UI","Apple SD Gothic Neo","Malgun Gothic","Lucida Sans Unicode",Helvetica,Arial,sans-serif;font-size:.9em;overflow-x:hidden;overflow-y:auto}br,h1,h2,h3,h4,h5,h6{clear:both}hr.page{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x;border:0;height:3px;padding:0}hr.underscore{border-top-style:dashed!important}body >:first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px}iframe{border:0}figure{-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0}kbd{border:1px solid #aaa;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:1px 2px 2px #ddd;-webkit-box-shadow:1px 2px 2px #ddd;box-shadow:1px 2px 2px #ddd;background-color:#f9f9f9;background-image:-moz-linear-gradient(top,#eee,#f9f9f9,#eee);background-image:-o-linear-gradient(top,#eee,#f9f9f9,#eee);background-image:-webkit-linear-gradient(top,#eee,#f9f9f9,#eee);background-image:linear-gradient(top,#eee,#f9f9f9,#eee);padding:1px 3px;font-family:inherit;font-size:.85em}.oembeded .oembed_photo{display:inline-block}img[data-echo]{margin:25px 0;width:100px;height:100px;background:url(../img/ajax.gif) center center no-repeat #fff}.spinner{display:inline-block;width:10px;height:10px;margin-bottom:-.1em;border:2px solid rgba(0,0,0,.5);border-top-color:transparent;border-radius:100%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.spinner:after{content:'';display:block;width:0;height:0;position:absolute;top:-6px;left:0;border:4px solid transparent;border-bottom-color:rgba(0,0,0,.5);-webkit-transform:rotate(45deg);transform:rotate(45deg)}@-webkit-keyframes spin{to{-webkit-transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}p.toc{margin:0!important}p.toc ul{padding-left:10px}p.toc>ul{padding:10px;margin:0 10px;display:inline-block;border:1px solid #ededed;border-radius:5px}p.toc li,p.toc ul{list-style-type:none}p.toc li{width:100%;padding:0;overflow:hidden}p.toc li a::after{content:"."}p.toc li a:before{content:"• "}p.toc h5{text-transform:uppercase}p.toc .title{float:left;padding-right:3px}p.toc .number{margin:0;float:right;padding-left:3px;background:#fff;display:none}input.task-list-item{margin-left:-1.62em}.markdown{font-family:"Hiragino Sans GB","Microsoft YaHei",STHeiti,SimSun,"Lucida Grande","Lucida Sans Unicode","Lucida Sans",'Segoe UI',AppleSDGothicNeo-Medium,'Malgun Gothic',Verdana,Tahoma,sans-serif;padding:20px}.markdown a{text-decoration:none;vertical-align:baseline}.markdown a:hover{text-decoration:underline}.markdown h1{font-size:2.2em;font-weight:700;margin:1.5em 0 1em}.markdown h2{font-size:1.8em;font-weight:700;margin:1.275em 0 .85em}.markdown h3{font-size:1.6em;font-weight:700;margin:1.125em 0 .75em}.markdown h4{font-size:1.4em;font-weight:700;margin:.99em 0 .66em}.markdown h5{font-size:1.2em;font-weight:700;margin:.855em 0 .57em}.markdown h6{font-size:1em;font-weight:700;margin:.75em 0 .5em}.markdown h1+p,.markdown h1:first-child,.markdown h2+p,.markdown h2:first-child,.markdown h3+p,.markdown h3:first-child,.markdown h4+p,.markdown h4:first-child,.markdown h5+p,.markdown h5:first-child,.markdown h6+p,.markdown h6:first-child{margin-top:0}.markdown hr{border:1px solid #ccc}.markdown p{margin:1em 0;word-wrap:break-word}.markdown ol{list-style-type:decimal}.markdown li{display:list-item;line-height:1.4em}.markdown blockquote{margin:1em 20px}.markdown blockquote>:first-child{margin-top:0}.markdown blockquote>:last-child{margin-bottom:0}.markdown blockquote cite:before{content:'\2014 \00A0'}.markdown .code{border-radius:3px;word-wrap:break-word}.markdown pre{border-radius:3px;word-wrap:break-word;border:1px solid #ccc;overflow:auto;padding:.5em}.markdown pre code{border:0;display:block}.markdown pre>code{font-family:Consolas,Inconsolata,Courier,monospace;font-weight:700;white-space:pre;margin:0}.markdown code{border-radius:3px;word-wrap:break-word;border:1px solid #ccc;padding:0 5px;margin:0 2px}.markdown img{max-width:100%}.markdown mark{color:#000;background-color:#fcf8e3}.markdown table{padding:0;border-collapse:collapse;border-spacing:0;margin-bottom:16px}.markdown table tr td,.markdown table tr th{border:1px solid #ccc;margin:0;padding:6px 13px}.markdown table tr th{font-weight:700}.markdown table tr th>:first-child{margin-top:0}.markdown table tr th>:last-child{margin-bottom:0}.markdown table tr td>:first-child{margin-top:0}.markdown table tr td>:last-child{margin-bottom:0}@import url(http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,300,700);.haroopad{padding:20px;color:#222;font-size:15px;font-family:"Roboto Condensed",Tauri,"Hiragino Sans GB","Microsoft YaHei",STHeiti,SimSun,"Lucida Grande","Lucida Sans Unicode","Lucida Sans",'Segoe UI',AppleSDGothicNeo-Medium,'Malgun Gothic',Verdana,Tahoma,sans-serif;background:#fff;line-height:1.6;-webkit-font-smoothing:antialiased}.haroopad a{color:#3269a0}.haroopad a:hover{color:#4183c4}.haroopad h2{border-bottom:1px solid #e6e6e6}.haroopad h6{color:#777}.haroopad hr{border:1px solid #e6e6e6}.haroopad blockquote>code,.haroopad h1>code,.haroopad h2>code,.haroopad h3>code,.haroopad h4>code,.haroopad h5>code,.haroopad h6>code,.haroopad li>code,.haroopad p>code,.haroopad td>code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:85%;background-color:rgba(0,0,0,.02);padding:.2em .5em;border:1px solid #efefef}.haroopad pre>code{font-size:1em;letter-spacing:-1px;font-weight:700}.haroopad blockquote{border-left:4px solid #e6e6e6;padding:0 15px;color:#777}.haroopad table{background-color:#fafafa}.haroopad table tr td,.haroopad table tr th{border:1px solid #e6e6e6}.haroopad table tr:nth-child(2n){background-color:#f2f2f2}.hljs{display:block;overflow-x:auto;padding:.5em;background:#fdf6e3;color:#657b83;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment,.hljs-doctype,.hljs-javadoc,.hljs-pi,.lisp .hljs-string{color:#93a1a1}.css .hljs-tag,.hljs-addition,.hljs-keyword,.hljs-request,.hljs-status,.hljs-winutils,.method,.nginx .hljs-title{color:#859900}.hljs-command,.hljs-dartdoc,.hljs-hexcolor,.hljs-link_url,.hljs-number,.hljs-phpdoc,.hljs-regexp,.hljs-rules .hljs-value,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#2aa198}.css .hljs-function,.hljs-built_in,.hljs-chunk,.hljs-decorator,.hljs-id,.hljs-identifier,.hljs-localvars,.hljs-title,.vhdl .hljs-literal{color:#268bd2}.hljs-attribute,.hljs-class .hljs-title,.hljs-constant,.hljs-link_reference,.hljs-parent,.hljs-type,.hljs-variable,.lisp .hljs-body,.smalltalk .hljs-number{color:#b58900}.css .hljs-pseudo,.diff .hljs-change,.hljs-attr_selector,.hljs-cdata,.hljs-header,.hljs-pragma,.hljs-preprocessor,.hljs-preprocessor .hljs-keyword,.hljs-shebang,.hljs-special,.hljs-subst,.hljs-symbol,.hljs-symbol .hljs-string{color:#cb4b16}.hljs-deletion,.hljs-important{color:#dc322f}.hljs-link_label{color:#6c71c4}.tex .hljs-formula{background:#eee8d5}.MathJax_Hover_Frame{border-radius:.25em;-webkit-border-radius:.25em;-moz-border-radius:.25em;-khtml-border-radius:.25em;box-shadow:0 0 15px #83A;-webkit-box-shadow:0 0 15px #83A;-moz-box-shadow:0 0 15px #83A;-khtml-box-shadow:0 0 15px #83A;border:1px solid #A6D!important;display:inline-block;position:absolute}.MathJax_Hover_Arrow{position:absolute;width:15px;height:11px;cursor:pointer}#MathJax_About{position:fixed;left:50%;width:auto;text-align:center;border:3px outset;padding:1em 2em;background-color:#DDD;color:#000;cursor:default;font-family:message-box;font-size:120%;font-style:normal;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;-khtml-border-radius:15px;box-shadow:0 10px 20px gray;-webkit-box-shadow:0 10px 20px gray;-moz-box-shadow:0 10px 20px gray;-khtml-box-shadow:0 10px 20px gray;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}.MathJax_Menu{position:absolute;background-color:#fff;color:#000;width:auto;padding:2px;border:1px solid #CCC;margin:0;cursor:default;font:menu;text-align:left;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;box-shadow:0 10px 20px gray;-webkit-box-shadow:0 10px 20px gray;-moz-box-shadow:0 10px 20px gray;-khtml-box-shadow:0 10px 20px gray;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}.MathJax_MenuItem{padding:2px 2em;background:0 0}.MathJax_MenuArrow{position:absolute;right:.5em;color:#666}.MathJax_MenuActive .MathJax_MenuArrow{color:#fff}.MathJax_MenuArrow.RTL{left:.5em;right:auto}.MathJax_MenuCheck{position:absolute;left:.7em}.MathJax_MenuCheck.RTL{right:.7em;left:auto}.MathJax_MenuRadioCheck{position:absolute;left:1em}.MathJax_MenuRadioCheck.RTL{right:1em;left:auto}.MathJax_MenuLabel{padding:2px 2em 4px 1.33em;font-style:italic}.MathJax_MenuRule{border-top:1px solid #CCC;margin:4px 1px 0}.MathJax_MenuDisabled{color:GrayText}.MathJax_MenuActive{background-color:Highlight;color:HighlightText}.MathJax_Menu_Close{position:absolute;width:31px;height:31px;top:-15px;left:-15px}#MathJax_Zoom{position:absolute;background-color:#F0F0F0;overflow:auto;display:block;z-index:301;padding:.5em;border:1px solid #000;margin:0;font-weight:400;font-style:normal;text-align:left;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;box-shadow:5px 5px 15px #AAA;-webkit-box-shadow:5px 5px 15px #AAA;-moz-box-shadow:5px 5px 15px #AAA;-khtml-box-shadow:5px 5px 15px #AAA;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}#MathJax_ZoomOverlay{position:absolute;left:0;top:0;z-index:300;display:inline-block;width:100%;height:100%;border:0;padding:0;margin:0;background-color:#fff;opacity:0;filter:alpha(opacity=0)}#MathJax_ZoomFrame{position:relative;display:inline-block;height:0;width:0}#MathJax_ZoomEventTrap{position:absolute;left:0;top:0;z-index:302;display:inline-block;border:0;padding:0;margin:0;background-color:#fff;opacity:0;filter:alpha(opacity=0)}.MathJax_Preview{color:#888}#MathJax_Message{position:fixed;left:1px;bottom:2px;background-color:#E6E6E6;border:1px solid #959595;margin:0;padding:2px 8px;z-index:102;color:#000;font-size:80%;width:auto;white-space:nowrap}#MathJax_MSIE_Frame{position:absolute;top:0;left:0;width:0;z-index:101;border:0;margin:0;padding:0}.MathJax_Error{color:#C00;font-style:italic}footer{position:fixed;font-size:.8em;text-align:right;bottom:0;margin-left:-25px;height:20px;width:100%}</style>
</head>
<body class="markdown haroopad" style="background-color:#fff;">
<div id="wrap">
<h1 id="burp-suite-使用教程"><a name="burp-suite-使用教程" href="#burp-suite-使用教程"></a>Burp Suite 使用教程</h1><p>================================================</p><h2 id="第一部分-burp-suite-基础"><a name="第一部分-burp-suite-基础" href="#第一部分-burp-suite-基础"></a>第一部分 Burp Suite 基础</h2><ol>
<li><a href="#1F">Burp Suite 安装和环境配置</a></li><li><a href="#2F">Burp Suite代理和浏览器设置</a></li><li><a href="#3F">如何使用Burp Suite 代理</a></li><li><a href="#4F">SSL和Proxy高级选项</a></li><li><a href="#5F">如何使用Burp Target</a></li><li><a href="#6F">如何使用Burp Spider</a></li><li><a href="#7F">如何使用Burp Scanner</a></li><li><a href="#8F">如何使用Burp Intruder</a></li><li><a href="#9F">如何使用Burp Repeater</a></li><li><a href="#10F">如何使用Burp Sequencer</a></li><li><a href="#11F">如何使用Burp Decoder</a></li><li><a href="#12F">如何使用Burp Comparer</a></li></ol><h2 id="第二部分-burp-suite-高级"><a name="第二部分-burp-suite-高级" href="#第二部分-burp-suite-高级"></a>第二部分 Burp Suite 高级</h2><ol>
<li>数据查找、提取以及正则表达式的使用</li><li>Burp Suite拓展功能的使用</li><li>Burp Suite应用商店插件的使用</li><li>如何编写自己的Burp Suite插件</li></ol><h2 id="第三部分-burp-suite-综合使用"><a name="第三部分-burp-suite-综合使用" href="#第三部分-burp-suite-综合使用"></a>第三部分 Burp Suite 综合使用</h2><ol>
<li>使用Burp Suite测试Web Services服务</li><li>使用Burp, Sqlmap进行自动化SQL注入渗透测试</li><li>使用Burp、PhantomJS进行XSS检测</li><li>使用Burp 、Radamsa进行浏览器fuzzing</li><li>使用Burp 、Android Killer进行安卓app渗透测试</li></ol><hr class="page"><h3 id="第一章-burp-suite-安装和环境配置"><a name="第一章-burp-suite-安装和环境配置" href="#第一章-burp-suite-安装和环境配置"></a><a name="1F" id="1F">第一章 Burp Suite 安装和环境配置</a></h3><p>Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,我们使用Burp Suite将使得测试工作变得更加容易和方便,即使在不需要娴熟的技巧的情况下,只有我们熟悉Burp Suite的使用,也使得渗透测试工作变得轻松和高效。 </p><p>Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作。 </p><p>Burp Suite可执行程序是java文件类型的jar文件,免费版的可以从<a href="https://portswigger.net/burp/downloadfree.html">免费版下载地址</a>进行下载。免费版的Burp Suite会有许多限制,很多的高级工具无法使用,如果您想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有 <br> </p><ol>
<li>Burp Scanner<br> </li><li>工作空间的保存和恢复<br> </li><li>拓展工具,如Target Analyzer, Content Discovery和 Task Scheduler<br> </li></ol><p>本章主要讲述Burp Suite的基本配置,包含如下内容: <br></p><ul>
<li>如何从命令行启动Burp Suite<br></li><li>如何设置JVM内存 大小<br></li><li>IPv6问题调试</li></ul><h4 id="如何从命令行启动burp-suite"><a name="如何从命令行启动burp-suite" href="#如何从命令行启动burp-suite"></a>如何从命令行启动Burp Suite</h4><p>Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,需要提前Java可运行环境。如果没有配置Java环境或者不知道如何配置的童鞋请参考<a href="http://jingyan.baidu.com/article/925f8cb836b26ac0dde0569e.html">win7电脑上的Java环境配置</a><br>配置完Java环境之后,首先验证Java配置是否正确,如果输入java -version 出现下图的结果,证明配置正确且已完成。<br><img src="images/java_env.png" alt="java环境验证"><br>这时,你只要在cmd里执行java -jar /your_burpsuite_path/burpSuite.jar即可启动Burp Suite,或者,你将Burp Suite的jar放入class_path目录下,直接执行java -jar burpSuite.jar也可以启动。</p><p><mark>注意:your_burpsuite_path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的jar文件名称一致</mark></p><h4 id="如何设置jvm内存-大小"><a name="如何设置jvm内存-大小" href="#如何设置jvm内存-大小"></a>如何设置JVM内存 大小</h4><p>如果Java可运行环境配置正确的话,当你双击burpSuite.jar即可启动软件,这时,Burp Suite自己会自动分配最大的可用内存,具体实际分配了多少内存,默认一般为64M。当我们在渗透测试过程,如果有成千上万个请求通过Burp Suite,这时就可能会导致Burp Suite因内存不足而崩溃,从而会丢失渗透测试过程中的相关数据,这是我们不希望看到的。因此,当我们启动Burp Suite时,通常会指定它使用的内存大小。<br>一般来说,我们通常会分配2G的内存供Burp Suite使用,如果你的电脑内存足够,可以分配4G;如果你的电脑内存足够小,你也可以分配128M。当你给Burp Suite分配足够多的内存时,它能做的工作也会更多。指定Burp Suite占用内存大小的具体配置方法是在启动脚本里添加如下命令行参数:<br><ins>假设启动脚本的名称为burp_suite_start.bat,则该bat脚本的内容为</ins></p><pre><code data-origin="<pre><code>java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
</code></pre>">java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
</code></pre><p>其中参数-Xmx指定JVM可用的最大内存,单位可以是M,也可以是G,如果是G为单位的话,则脚本内容为:</p><pre><code data-origin="<pre><code>java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
</code></pre>">java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
</code></pre><p><em>更多关于JVM性能调优的知识请阅读 <a href="https://docs.oracle.com/cd/E13222_01/wls/docs81/perform/JVMTuning.html">Oracle JVM Tuning</a></em></p><h4 id="ipv6问题调试"><a name="ipv6问题调试" href="#ipv6问题调试"></a>IPv6问题调试</h4><p>Burp Suite是不支持IPv6地址进行数据通信的,这时在cmd控制台里就会抛出如下异常</p><pre><code data-origin="<pre><code>java.net.SocketException: Permission denied
</code></pre>">java.net.SocketException: Permission denied
</code></pre><p>同时,浏览器访问时,也会出现异常</p><pre><code data-origin="<pre><code>Burp proxy error: Permission denied: connect
</code></pre>">Burp proxy error: Permission denied: connect
</code></pre><p>当出现如上问题时,我们需要修改启动脚本,添加对IPv4的指定后,重启Burp Suite即可。</p><pre><code data-origin="<pre><code>java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar
</code></pre>">java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar
</code></pre><p>通过 -Djava.net.preferIPv4Stack=true参数的设置,告诉Java运行环境,使用IPv4协议栈进行数据通信,IPv6协议将会被禁止使用。<br>这个错误最常见于64位的windows操作系统上,使用了32位的JDK</p><hr class="page"><h3 id="第二章-burp-suite代理和浏览器设置"><a name="第二章-burp-suite代理和浏览器设置" href="#第二章-burp-suite代理和浏览器设置"></a><a name="2F" id="2F">第二章 Burp Suite代理和浏览器设置</a></h3><p>Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量,通过拦截,Burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。</p><p>在日常工作中,我们最常用的web客户端就是的web浏览器,我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过Burp Suite代理的流量数据进行处理。</p><p>下面我们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。</p><h4 id="ie设置"><a name="ie设置" href="#ie设置"></a>IE设置</h4><p>当Burp Suite 启动之后,默认分配的代理地址和端口是127.0.0.1 :8080,我们可以从Burp Suite的proxy选项卡的options上查看。如图:<br><img src="images/burp_port.png" alt=""><br>现在,我们通过如下步骤的设置即可完成IE通过Burp Suite 代理的相关配置。</p><ol>
<li>启动IE浏览器</li><li>点击【工具】菜单,选择【Internet】选项<br><img src="images/2_2.png" alt=""></li><li>打开【连接】选项卡,点击【局域网设置】,进行代理设置。<br><img src="images/2_3.png" alt=""></li><li>在代理服务器设置的地址输入框中填写127.0.0.1,端口填写8080,点击【确定】,完成代理服务器的设置。<br><img src="images/2_4.png" alt=""></li><li>这时,IE的设置已经完成,你可以访问 <a href="http://burp">http://burp</a> 将会看到Burp Suite的欢迎界面。<br><img src="images/2_5.png" alt=""></li></ol><h4 id="firefox设置"><a name="firefox设置" href="#firefox设置"></a>FireFox设置</h4><p>与IE的设置类似,在FireFox中,我们也要进行一些参数设置,才能将FireFox浏览器的通信流量,通过Burp Suite代理进行传输。详细的步骤如下:</p><ol>
<li>启动FireFox浏览器,点击【工具】菜单,点击【选项】。<br><img src="images/2_6.png" alt=""></li><li>在新打开的about:preferences#advanced窗口中,依次点击【高级】-【网络】,我们将会看到FireFox连接网络的设置选项。<br><img src="images/2_7.png" alt=""></li><li>点击【设置】,在弹出的【连接设置】对话框中,找到“http代理”,填写127.0.0.1,端口填写8080,最后点击【确认】保存参数设置,完成FireFox的代理配置。<br><img src="images/2_8.png" alt=""><br>当然,FireFox浏览器中,可以添加FireFox的扩展组件,对代理服务器进行管理。例如FireX Proxy、Proxy Swither都是很好用的组件,感兴趣的读者可以自己下载试用一下。</li></ol><h4 id="google-chrome设置"><a name="google-chrome设置" href="#google-chrome设置"></a>Google Chrome设置</h4><p>Google Chrome使用Burp Suite作为代理服务器的配置步骤如下:</p><ol>
<li>启动Google Chrome浏览器,在地址栏输入chrome://settings/,回车后即显示Google Chrome浏览器的配置界面<br><img src="images/2_9.png" alt=""></li><li>点击底部的【显示高级设置】,将显示Google Chrome浏览器的高级设置。<br><img src="images/2_10.png" alt=""></li><li>当然,你也可以直接在搜索框中输入“代理”,回车后将自动定位到代理服务器设置功能。<br><img src="images/2_11.png" alt=""></li><li>点击【更改代理服务器设置】,windows系统下将会弹出IE浏览器的代理设置,此时,按照IE浏览器的设置步骤,完成代理服务器的配置即可。</li></ol><p>除了上述的三种常用的浏览器外,还有Safari浏览器也有不少的用户在使用,其代理配置请<a href="http://jingyan.baidu.com/article/a378c960849144b3282830dc.html">点击阅读</a>进行查看。</p><hr class="page"><h3 id="第三章-如何使用burp-suite代理"><a name="第三章-如何使用burp-suite代理" href="#第三章-如何使用burp-suite代理"></a><a name="3F" id="3F"> 第三章 如何使用Burp Suite代理</a></h3><p>Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端和服务端之间传输的数据。</p><p>本章主要讲述以下内容:</p><ul>
<li>Burp Proxy基本使用</li><li>数据拦截与控制</li><li>可选项配置Options</li><li>历史记录History</li></ul><hr class="section"><h4 id="burp-proxy基本使用"><a name="burp-proxy基本使用" href="#burp-proxy基本使用"></a>Burp Proxy基本使用</h4><p>通过上一章的学习,我们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢地当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。<br>一般使用Burp Proxy时,大体涉及环节如下:</p><ol>
<li>首先,确认JRE已经安装好,Burp Suite可以启动并正常运行,且已经完成浏览器的代理服务器配置。</li><li>打开Proxy功能中的Intercept选项卡,确认拦截功能为“Interception is on”状态,如果显示为“Intercept is off”则点击它,打开拦截功能。<br><img src="images/3_1.png" alt=""></li><li>打开浏览器,输入你需要访问的URL(以<a href="http://baike.baidu.com/"></a><a href="http://baike.baidu.com/">http://baike.baidu.com/</a>为例)并回车,这时你将会看到数据流量经过Burp Proxy并暂停,直到你点击【Forward】,才会继续传输下去。如果你点击了【Drop】,则这次通过的数据将会被丢失,不再继续处理。</li><li>当我们点击【Forward】之后,我们将看到这次请求返回的所有数据。<br><img src="images/3_2.png" alt=""></li><li>当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括以下四项:<br><img src="images/3_3.png" alt=""></li></ol><ul>
<li>Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。你可以通过手工修改这些信息,对服务器端进行渗透测试。</li><li>params 这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。</li><li>headers 这个视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好。</li><li>Hex 这个视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。</li></ul><p>默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。<br>所有流经Burp Proxy的消息,都会在http history记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,进行进一步的测试。如下图所示:<br><img src="images/3_04.png" alt=""></p><hr class="section"><h4 id="数据拦截与控制"><a name="数据拦截与控制" href="#数据拦截与控制"></a>数据拦截与控制</h4><p>Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是:<br><strong>Forward</strong>的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。<br><strong>Drop</strong>的功能是你想丢失当前拦截的消息,不再forward到服务器端。<br><strong>Interception is on</strong>表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;<strong>Interception is off</strong>表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。<br><strong>Action</strong>的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。<br><img src="images/3_05.png" alt=""><br><strong>Comment</strong>的功能是指对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。<br><img src="images/3_06.png" alt=""><br><strong>Highlight</strong>的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。<br><img src="images/3_06.png" alt=""></p><p>除了Intercept中可以对通过Proxy的消息进行控制外,在可选项设置选项卡Options中也有很多的功能设置也可以对流经的消息进行控制和处理。</p><h4 id="可选项配置options"><a name="可选项配置options" href="#可选项配置options"></a>可选项配置Options</h4><p>当我们打开可选项设置选项卡Options,从界面显示来看,主要包括以下几大板块(涉及https的功能不包含在本章内容里,后面会一章专门叙述):</p><ul>
<li>客户端请求消息拦截</li><li>服务器端返回消息拦截</li><li>服务器返回消息修改</li><li>正则表达式配置</li><li>其他配置项</li></ul><h5 id="客户端请求消息拦截"><a name="客户端请求消息拦截" href="#客户端请求消息拦截"></a>客户端请求消息拦截</h5><p>客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:<br><img src="images/3_07.png" alt=""><br>主要包含拦截规则配置、错误消息自动修复、自动更新Content-Length消息头三个部分。</p><ol>
<li>如果intercept request based on the follow rules的checkbox被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调节规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【Remove】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:<br><img src="images/3_12.png" alt=""><br>拦截规则添加时,共包含4个输入项。Boolean opertor表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数, cookies, 头部或者内容, 状态码, MIME类型, HTML页面的title等。Match relationship表示此条规则是匹配还是不匹配Match condition输入的关键字。当我们输入这些信息,点击【OK】按钮,则规则即被保存。</li><li>如果Automatically fix missing的checkbox被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。</li><li>如果Automatically update Content-Length的checkbox被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值。</li></ol><h5 id="服务器端返回消息拦截"><a name="服务器端返回消息拦截" href="#服务器端返回消息拦截"></a>服务器端返回消息拦截</h5><p>服务器端返回消息拦截顾名思义是指拦截服务器端返回的消息的相关配置项,其界面如下:<br><img src="images/3_08.png" alt=""><br>它的功能主要包含intercept response based on the follow rules和Automatically update Content-Length header when the response edited两个选项,其功能分别与客户端请求消息拦截中的intercept request based on the follow rules、Automatically update Content-Length header when the request edited相对应,就不在赘述,请参上一节的内容。</p><h5 id="服务器返回消息修改"><a name="服务器返回消息修改" href="#服务器返回消息修改"></a>服务器返回消息修改</h5><p>服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面如下:<br><img src="images/3_09.png" alt=""><br>自上而下,每一个选择项分别对应的功能是</p><ul>
<li>显示form表单中隐藏字段</li><li>高亮显示form表单中隐藏字段</li><li>使form表单中的disable字段生效,变成可输入域</li><li>移除输入域长度限制</li><li>移动JavaScript验证</li><li>移动所有的JavaScript</li><li>移除 <code><object></code>标签</li><li>转换https超链接为http链接</li><li>移除所有cookie中的安全标志</li></ul><p>通过服务器返回消息修改可选择项的设置,可以方便渗透测试人员在安全评估过程中突破原有的数据限制,更好、更快地检测服务器端的安全性。</p><h4 id="正则表达式配置"><a name="正则表达式配置" href="#正则表达式配置"></a>正则表达式配置</h4><p>此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不同之处还在于支持正则表达式语言。<br><img src="images/3_10.png" alt=""><br>当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。例如,当我们要替换所有返回消息中的邮箱地址为t0data@burpsuite.com时,可以参考下图的设置填写输入项并保存验证。<br><img src="images/3_13.png" alt=""></p><h4 id="其他配置项"><a name="其他配置项" href="#其他配置项"></a>其他配置项</h4><p>其他配置项主要是杂项设置。其界面如下:<br><img src="images/3_11.png" alt=""><br>自上而下依次的功能是</p><ul>
<li><p>指定使用HTTP/1.0协议与服务器进行通信<br>这项设置用于强制客户端采用HTTP/1.0协议与服务器进行通信,一般客户端使用的HTTP协议版本依赖于客户端浏览器,但某些服务器或者应用,必须使用HTTP/1.0协议,此时可勾选此项</p>
</li><li><p>指定使用HTTP/1.0协议反馈消息给客户端<br>目前所有的浏览器均支持HTTP/1.0协议和HTTP/1.1协议,强制指定HTTP/1.0协议主要用于显示浏览器的某些方面的特征,比如,阻止HTTP管道攻击。</p>
</li><li><p>设置返回消息头中的“Connection:close”<br>可用于某些情况下的阻止HTTP管道攻击。</p>
</li><li><p>请求消息头中脱掉Proxy-*<br>浏览器请求消息中,通常会携带代理服务器的相关信息,此选项主要用于清除消息头中的代理服务器信息。</p>
</li><li><p>解压请求消息中的压缩文件<br>某些应用在与服务器端进行交互时,会压缩消息体,勾选此选项,则Burp Suite 会自动解压消息体</p>
</li><li><p>解压返回消息中的压缩文件<br>大多数浏览器支持压缩的消息体,勾选此选项,则Burp Suite 会自动解压被服务器端压缩的消息体</p>
</li><li><p>禁用<a href="http://burp">http://burp</a></p>
</li><li><p>允许通过DNS和主机名访问web接口<br>即允许通过域名或主机名访问Burp Suite</p>
</li><li><p>不在浏览器中显示Burp Suite错误<br>在我们使用Burp Suite时,如果发生了Burp Suite自身的错误,会在浏览器中显示,如果勾选了此项,则不会在浏览器中显示此类错误。</p>
</li><li><p>禁用日志到历史和网站地图中<br>此选项的作用是阻止记录日志到历史和网站地图,在某些情况下可能有用,比如说,通过上游服务器进行认证或者做正则表达式替换时,为了降低内存的消耗,减少日志的储存,你可以勾选此项。</p>
</li><li><p>拦截功能开始设置<br>这个选项主要用来配置intercept功能的生效方式,分为总是生效、 总是失效 、从上一次的Burp Suite中恢复设置3种方式。</p>
</li></ul><h4 id="历史记录history"><a name="历史记录history" href="#历史记录history"></a>历史记录History</h4><hr class="section"><p>Burp Proxy的历史记录由HTTP历史和WebSockets历史两个部分组成。<br><img src="images/3_14.png" alt=""><br>HTTP历史界面由筛选过滤器、历史记录列表、消息详情3个部分组成。<br><img src="images/3_15.png" alt=""><br>当我们在某一条历史记录上单击,会在下方的消息详解块显示此条消息的文本详细信息。当我们在某条消息上双击,则会弹出此条消息的详细对话框。<br><img src="images/3_16.png" alt=""><br>我们可以点击对话框右上方的【Previous】、【Next】按钮,浏览上一条或下一条消息的内容,也可以修改Raw的请求参数,然后执行多种【Action】操作。<br><img src="images/3_17.png" alt=""></p><p>历史消息列表中主要包含请求序列号、请求协议和主机名、请求的方式、URL路径、请求参数、Cookie、是否用户编辑过消息、服务器端返回的HTTP状态码等信息。通过这些信息,我们可以对一次客户端与服务器端交互的HTTP消息详情做出准确的分析,同时,在下方的详情视图中,也提供基于正则表达式方式的匹配查找功能,更好的方便渗透测试人员查找消息体中的相关信息。<br><img src="images/3_18.png" alt=""></p><p>当我们在做产品系统的安全评估过程中,会在HTTP历史中保存了大量的日志记录,为了更友好的消息管理,Burp提供了筛选过滤器功能。当我们点击HTTP历史标签下发的Filter时,将弹出筛选过滤器界面。<br><img src="images/3_19.png" alt=""><br>按照过滤条件的不同,筛选过滤器划分出7个子板块,分别是</p><ul>
<li><p>按照请求类型过滤<br>你可以选择仅显示当前作用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前作用域”时,此作用域需要在Burp Target的Scope选项中进行配置,详细请阅读Burp Target相关章节。</p>
</li><li><p>按照MIME类型过滤<br>你可以控制是否显示服务器端返回的不同的文件类型的消息,比如只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其他文本、图片、Flash、二进制文件 8种形式。</p>
</li><li><p>按照服务器返回的HTTP状态码过滤<br>Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。比如,如果你只想显示返回状态码为200的请求成功消息,则勾选2XX。</p>
</li><li><p>按照查找条件过滤<br>此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你可以选择 1.正则表达式 2.大小写敏感 3.否定查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将不再显示。</p>
</li><li><p>按照文件类型过滤<br>通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅仅显示哪些,另一个是不显示哪些。如果是仅仅显示哪些,在show only的输入框中填写显示的文件类型,同样,如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。</p>
</li><li><p>按照注解过滤<br>此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。</p>
</li><li><p>按照监听端口过滤<br>此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,我们很少用到。</p>
</li></ul><p>现在,我们再看看WebSockets历史选项的功能,从界面上我们可以看出,WebSockets历史所提供的功能和选项是HTTP历史的一个子集,只是因为采用的通信方式的不同,而被独立出来成为一个专门的视图。其功能的使用方式与HTTP历史雷同,此处就不在赘述。</p><p>通过本章的学习,你对Burp Suite的代理模式有了更深入的理解,知道了作为中间人的Burp Proxy在消息拦截过程中,可以对请求消息、应答消息做多方面的修改,并可以把消息传递给Burp的其他组件做进一步的测试。同时,Burp Proxy的历史日志功能和多种筛选过滤器让我们在使用中,能快速地查找需要的数据和关键信息,这些,都极大地帮助你提高了工作效率。</p><h3 id="第四章-ssl和proxy高级选项"><a name="第四章-ssl和proxy高级选项" href="#第四章-ssl和proxy高级选项"></a><a name="4F" id="4F">第四章 SSL和Proxy高级选项</a></h3><p>在前一章,我们已经学习了HTTP消息如何通过Burp Proxy进行拦截和处理,本章我们将继续学习HTTPS协议消息的拦截和处理。</p><p>HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密。基于HTTPS协议这些特性,我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。</p><p>本章包含的主要内容有</p><ul>
<li>CA证书的安装</li><li>CA证书的卸载</li><li>Proxy监听设置</li><li>SSL请求处理与转发</li><li>隐形代理设置</li></ul><p>我们都知道,在HTTPS通信过程中,一个很重要的介质是CA证书,下面就我们一起来看看Burp Suite中CA证书的安装。</p><h4 id="ca证书的安装"><a name="ca证书的安装" href="#ca证书的安装"></a>CA证书的安装</h4><hr class="section"><p>一般来说,Burp Proxy代理过程中的CA主要分为如下几个步骤(以win7下IE9为例):</p><ol>
<li>首先,根据前三章内容的学习,你已配置好Burp Proxy监听端口和IE的代理服务器设置。其次,你的IE浏览器中没有安装过Burp Suite的CA证书,如果已经安装,请先卸载证书。详细的卸载方法请参考<a href="#xiezai">CA证书的卸载</a>章节。</li><li>以管理员身份,启动IE浏览器,在地址栏输入<a href="http://burp"></a><a href="http://burp">http://burp</a>并回车,进入证书下载页面<br><img src="images/4_1.png" alt=""></li><li>点击上图所示的证书下载,另存为到本地目录。</li><li>点击浏览器上的【工具】菜单,打开【Internet选项】。<br><img src="images/4_02.png" alt=""></li><li>在弹出的证书对话框中,点击【内容】-【证书】。<br><img src="images/4_03.png" alt=""></li><li>在弹出的证书对话框中,选中【受信任的根证书颁发机构】,点击【导入】。<br><img src="images/4_04.png" alt=""></li><li>点击【下一步】,选择步骤3保存的证书文件,进行下一步操作。<br><img src="images/4_05.png" alt=""></li><li>指定证书的存储位置,如图<br><img src="images/4_06.png" alt=""></li><li>点击【下一步】,直至完成。这时,会提示安全警告,点击【是】,提示导入完成。<br><img src="images/4_07.png" alt=""></li><li>关闭IE,重启浏览器,CA证书即配置完成。</li></ol><h4 id="ca证书的卸载"><a name="ca证书的卸载" href="#ca证书的卸载"></a><a name="xiezai" id="xiezai"> CA证书的卸载</a></h4><hr class="section"><p>CA证书的卸载的通常有两种方式,第一种方式在上一章节CA证书安装中的第6步,找到需要卸载的证书,点击【删除】即可。我们这里主要描述第二种删除方式,主要是为了解决在第一种方式的基础上删除按钮失效或者证书列表里看不到的证书也一起删除的方法。</p><ol>
<li>首先,我们打开cmd,输入mmc,或者你在运行输入框里直接输入mmc回车,会弹出管理控制台。<br><img src="images/4_08.png" alt=""></li><li>点击【文件】菜单,打开【添加/删除管理单元】<br><img src="images/4_09.png" alt=""></li><li>找到证书,如下图1,点击【添加】按钮,如下图2<br><img src="images/4_10.png" alt=""></li><li>在弹出的对话框中默认选中【我当前的用户】,点击【完成】,一直到结束,这是会在控制台跟节点下多了一个证书的节点。<br><img src="images/4_11.png" alt=""></li><li>打开CA证书所在的位置,选择删除即可。<br><img src="images/4_12.png" alt=""></li><li>这时,你再返回到IE浏览器的证书列表里,则不会再看到被删除的证书了。</li></ol><p>除了IE之外,其他的浏览器如FireFox、Chrome、Sarifa等都证书的安装和卸载基本类似,操作时可以以IE的CA证书安装作为参考。</p><h4 id="proxy监听设置"><a name="proxy监听设置" href="#proxy监听设置"></a>Proxy监听设置</h4><hr class="section"><p>当我们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。特别是当我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器端通信的数据流量,这种情况下,我们会使用自己的Proxy监听设置,而不会使用默认设置。</p><ul>
<li>Proxy监听设置</li></ul><p><img src="images/4_13.png" alt=""><br>当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。<br><img src="images/4_14.png" alt=""><br>Proxy监听设置主要包含3块功能:</p><ol>
<li><p>端口和IP绑定设置Binding<br>绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP地址分仅本地回路、所有接口、指定地址三种模式,在渗透测试中,无论你选择哪种模式,你需要明白一点,当你选择的非本地回路IP地址时,同局域网内的其他电脑也可以访问你的监听地址。</p>
</li><li><p>请求处理Request Handling<br>请求处理主要是用来控制接受到Burp Proxy监听端口的请求后,如果对请求进行处理的。<br><img src="images/4_15.png" alt=""><br>其具体配置可分为:端口的转发、主机名/域名的转发、强制使用SSL和隐形代理4个部分。当我们配置了端口的转发时,所有的请求都会被转发到这个端口上;如果我们配置了主机或域名的转发,则所有的请求会转发到指定的主机或域名上。同时,我们可以指定,通过Burp Proxy的消息是否强制使用SSL,如果设置了此项,则请求若是http协议,经Burp proxy代理后将转换为https协议。隐形代理主要是用于测试富客户端应用或者是非浏览器代理方式的应用,当我们设置了它,@@@@待续</p>
</li><li><p>SSL 证书<br>这些设置控制呈现给SSL客户端的服务器SSL证书。这些选项可以使用解析使用拦截代理时出现的一些SSL问题:<br>您可以消除您的浏览器的SSL警报,并需要建立SSL例外。<br>其中,网页加载来自其他域的SSL保护的项目,可以确保这些正确的加载到浏览器,而不需要先手动接受代理的SSL证书为每个域引用。<br>可以与该拒绝如果接收了无效的SSL证书连接到服务器胖客户机应用程序的工作。<br>下列选项可供选择:<br>使用自签名证书 - 一个简单的自签名SSL证书呈现给您的浏览器,它总是会导致SSL警告。<br>生成CA签名每个主机的证书 - 这是默认选项。在安装时,打嗝创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用,每次打嗝时运行。当你的浏览器发出的SSL连接指定主机,打嗝生成该主机的SSL证书,由CA证书签名。您可以安装打嗝的CA证书作为浏览器中的受信任的根,从而使每个主机证书没有任何警报接受。您还可以导出在其它工具或打嗝的其他实例使用CA证书。<br>生成与特定的主机名CA签发的证书 - 这是类似于前面的选项;然而,打嗝,会生成一个主机证书与每一个SSL连接使用,使用指定的主机名。表演时无形的代理,因为客户端不发送连接请求,因此打嗝无法识别之前的SSL协商所需的主机名,此选项有时是必要的。正如前面,你可以安装打嗝的CA证书作为信任根。<br>使用自定义证书 - 此选项可以加载一个特定的证书(在PKCS#12格式)呈现给浏览器。如果应用程序使用这需要一个特定的服务器证书(例如,与给定的序列号或证书链)的客户端应该使用这个选项。</p>
</li></ol><ul>
<li>SSL直连</li></ul><h3 id="第五章-如何使用burp-target"><a name="第五章-如何使用burp-target" href="#第五章-如何使用burp-target"></a><a id="5F" name="5F">第五章 如何使用Burp Target</a></h3><p>Burp Target 组件主要包含站点地图、目标域、Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息,下面我们就分别来看看Burp Target的三个组成部分。</p><p>本章的主要内容有:</p><ul>
<li>目标域设置 Target Scope</li><li>站点地图 Site Map</li><li>Target 工具的使用</li></ul><h4 id="目标域设置-target-scope"><a name="目标域设置-target-scope" href="#目标域设置-target-scope"></a>目标域设置 Target Scope</h4><p> Target Scope中作用域的定义比较宽泛,通常来说,当我们对某个产品进行渗透测试时,可以通过域名或者主机名去限制拦截内容,这里域名或主机名就是我们说的作用域;如果我们想限制得更为细粒度化,比如,你只想拦截login目录下的所有请求,这时我们也可以在此设置,此时,作用域就是目录。总体来说,Target Scope主要使用于下面几种场景中:</p><ul>
<li>限制站点地图和Proxy 历史中的显示结果</li><li>告诉Burp Proxy 拦截哪些请求</li><li>Burp Spider抓取哪些内容</li><li>Burp Scanner自动扫描哪些作用域的安全漏洞</li><li>在Burp Intruder和Burp Repeater 中指定URL</li></ul><p>通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音。在Target Scope的设置中,主要包含两部分功能:允许规则和去除规则。<br><img src="images/5_04.png" alt=""><br>其中允许规则顾名思义,即包含在此规则列表中的,视为操作允许、有效。如果此规则用于拦截,则请求消息匹配包含规则列表中的将会被拦截;反之,请求消息匹配去除列表中的将不会被拦截。<br><img src="images/5_05.png" alt=""><br>从上图的添加规则对话框中我们可以看出,规则主要由协议、域名或IP地址、端口、文件名4个部分组成,这就意味着我们可以从协议、域名或IP地址、端口、文件名4个维度去控制哪些消息出现在允许或去除在规则列表中。</p><hr class="underscore"><p>当我们设置了Target Scope (默认全部为允许),使用Burp Proxy进行代理拦截,在渗透测试中通过浏览器代理浏览应用时,Burp会自动将浏览信息记录下来,包含每一个请求和应答的详细信息,保存在Target站点地图中。</p><h3 id="站点地图-site-map"><a name="站点地图-site-map" href="#站点地图-site-map"></a>站点地图 Site Map</h3><p>下图所示站点地图为一次渗透测试中,通过浏览器浏览的历史记录在站点地图中的展现结果。<br><img src="images/5_01.png" alt=""><br>从图中我们可以看出,Site Map的左边为访问的URL,按照网站的层级和深度,树形展示整个应用系统的结构和关联其他域的url情况;右边显示的是某一个url被访问的明细列表,共访问哪些url,请求和应答内容分别是什么,都有着详实的记录。<br>基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取。<br><img src="images/5_02.png" alt=""><br>同时,我们也可以将某个域直接加入 Target Scope中.<br><img src="images/5_03.png" alt=""><br>除了加入 Target Scope外,从上图中,我们也可以看到,对于站点地图的分层,可以通过折叠和展开操作,更好的分析站点结构。</p><hr class="underscore"><h4 id="target-工具的使用"><a name="target-工具的使用" href="#target-工具的使用"></a>Target 工具的使用</h4><p>Target 工具的使用的使用主要包括以下部分:</p><ul>
<li>手工获取站点地图</li><li>站点比较</li><li>攻击面分析</li></ul><p>当我们手工获取站点地图时,需要遵循以下操作步骤:<br>1.设置浏览器代理和Burp Proxy代理,并使之能正常工作。<br>2.关闭Burp Proxy的拦截功能。<br>3.手工浏览网页,这时,Target会自动记录站点地图信息。<br>手工获取站点地图的方式有一个好处就是,我们可以根据自己的需要和分析,自主地控制访问内容,记录的信息比较准确。与自动抓取相比,则需要更长的时间,如果需要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操作一遍所需要的精力和时间对渗透测试人员来说付出都是很大的。</p><p>站点比较是一个Burp提供给渗透测试人员对站点进行动态分析的利器,我们在比较帐号权限时经常使用到它。当我们登陆应用系统,使用不同的帐号,帐号本身在应用系统中被赋予了不同的权限,那么帐号所能访问的功能模块、内容、参数等都是不尽相同的,此时使用站点比较,能很好的帮助渗透测试人员区分出来。一般来说,主要有以下3种场景:<br>1.同一个帐号,具有不同的权限,比较两次请求结果的差异。<br>2.两个不同的帐号,具有不同的权限,比较两次请求结果的差异。<br>3.两个不同的帐号,具有相同的权限,比较两次请求结果的差异。</p><p>下面我们就一起来看看如何进行站点比较。<br>1.首先我们在需要进行比较的功能链接上右击,找到站点比较的菜单,点击菜单进入下一步。<br><img src="images/5_06.png" alt=""><br>2.由于站点比较是在两个站点地图之间进行的,所以我们在配置过程中需要分别指定Site Map 1和Site Map2。通常情况下,Site Map 1 我们默认为当前会话。如图所示,点击【Next】。<br><img src="images/5_07.png" alt=""><br>3.这时我们会进入Site Map 1 设置页面,如果是全站点比较我们选择第一项,如果仅仅比较我们选中的功能,则选择第二项。如下图,点击【Next】。如果全站点比较,且不想加载其他域时,我们可以勾选只选择当前域。<br><img src="images/5_08.png" alt=""><br>4.接下来就是Site Map 2 的配置,对于Site Map 2我们同样有两种方式,第一种是之前我们已经保存下来的Burp Suite 站点记录,第二种是重新发生一次请求作为Site Map2.这里,我们选择第二种方式。<br><img src="images/5_09.png" alt=""><br>5.如果上一步选择了第二种方式,则进入请求消息设置界面。在这个界面,我们需要指定通信的并发线程数、失败重试次数、暂停的间隙时间。<br><img src="images/5_10.png" alt=""><br>6.设置完Site Map 1 和Site Map 2之后,将进入请求消息匹配设置。在这个界面,我们可以通过URL文件路径、Http请求方式、请求参数、请求头、请求Body来对匹配条件进行过滤。<br><img src="images/5_11.png" alt=""><br>7..设置请求匹配条件,接着进入应答比较设置界面。在这个界面上,我们可以设置哪些内容我们指定需要进行比较的。从下图我们可以看出,主要有响应头、form表单域、空格、MIME类型。点击【Next】。<br><img src="images/5_12.png" alt=""><br>8.如果我们之前是针对全站进行比较,且是选择重新发生一次作为Site Map2的方式,则界面加载过程中会不停提示你数据加载的进度,如果涉及功能请求的链接较少,则很快进入比较界面。如下图。<br><img src="images/5_13.png" alt=""><br>9.从上图我们可以看到,站点比较的界面上部为筛选过滤器(这个过滤器与其他过滤器使用雷同,此处不再赘述),下部由左、中、右三块构成。左边为请求的链接列表,中间为Site Map 1 和Site Map 2的消息记录,右边为消息详细信息。当我们选择Site Map 1某条消息记录时,默认会自动选择Site Map 2与之对应的记录,这是有右上角的【同步选择】勾选框控制的,同时,在右边的消息详细区域,会自动展示Site Map 1与Site Map 2通信消息的差异,包含请求消息和应答消息,存在差异的地方用底色标注出来。<br><img src="images/5_14.png" alt=""></p><hr class="section"><p>攻击面分析是Burp Suite 交互工具(Engagement tools)中的功能,这里我们先看看Analyze Target使用,其他的功能会在高级使用相关章节讲述。<br>1.首先,我们通过站点地图,打开Analyze Target,如图所示。<br><img src="images/5_15.png" alt=""><br>2.在弹出的分析界面中,我们能看到概况、动态URL、静态URL、参数4个视图。<br><img src="images/5_16.png" alt=""><br>3.概况视图主要展示当前站点动态URL数量、静态URL数量、参数的总数、唯一的参数名数目,通过这些信息,我们对当前站点的总体状况有粗线条的了解。<br>4.动态URL视图展示所有动态的URL请求和应答消息,跟其他的工具类似,当你选中某一条消息时,下方会显示此消息的详细信息。<br><img src="images/5_17.png" alt=""><br>5.静态URL视图与动态URL视图类似,如图.<br><img src="images/5_18.png" alt=""><br>6.参数视图有上中下三部分组成,上部为参数和参数计数统计区,你可以通过参数使用的次数进行排序,对使用频繁的参数进行分析;中部为参数对于的使用情况列表,记录对于的参数每一次的使用记录;下部为某一次使用过程中,请求消息和应答消息的详细信息。<br><img src="images/5_19.png" alt=""></p><p>在使用攻击面分析功能时,需要注意,此功能主要是针对站点地图中的请求URL进行分析,如果某些URL没有记录,则不会被分析到。同时,在实际使用中,存在很点站点使用伪静态,如果请求的URL中不带有参数,则分析时无法区别,只能当做静态URL来分析。</p><h3 id="第六章-如何使用burp-spider"><a name="第六章-如何使用burp-spider" href="#第六章-如何使用burp-spider"></a><a id="6F" name="6F">第六章 如何使用Burp Spider</a></h3><p>通过前一章的学习,我们了解到,存在于Burp Target中的站点信息,我们可以直接传送到Burp Spider中进行站点信息的爬取。这一章我们重点来学习Burp Spider的使用,主要包含两个方面:</p><ul>
<li>Spider控制(Control)</li><li>Spider可选项设置(Options)</li></ul><p>Burp Spider的功能主要使用于大型的应用系统测试,它能在很短的时间内帮助我们快速地了解系统的结构和分布情况,下面我们就先来看看Spider控制,</p><h3 id="spider控制"><a name="spider控制" href="#spider控制"></a>Spider控制</h3><hr class="section"><p>Spider控制界面由Spider 状态和Spider 作用域两个功能组成。<br><img src="images/6_01.png" alt=""><br>Spider 状态除了显示当前进度、传输情况、请求队列等统计信息外,还有Spider运行/暂停按钮与清空队列按钮,分别用来控制Spider是否运行和队列中的数据管理。而Spider 作用域是用来控制Spider的抓取范围,从图中我们可以看到有两种控制方式,一种是使用上一章讲的Target Scope,另一种是用户自定义。当我们选中用户自定义按钮,界面改变成下面的样子,如下图所示。<br><img src="images/6_02.png" alt=""><br>此处用户自定义作用域的配置与Target Scope 的配置完全一致,具体使用方法请参数上一章Target Scope 的配置。</p><h4 id="spider可选项设置"><a name="spider可选项设置" href="#spider可选项设置"></a>Spider可选项设置</h4><p>Spider可选项设置由抓取设置、抓取代理设置、表单提交设置、应用登陆设置、蜘蛛引擎设置、请求消息头设置六个部分组成。</p><ul>
<li>抓取设置(Crawls Settings)<br>-此项是用来控制蜘蛛抓取网页内容的方式<br><img src="images/6_03.png" alt=""><br>自上而下依次是:检查robots.txt 文件、检测404应答、忽略内容为空的链接、爬取根目录下所有文件和目录、对每一个动态页面发送无参数请求、最大链接深度、最大请求URL参数数目</li><li>抓取代理设置(Passive Spidering )<br><img src="images/6_04.png" alt=""><br>这个设置比较简单,第一个如果勾选,则爬取时通过Burp Proxy,反之则不通过。第二个设置是控制代理的链接深度。默认为0,表示无限深度,即无论有多少层级的URL均需要爬取。</li><li>表单提交设置(Form Submission)<br>表单提交设置主要是用来控制在蜘蛛抓取过程中,对于form表单的处理方式,其界面如下图:<br><img src="images/6_05.png" alt=""><br>第一个下拉选项中,是对form表单域的处理内容做控制,默认选择Action URL、method、fields、values,即同时处理请求的url、请求方式GET或者POST、包含哪些属性名以及属性值。点击下拉选项,可以选择其中一个或者几个。如下图:<br><img src="images/6_06.png" alt=""><br>接下来的设置的控制form表单的处理方式:不提交表单、需要手工确认、使用默认值自动填写三种方式。<br>不提交表单的含义是抓取时候不提交表单数据,这个非常好理解;需要手工确认是指当抓取表单时,弹出界面,让渗透测试人员自己手工确认表单数据;使用默认值自动填写是对表单的内容,使用下方的各个配置项进行匹配(匹配时可以使用完全匹配和正则表达式匹配两种方式其一),默认填写这些值,然后自动进行提交。其界面如下图所示:<br><img src="images/6_07.png" alt=""><br>从上图我们可以看出,对于表单的输入域我们可以添加和修改以满足实际情况的需要,如果还有其他的属性输入域我们不想每一个都录入,可以勾选“设置不匹配的属性值”,统一指定输入的值。如图中的555-555-0199@example.com</li><li>应用登陆(Application Login)<br>此选择项主要用来控制抓取时,登陆页面的处理方式。<br><img src="images/6_08.png" alt=""><br>选择项依次是:不提交登陆信息、手工确认登陆信息、作为普通表单处理(如果选择此项,则把登陆表单的form当作其他表单一样处理,对于登陆表单将使用”表单提交设置” 中的具体配置)、自动提交登陆(选择此项,需要在下方的输入框中指定用户名和密码)</li><li>蜘蛛引擎设置(Spider Engine)和HTTP 消息头设置(Requests Header)<br><img src="images/6_09.png" alt=""><br>其中蜘蛛引擎设置主要是用来控制蜘蛛抓取的线程数、网络失败时重试的次数、重试暂停间隙等,而HTTP 消息头设置是用来设置Http请求的消息头自定义,比如说,我们可以编辑消息头信息,可以指定请求为移动设备,或者不同的手机型号,或者指定为Safari浏览器,指定HTTP协议版本为1.1、使用referer等。</li></ul><hr class="underscore"><h3 id="第七章-如何使用burp-scanner"><a name="第七章-如何使用burp-scanner" href="#第七章-如何使用burp-scanner"></a><a name="7F" id="7F">第七章 如何使用Burp Scanner</a></h3><p>Burp Scanner的功能主要是用来自动检测web系统的各种漏洞,我们可以使用Burp Scanner代替我们手工去对系统进行普通漏洞类型的渗透测试,从而能使得我们把更多的精力放在那些必须要人工去验证的漏洞上。</p><p>在使用Burp Scanner之前,我们除了要正确配置Burp Proxy并设置浏览器代理外,还需要在Burp Target的站点地图中存在需要扫描的域和URL模块路径。如下图所示:<br><img src="images/7_01.png" alt=""><br>当Burp Target的站点地图中存在这些域或URL路径时,我们才能对指定的域或者URL进行全扫描或者分支扫描。下面我们就来整体的学习一下,一次完整的Burp Scanner使用大概需要哪些步骤。</p><p>本章的主要内容有:</p><ul>
<li>Burp Scanner基本使用步骤</li><li>Burp Scanner扫描方式</li><li>Burp Scanner扫描报告</li><li>Burp Scanner扫描控制</li><li>Burp Scanner可选项设置</li></ul><hr class="section"><h4 id="burp-scanner基本使用步骤"><a name="burp-scanner基本使用步骤" href="#burp-scanner基本使用步骤"></a>Burp Scanner基本使用步骤</h4><p>Burp Scanner基本使用主要分为以下15个步骤,在实际使用中可能会有所改变,但大体的环节主要就是下面的这些。<br>1.确认Burp Suite正常启动并完成浏览器代理的配置。<br>2.进入Burp Proxy,关闭代理拦截功能,快速的浏览需要扫描的域或者URL模块。<br>3.当我们浏览时,默认情况下,Burp Scanner会扫描通过代理服务的请求,并对请求的消息进行分析来辨别是非存在系统漏洞。同时,当我们打开Burp Target时,也会在站点地图中显示请求的URL树。<br><img src="images/7_02.png" alt=""><br>4.我们可以有针对性的选择Burp Target站点地图下的某个节点上链接URL上,弹出右击菜单,进行Active Scan。然后在弹出的确认框中,点击【YES】即进行扫描整个域。<br><img src="images/7_03.png" alt=""><br>6.这时,我们打开Burp Scanner 选项卡,在队列子选项卡中,会看到当前扫描的进度。如果我们双击URL,则弹出扫描结果的提示信息。<br><img src="images/7_04.png" alt=""><br>7.如果我们在Burp Target站点地图下选择某个子目录进行扫描,则会弹出更优化的扫描选项,我们可以对选项进行设置,指定哪些类型的文件不再扫描范围之内。<br><img src="images/7_05.png" alt=""><br>8.当我们再次返回到Burp Scanner 选项卡界面时,选择的子目录已经开始在扫描中,其扫描的进度依赖于需要扫描内容的多少。<br>9.如果我们没有定义了目标作用域(Target Scope),最简单的方式就是在Burp Target站点地图上右击弹出菜单中添加到作用域,然后自动进行扫描。<br><img src="images/7_06.png" alt=""><br>10.然后进入Burp Scanner的Live scanning子选项卡,在Live Active Scanning控制块中,选择Use suite scope,这样,Burp Scanner将自动扫描经过Burp Proxy的交互信息。<br><img src="images/7_07.png" alt=""><br>11.当我们再次使用浏览器对需要测试的系统进行浏览时,Burp Scanner不会发送额外的请求信息,自动在浏览的交互信息的基础上,完成对请求消息的漏洞分析。<br>12.此时,当我再返回到Burp Target站点地图界面,将提示系统可能存在的漏洞情况,以及处理这些漏洞的建议。<br><img src="images/7_08.png" alt=""><br>13.同时,我们也可以在漏洞提示的请求信息上,将消息发送到Burp Repeater模块,对漏洞进行分析和验证。<br><img src="images/7_09.png" alt=""><br>14.随着Burp Scanner扫描的进度,在Burp Target站点地图界面上的issues模块中的漏洞信息也会不断的更新。<br>15.当Burp Scanner扫描完成之后,我们在Burp Target站点地图的选择链接右击,依次选择issues—>report issues for this host 即可导出漏洞报告。<br><img src="images/7_10.png" alt=""></p><hr class="section"><h4 id="burp-scanner扫描方式"><a name="burp-scanner扫描方式" href="#burp-scanner扫描方式"></a>Burp Scanner扫描方式</h4><p>通过以上的操作步骤我们可以学习到,Burp Scanner扫描方式主要有两种:主动扫描和被动扫描</p><ul>
<li>主动扫描(Active Scanning)</li></ul><p>当使用主动扫描模式时,Burp 会向应用发送新的请求并通过payload验证漏洞。这种模式下的操作,会产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:</p><ol>
<li>客户端的漏洞,像XSS、Http头注入、操作重定向;</li><li>服务端的漏洞,像SQL注入、命令行注入、文件遍历。</li></ol><p>对于第一类漏洞,Burp在检测时,会提交一下input域,然后根据应答的数据进行解析。在检测过程中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。<br>对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说SQL注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。Burp在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。</p><ul>
<li>被动扫描(Passive Scanning)</li></ul><p>当使用被动扫描模式时,Burp不会重新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生成环境的检测。一般来说,下列这些漏洞在被动模式中容易被检测出来:</p><ol>
<li>提交的密码为未加密的明文。</li><li>不安全的Cookie的属性,比如缺少的HttpOnly和安全标志。</li><li>cookie的范围缺失。</li><li>跨域脚本包含和站点引用泄漏。</li><li>表单值自动填充,尤其是密码。</li><li>SSL保护的内容缓存。</li><li>目录列表。</li><li>提交密码后应答延迟。</li><li>session令牌的不安全传输。</li><li>敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏。</li><li>不安全的ViewState的配置。</li><li>错误或者不规范的Content-type指令。</li></ol><p>虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前文说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。</p><h4 id="burp-scanner扫描报告"><a name="burp-scanner扫描报告" href="#burp-scanner扫描报告"></a>Burp Scanner扫描报告</h4><p>当我们对一个系统进行扫描完毕后,通常需要生成扫描报告,Burp Scanner支持的报告类型有HTML和XML两种格式。无法何种格式的扫描报告,其内容基本一致,主要由以下部分组成。报告样例可以点击<a href="https://portswigger.net/burp/samplereport/BurpScannerSampleReport.html">Burp Scanner report</a>查看.</p><p>除了头部的综述和目录外,每一个漏洞的章节通常包含:<br>1.序号 表示漏洞的序号,如果有多个同样的漏洞,报告中只会有一个序号。<br>2.漏洞的类型,可以近似地理解与OWASP的类型相对应。<br>3.漏洞名称,具体可参考 Issue Definitions子选项卡。<br>4.漏洞路径,漏洞对应的多个URL链接。<br>5.漏洞的发生点,通常为参数名。<br>6.问题的描述(Issue background) 描述漏洞发生的成因<br>7.解决建议(Remediation background)提供解决的思路和建议<br>8.请求消息和应答消息的详细信息。</p><p>如果我们想对某次的扫描结果进行保存,需要Burp Target 的站点地图子选项卡的问题面板(Issue)上右击,在弹出的菜单中选择report Issues进行设置并保存即可。(注意,如果想导出所有的漏洞,需要选中所有的问题列表)<br>具体导出漏洞报告的步骤如下:<br>1.选中需要保存的漏洞,右击弹出菜单,如下图:<br><img src="images/7_11.png" alt=""><br>2.在弹出的对话框中选择需要保存的漏洞报告格式。<br><img src="images/7_12.png" alt=""><br>3.选择漏洞明细包含内容。<br><img src="images/7_13.png" alt=""><br>4.请求消息和应答消息设置。<br><img src="images/7_14.png" alt=""><br>5.选择报告包含的哪些漏洞。<br><img src="images/7_15.png" alt=""><br>6.最后,指定报告存放位置、报告名称等属性。<br><img src="images/7_16.png" alt=""></p><h4 id="burp-scanner扫描控制"><a name="burp-scanner扫描控制" href="#burp-scanner扫描控制"></a>Burp Scanner扫描控制</h4><p>在对系统做主动扫描时,当我们激活Burp Scanner,扫描控制的相关设置也同时开始了。如下图所示,当我们在Burp Target 的站点地图上的某个URL执行Actively scan this host时,会自动弹出过滤设置。<br><img src="images/7_011.png" alt=""><br>在这里,我们可以设置扫描时过滤多媒体类型的应答、过滤js、css、图片等静态资源文件。当我们点击【next】按钮,进入扫描路径分支的选择界面。如下图:<br><img src="images/7_012.png" alt=""></p><p>以上是Burp Scanner开始扫描前的控制,当我们设置完这些之后,将正式进入扫描阶段。此时,在Scan queue队列界面,会显示扫描的进度、问题总数、请求数和错误统计等信息。<br><img src="images/7_013.png" alt=""><br>在此界面上,我们可以选中某个记录,在右击的弹出菜单中,对扫描进行控制。比如取消扫描、暂停扫描、恢复扫描、转发其他Burp组件等。如下图:<br><img src="images/7_014.png" alt=""><br>同时,在Results界面,自动显示队列中已经扫描完成的漏洞明细。<br><img src="images/7_015.png" alt=""><br>在每一个漏洞的条目上,我们可以选中漏洞。在弹出的右击菜单中,依次选择Set severity,对漏洞的等级进行标识。也可以选择Set confidence,对漏洞是否存在或误报进行标注。</p><p>另外,在Live Scanning选项卡中,我们也可以对请求的域、路径、IP地址、端口、文件类型进行控制,如下图:<br><img src="images/7_016.png" alt=""><br>如果你选中了Use suite Scope,则指定条件与你在Burp Target中的Scope配置完全一致,如果你选择了Use customs scope,则可以自己定义Scope,对于Scope的详细配置,请参考Burp Target中的Scope配置相关章节。</p><h4 id="burp-scanner可选项设置"><a name="burp-scanner可选项设置" href="#burp-scanner可选项设置"></a>Burp Scanner可选项设置</h4><p>通过前几节的学习,我们已经知道Burp Scanner有主动扫描和被动扫描两个扫描方式,在Options子选项卡中,主要是针对这两种扫描方式在实际扫描中的扫描动作进行设置。具体的设置包含以下部分:</p><ol>
<li>攻击插入点设置(Attack Insertion Points)<br><img src="images/7_017.png" alt=""><br>Burp Scanner在扫描中,基于原始的请求消息,在每一个插入点构造参数,对原数据进行替换,从而去验证系统漏洞的存在性。通常,以下位置都会被Burp Scanner选择为插入点。</li></ol><ul>
<li>URL请求参数</li><li>Body参数(比如form表单的值,上传文件、XML参数、JSON参数)</li><li>Cookie参数</li><li>参数的名称和个数(通过增加参数个数或者增加参数来验证漏洞)</li><li>Http Header信息(通过对header信息的篡改来验证漏洞)</li><li>AFM编码(对flash通信漏洞的验证)</li><li>REST风格的参数 </li></ul><p>对于以上的攻击插入点,Burp Scanner还是可以通过改变参数的位置来验证漏洞,Burp Scanner中共有URL to body 、URL to cookie、Body to URL、Body to cookie、Cookie to URL、Cookie to body 六种方式。当我们在扫描验证中,可以根据实际请求,灵活选择位置改变的组合,高效快速地验证漏洞。但我们也应该明白,当我们选中了位置改变来验证漏洞,即选择了Burp发送更多的请求,如果是在生成系统中的测试需要慎重。</p><p>另外,Burp的攻击插入点也支持嵌套的方式,这意思是指,如果一个请求的参数值是JSON对象或者XML文本,Burp Scanner在扫描时,可以对JSON对象或XML文本中的属性、属性值进行验证,这会极大地提高了Burp Scanner对漏洞扫描的涉及面。这是由上图中的use nested insertion points的checkbox是否选中去控制的,默认情况下是选中生效的。</p><p>当我们设置攻击插入点的同时,我们也可以指定哪些参数进行跳过,不需要进行漏洞验证。在设置时,Burp是按照服务器端参数跳过和所有参数均跳过两种方式来管理的,界面如下图:<br><img src="images/7_018.png" alt=""></p><p>2 主动扫描引擎设置(Active Scanning Engine)<br><img src="images/7_019.png" alt=""><br>主动扫描引擎设置主要是用来控制主动扫描时的线程并发数、网络失败重试间隔、网络失败重试次数、请求延迟、是否跟踪重定向。其中请求延迟设置(Throttle between requests)和其子选项延迟随机数 (Add random variations to throttle)在减少应用负荷,模拟人工测试,使得扫描更加隐蔽,而不易被网络安全设备检测出来。<br>至于这些参数的具体设置,需要你根据服务器主机的性能、网络带宽、客户端测试机的性能做相应的调整。一般来说,如果您发现该扫描运行缓慢,但应用程序表现良好,你自己的CPU利用率较低,可以增加线程数,使您的扫描进行得更快。如果您发现发生连接错误,应用程序正在放缓,或你自己的电脑很卡,你应该减少线程数,加大对网络故障的重试次数和重试之间的间隔。</p><p>3.主动扫描优化设置(Active Scanning Optimization)<br><img src="images/7_020.png" alt=""><br>此选项的设置主要是为了优化扫描的速度和准确率,尽量地提高扫描速度的同时降低漏洞的误报率。<br>扫描速度(Scan speed)分快速、普通、彻底三个选项,不同的选项对应于不同的扫描策略,当选择彻底扫描(Thorough)时,Burp会发送更多的请求,对漏洞的衍生类型会做更多的推导和验证。而当你选择快速扫描(Fast),Burp则只会做一般性的、简单的漏洞验证。<br>扫描精准度(Scan accuracy)也同样分为三个选项:最小化假阴性(Minimize false negatives)、普通、最小化假阳性(Minimize false positives)。扫描精准度主要是用来控制Burp的扫描过程中针对漏洞的测试次数。当我们选择最小化假阳性时,Burp会做更多的验证测试,来防止假阳性漏洞的存在,但也是恰恰基于此,当Burp做更多的验证测试时,可能存在恰好无法获取应答的误报,增加了漏洞的噪音。<br>智能攻击选择(Use intelligent attack selection )这个选项通过智能地忽略一些攻击插入点基值的检查,比如说一个参数值包含不正常出现在文件名中的字符,Burp将跳过文件路径遍历检查此参数,使用此选项可加速扫描,并降低在提升扫描速度的同时会导致漏报率上升的风险。</p><p>4.主动扫描范围设置(Active Scanning Areas)<br><img src="images/7_021.png" alt=""><br>在主动扫描过程中,你可以根据你的扫描时间、关注的重点、可能性存在的漏洞类型等情况,选择不同的扫描范围。这里可选择的扫描范围有:</p><ul>
<li>SQL注入 -可以使不同的测试技术(基于误差,时间延迟测试和布尔条件测试),并且也使检查所特有的单独的数据库类型(MSSQL,Oracle和MySQL的)。</li><li>操作系统命令注入 - (信息通知和盲注)。</li><li>反射式跨站点脚本</li><li>存储的跨站点脚本</li><li>文件路径遍历</li><li>HTTP头注入</li><li>XML/ SOAP注入</li><li>LDAP注入</li><li>URL重定向</li><li>http消息头可操纵</li><li>服务器的问题</li></ul><p>5.被动扫描范围设置(Passive Scanning Areas)<br><img src="images/7_022.png" alt=""><br>因为被动扫描不会发送新的请求,只会对原有数据进行分析,其扫描范围主要是请求和应答消息中的如下参数或漏洞类型:Headers、Forms、Links、Parameters、Cookies、MIME type、Caching、敏感信息泄露、Frame框架点击劫持、ASP.NET ViewState 。</p><hr class="page"><h3 id="第八章-如何使用burp-intruder"><a name="第八章-如何使用burp-intruder" href="#第八章-如何使用burp-intruder"></a><a name="8F" id="8F">第八章 如何使用Burp Intruder</a></h3><p>Burp Intruder作为Burp Suite中一款功能极其强大的自动化测试工具,通常被系统安全渗透测试人员被使用在各种任务测试的场景中。本章我们主要学习的内容有:</p><ul>
<li>Intruder使用场景和操作步骤</li><li>Payload类型与处理</li><li>Payload 位置和攻击类型</li><li>可选项设置(Options)</li><li>Intruder 攻击和结果分析</li></ul><hr class="section"><h5 id="intruder使用场景和操作步骤"><a name="intruder使用场景和操作步骤" href="#intruder使用场景和操作步骤"></a>Intruder使用场景和操作步骤</h5><p>在渗透测试过程中,我们经常使用Burp Intruder,它的工作原理是:Intruder在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会携带一个或多个有效攻击载荷(Payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。Burp Intruder通常被使用在以下场景:</p><ol>
<li>标识符枚举<br>Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如,用户名,文件ID和账户号码。</li><li>提取有用的数据<br>在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄。</li><li></li></ol>
<footer style="position:fixed; font-size:.8em; text-align:right; bottom:0px; margin-left:-25px; height:20px; width:100%;">generated by <a href="http://pad.haroopress.com" target="_blank">haroopad</a></footer>
</div>
</body>
</html>