-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathswat
682 lines (532 loc) · 29.8 KB
/
swat
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
<a name="top"></a>
# w3af
ghi chép về w3af
## Mục lục
[1. Khái niệm](#contents)
[2. Cài đặt](#install)
[2.1. Chuẩn bị](#prepare)
[2.2. Cài đặt](#setup)
[3. Cấu trúc](#structure)
[4. Thực hiện](#running)
[5. ]
[]
===
<a name=""></a>
## 1. w3af là gì ?
<a name="contents"></a>
**w3af** (web application attack and audit framework) là một công cụ hỗ trợ kiểm thử bảo mật cho các ứng dụng web.
<a name=""></a>
## 2. Cài đặt (ví dụ trên Ubuntu 14.04 LTS)
<a name="install"></a>
Cài đặt trên các nền tảng khác có thể xem [tại đây](http://docs.w3af.org/en/latest/install.html)
### Các công cụ cần có :
- Git client :
$ apt-get install git
- Python 2.7 có sẵn trong hệ thống Linux
- Pip version 1.1 (công cụ để quản lý các cài cắm lib của Python)
$ apt-get install python-pip
### Cài đặt
```
git clone https://github.com/andresriancho/w3af.git
cd w3af/
./w3af_console
. /tmp/w3af_dependency_install.sh
```
Giải thích :
- Đầu tiên clone project của w3af từ github về local.
- cd vào thư mục w3af
- Chạy w3af_console
- Trong khi chạy, chương trình báo thiếu một số gói để chạy
- Chạy w3af_dependency_install.sh để cài các gói thiếu đó
Sau khi quá trình hoàn tất
- ./w3af_console để sử dụng giao diện console.
- ./w3af_gui để sử dụng giao diện đồ họa (lưu ý khi chạy có thể yêu cầu thêm một số gói, chỉ cần làm theo hướng dẫn hiện ra)
<a name=""></a>
## 3. Cấu trúc
<a name="structure"></a>
Framework này chia làm 3 nhóm plugin chính : `crawl`, `audit` và `attack`.
### a. Các plugin chính
#### Crawl plugins
Chúng chỉ có một nhiệm vụ là tìm những URL, form hoặc những điểm tiêm nhiễm khác.
Ví dụ một discovery plugin là `web spider` sẽ nhận đầu vào là các URL và trả về một hay nhiều các điểm tiêm nhiễm.
Khi một người dùng cho phép nhiều hơn một plugin loại này, chúng sẽ chạy trong vòng lặp:
Nếu `plugin A` tìm thấy URL mới trong lần chạy đầu tiên, w3af sẽ gửi cho `plugin B`. Nếu `plugin B` sau đó tìm được URL mới, nó sẽ gửi cho `plugin A`. Tiến trình này sẽ tiếp diễn cho đến khi tất cả các tiến trình đều chạy và không tìm thêm được thông tin về các ứng dụng khác.
#### Audit plugins
Nhận các điểm tiêm nhiễm được tìm thấy bởi `crawl plugins` và nhận diện các lỗ hổng.
Một ví dụ điển hình của `audit plugin` là khi tìm kiếm lỗ hổng SQL Injection, nó sẽ gửi `a'b''c` tới tất cả các điểm tiêm nhiễm.
#### Attack plugins
Đối tượng của chúng là những lỗ hổng được tìm thấy bởi các `audit plugin`. Chúng thường trả về một `shell` trên remote server hoặc một `dump` của `remote tables` trong trường hợp khai thác SQL Injection.
### b. Các plugin khác
#### Infrastructure
Xác định các thông tin về mục tiêu hệ thống như WAF (web application firewalls), hệ điều hành, HTTP daemon.
#### Grep
Phân tích HTTP request và HTTP response được gửi từ những plugin khác và xác định các lỗ hổng.
Ví dụ, một grep plugin sẽ tìm comment trong HTML body có chứa "password" và phát ra một lỗ hổng.
<img src="http://i.imgur.com/IIl8tv9.png">
#### Output
Cách giao tiếp giữa framework và plugin với người dùng.
Output plugin sẽ lưu dữ liệu dưới dạng file text, xml, html. Những thông tin gỡ rối cũng được xuất ra và lưu lại để phân tích.
Thông điệp được gửi ra output sẽ được gửi tới các plugin được bật, nên nếu bạn cho phép ra 2 output plugin là `text_file` và `xml_file` thì cả hai sẽ log các lỗ hổng được tìm thấy bởi audit plugin.
#### Mangle
Cho phép thay đổi các request và response trên cơ sở các biểu thức thông thường.
#### Bruteforce
Bruteforce logins sẽ được tìm thấy trong suốt giai đoạn `crawl`.
#### Evasion
Những quy tắc tránh phát hiện xâm nhập đơn giản bằng cách thay đổi giao thức HTTP được tạo ra bởi các plugin khác.
### c. Cấu hình quét
Sau khi cấu hình những plugin `crawl` và `audit` và cài URL đích, bắt đầu quét và đợi cho các lỗ hổng xuất hiện trên giao diện người dung.
Một vài lỗ hổng được tìm thấy trong suốt quá trình quét được lưu lại và được dùng làm input cho các plugin `attack`. Một khi quá trình quét kết thúc, người dùng sẽ có thể thực thi các plugin `attack` trên các lỗ hổng được xác định.
### d. Khuyến nghị cấu hình
Chú ý: Thời gian quét phụ thuộc nhiều vào số lượng plugin được bật lên.
Trong hầu hết các trường hợp, `w3af` khuyến nghị nên sử dụng các plugin sau:
- crawl : web_spider
- audit : tất cả
- grep : tất cả
<a name=""></a>
## 4. Chạy w3af
<a name="running"></a>
**w3af** có 2 giao diện người dùng : console và đồ họa.
Bài viết này sẽ trình bày về giao diện console để dễ dàng giải thích các đặc trưng của framework.
Trên cửa sổ dòng lệnh (terminal), thư mục hiện tại là w3af:
$ ./w3af_console
Dấu nhắc lệnh của chương trình :
w3af>>>
Gõ `help` để tìm hiểu các tùy chọn của chương trình
```
w3af>>> help
|----------------------------------------------------------------|
| start | Start the scan. |
| plugins | Enable and configure plugins. |
| exploit | Exploit the vulnerability. |
| profiles | List and use scan profiles. |
| cleanup | Cleanup before starting a new scan. |
|----------------------------------------------------------------|
| help | Display help. Issuing: help [command] , prints |
| | more specific help about "command" |
| version | Show w3af version information. |
| keys | Display key shortcuts. |
|----------------------------------------------------------------|
| http-settings | Configure the HTTP settings of the framework. |
| misc-settings | Configure w3af misc settings. |
| target | Configure the target URL. |
|----------------------------------------------------------------|
| back | Go to the previous menu. |
| exit | Exit w3af. |
|----------------------------------------------------------------|
| kb | Browse the vulnerabilities stored in the |
| | Knowledge Base |
|----------------------------------------------------------------|
w3af>>>
w3af>>> help target
Configure the target URL.
w3af>>>
```
Để nhập một menu cấu hình, bạn chỉ cần gõ tên nó và Enter.
Một điều thú vị là chức năng autocomplete. Khi bạn viết một lệnh, bạn chỉ cần nhập một vài ký tự rồi ấn TAB, chương trình sẽ tự động hoàn thiện lệnh đó.
Tất cả các menu cấu hình cung cấp theo bởi các lệnh:
- help : đưa ra các thông tin chi tiết
- view : liệt kê các thông số cấu hình
- set : thay đổi các giá trị (hoặc ấn Ctrl+C)
- back : trở lại menu trước
Ví dụ các lệnh trong menu `http-settings`:
```
w3af/config:http-settings>>> help
|-----------------------------------------------------------------|
| view | List the available options and their values. |
| set | Set a parameter value. |
| save | Save the configured settings. |
|-----------------------------------------------------------------|
| back | Go to the previous menu. |
| exit | Exit w3af. |
|-----------------------------------------------------------------|
w3af/config:http-settings>>> view
|-----------------------------------------------------------------------------------------------|
| Setting | Value | Description |
|-----------------------------------------------------------------------------------------------|
| url_parameter | | Append the given URL parameter to every accessed URL. |
| | | Example: http://www.foobar.com/index.jsp;<parameter>?id=2 |
| timeout | 15 | The timeout for connections to the HTTP server |
| headers_file | | Set the headers filename. This file has additional headers|
| | | which are added to each request. |
|-----------------------------------------------------------------------------------------------|
...
|-----------------------------------------------------------------------------------------------|
| basic_auth_user | | Set the basic authentication username for HTTP requests |
| basic_auth_passwd | | Set the basic authentication password for HTTP requests |
| basic_auth_domain | | Set the basic authentication domain for HTTP requests |
|-----------------------------------------------------------------------------------------------|
w3af/config:http-settings>>> set timeout 5
w3af/config:http-settings>>> save
w3af/config:http-settings>>> back
w3af>>>
```
### Chạy w3af giao diện đồ họa GTK
Trên cửa sổ dòng lệnh (terminal), thư mục hiện tại là w3af:
$ ./w3af_gui
<img src="http://i.imgur.com/3hCUXRn.png">
GUI có phụ thuộc vào bên thứ ba nên phải cài thêm một số gói cài đặt khác.
### Cấu hình các plugin
Sử dụng `plugin` để cấu hình các plugins:
```
w3af>>> plugins
w3af/plugins>>> help
|-----------------------------------------------------------------------------|
| list | List available plugins. |
|-----------------------------------------------------------------------------|
| back | Go to the previous menu. |
| exit | Exit w3af. |
|-----------------------------------------------------------------------------|
| output | View, configure and enable output plugins |
| audit | View, configure and enable audit plugins |
| crawl | View, configure and enable crawl plugins |
| bruteforce | View, configure and enable bruteforce plugins |
| grep | View, configure and enable grep plugins |
| evasion | View, configure and enable evasion plugins |
| infrastructure | View, configure and enable infrastructure plugins |
| auth | View, configure and enable auth plugins |
| mangle | View, configure and enable mangle plugins |
|-----------------------------------------------------------------------------|
w3af/plugins>>>
```
Tất cả các plugin (trừ attack plugin) đều có thể cấu hình trong menu này
Liệt kê các plugin của `audit`:
```
w3af>>> plugins
w3af/plugins>>> list audit
|-----------------------------------------------------------------------------|
| Plugin name | Status | Conf | Description |
|-----------------------------------------------------------------------------|
| blind_sqli | | Yes | Identify blind SQL injection |
| | | | vulnerabilities. |
| buffer_overflow | | | Find buffer overflow vulnerabilities. |
...
```
Bật plugin `xss` và `sqli` :
```
w3af/plugins>>> audit xss, sqli
w3af/plugins>>> audit
|----------------------------------------------------------------------------|
| Plugin name | Status | Conf | Description |
|----------------------------------------------------------------------------|
| sqli | Enabled | | Find SQL injection bugs. |
| ssi | | | Find server side inclusion |
| | | | vulnerabilities. |
| ssl_certificate | | Yes | Check the SSL certificate validity |
| | | | (if https is being used). |
| un_ssl | | | Find out if secure content can also |
| | | | be fetched using http. |
| xpath | | | Find XPATH injection |
| | | | vulnerabilities. |
| xss | Enabled | Yes | Identify cross site scripting |
| | | | vulnerabilities. |
| xst | | | Find Cross Site Tracing |
| | | | vulnerabilities. |
|----------------------------------------------------------------------------|
w3af/plugins>>>
```
Nếu muốn biết plugin đó làm gì thì sử dụng lệnh `desc`:
```
w3af/plugins>>> audit desc xss
This plugin finds Cross Site Scripting (XSS) vulnerabilities.
One configurable parameters exists:
- persistent_xss
To find XSS bugs the plugin will send a set of javascript strings to
every parameter, and search for that input in the response.
The "persistent_xss" parameter makes the plugin store all data
sent to the web application and at the end, request all URLs again
searching for those specially crafted strings.
w3af/plugins>>>
```
Kiểm tra các thông số chi tiết cấu hình sử dụng : `config`
```
w3af/plugins>>> audit config xss
w3af/plugins/audit/config:xss>>> view
|-----------------------------------------------------------------------------|
| Setting | Value | Description |
|-----------------------------------------------------------------------------|
| persistent_xss | True | Identify persistent cross site scripting |
| | | vulnerabilities |
|-----------------------------------------------------------------------------|
w3af/plugins/audit/config:xss>>> set persistent_xss False
w3af/plugins/audit/config:xss>>> back
The configuration has been saved.
w3af/plugins>>>
```
### Lưu cấu hình
Mỗi cấu hình được lưu vào profiles, sử dụng lệnh `save_as`:
```
w3af>>> profiles
w3af/profiles>>> save_as tutorial
Profile saved.
```
Đường dẫn đến profiles là `~/.w3af/profiles/` và được load lên bằng lệnh `use` :
```
w3af>>> profiles
w3af/profiles>>> use fast_scan
The plugins configured by the scan profile have been enabled, and their options configured.
Please set the target URL(s) and start the scan.
w3af/profiles>>>
```
Để chia sẻ profile với những người dùng khác, sử dụng cờ `self-contained`:
```
w3af>>> profiles
w3af/profiles>>> save_as tutorial self-contained
Profile saved.
```
### Bắt đầu quét
Sau khi cấu hình xong, phải chọn URL làm mục tiêu quét :
```
w3af>>> target
w3af/config:target>>> set target http://localhost/
w3af/config:target>>> back
w3af>>>
```
Cuối cùng, `start` để bắt đầu :
```
w3af>>> start
```
<a name=""></a>
## 5. Tự động hóa việc sử dụng script
<a name="script"></a>
Khi phát triển w3af, chúng ta cần thực thi một cách nhanh chóng và dễ dàng theo từng bước, vì thế script được sinh ra để làm điều này. Sử dụng option `-s` để chạy script.
File script là một file text các lệnh trong `w3af_console`. Ví dụ một file script :
```
plugins
output text_file
output config text_file
set output_file output-w3af.txt
set verbose True
back
```
Những file script được lưu trong thư mục `scripts`
<a name=""></a>
## 6. Xác thực (Authentication)
<a name="authentication"></a>
Các kiểu xác thực mà w3af hỗ trợ :
- Xác thực HTTP Basic
- Xác thực NTLM
- Xác thực form
- Cài đặt một HTTP cookie
HTTP Basic và NTLM là hai loại xác thực HTTP thường được cung cấp bởi các máy chủ web, còn form và cookie thì được cung cấp bởi những ứng dụng của chính nó.
### Xác thực HTTP Basic và NTLM
Sử dụng `http-settings`, cấu hình cài đặt sẽ làm ảnh hưởng tới tất cả các plugin và các thư viện khác.
```
w3af>>> http-settings
w3af/config:http-settings>>> view
|--------------------------------------------------------------------------------------|
| Setting | Description |
|--------------------------------------------------------------------------------------|
...
|--------------------------------------------------------------------------------------|
| ntlm_auth_url | Set the NTLM authentication domain for HTTP requests |
| ntlm_auth_user | Set the NTLM authentication username for HTTP requests |
| ntlm_auth_passwd | Set the NTLM authentication password for HTTP requests |
| ntlm_auth_domain | Set the NTLM authentication domain (the windows domain name)|
| | requests. Please note that only NTLM v1 is supported. |
|--------------------------------------------------------------------------------------|
...
|--------------------------------------------------------------------------------------|
| basic_auth_user | Set the basic authentication username for HTTP requests |
| basic_auth_passwd | Set the basic authentication password for HTTP requests |
| basic_auth_domain | Set the basic authentication domain for HTTP requests |
|--------------------------------------------------------------------------------------|
w3af/config:http-settings>>>
```
Hãy lưu lại 2 cấu hình khác nhau cho HTTP Basic và NTLM. Nhập các cài đặt bạn ưa thích sau đó `save` lại. Tiếp theo là kích hoạt các plugin cụ thể và bắt đầu quét.
Xác thực NTLM và basic thường yêu cầu username với ký tự `\`, cần nhập \\ trong `w3af_console`.
Ví dụ người dùng là domain\user :
set basic_auth_user domain\\user
### Xác thực Form
Sử dụng nhóm plugin `auth` gồm 2 plugin :
- detailed
- generic
Những plugin này là những plugin đặc biệt, lưu giữ một phiên trong suốt quá trình quét, được làm mới 5 giây một lần trong khi quét.
##### Cấu hình `generic`
- username : username của ứng dụng web
- password : password của ứng dụng web
- username_field : tên form username (có thể tìm thấy trong mã nguồn)
- password_field : tên form password (có thể tìm thấy trong mã nguồn)
- auth_url : URL mà username và password POST tới.
- check_url : URL được sử dụng để kiểm tra phiên vẫn hoạt động, thường được đặt bởi trang cài đặt ứng dụng web.
- check_string : một chuỗi tìm thấy trong response HTTP của check_url vẫn hoạt động.
Một khi đã thiết lập được tất cả các cấu hình, khuyến khích bắt đầu với `crawl.web_spider` và `auth.generic`
Để mắt tới phần log của w3af, các plugin sẽ tạo ra các bản ghi như :
`Login success for admin/password` `User "admin" is currently logged into the application`
Đó là những gì bạn mong đợi khi login vào ứng dụng web. Nhưng cũng có thể là một thông báo lỗi :
Can't login into web application as admin/password
Một trong hai cấu hình không chính xác, hoặc ứng dụng cần thêm các thông số gửi tới `auth_url` và một trong số đó là sử dụng plugin `detailed`.
### Cài đặt HTTP Cookie
Trong trường hợp xác thực Form không hoạt động, có thể liên quan tới đăng nhập chứa thẻ chống tấn công CSRF hoặc 2 nhân tố xác thức. `w3af` cung cấp cho người dùng một phương thức để cài đặt một hoặc nhiều HTTP cookie để sử dụng trong suốt quá trình quét.
Bạn có thể capture lại cookie theo các cách mà bạn thích : trực tiếp từ trình duyệt, sử dụng web proxy, wireshark, ...
Sử dụng file cookie với định dạng Netscape, thay thế các giá trị trong ví dụ :
```
# Netscape HTTP Cookie File
.netscape.com TRUE / FALSE 946684799 NETSCAPE_ID 100103
```
Mỗi file tạo ra được thiết lập cài đặt `cookie_jar_file` trong `http-settings`.
Chắc chắn rằng các file tạo ra theo đặc tả, bộ phận phân tích cookie của Python thực sự nghiêm ngặt, nó sẽ không load cookie nếu có lỗi được tìm thấy.
### Cài đặt HTTP Header
Một vài ứng dụng web sử dụng HTTP Header cho việc xác thực, w3af cũng hỗ trợ điều này.
Phương thức này sẽ đặt một HTTP request header vào mỗi HTTP request, lưu ý là không có xác minh tình trạng phiên, nếu phiên bị vô hiệu hóa thì quá trình quét vẫn sử dụng một phiên không hợp lệ.
Để sử dụng phương pháp này, trước hết cần :
- Tạo một file text với nội dụng (không có dấu ngoặc kép và chèn các cookie mong muốn) :
Cookie: <insert-cookie-here>
- Sau đó, trong `http-settings`, cấu hình các thông số của `headers_file` trỏ đến tập tin vừa tạo.
- `save`
<a name=""></a>
## 7. Các trường hợp sử dụng thông thường
### Quét một thư mục
Thực hiện các bước sau :
- Đặt URL đích : http://domain/directory/
- Bật `audit`
- Bật `crawl.web_spider`
- Trong `crawl.web_spider`, đặt `True` cho `only_forward`
### Lưu các URL làm input cho các lần quét khác
Thu thập dữ liệu là một quá trình khá tốn kém, trong một số trường hợp phải can thiệp bằng tay (spider man plugin).
Để tối ưu việc này, các URL trong quá trình quét sẽ được lưu vào một file thông qua `output.export_requests`
Để load dữ liệu đã lưu, sử dụng plugin ` import_results`.
<a name=""></a>
## 8. Các trường hợp sử dụng nâng cao
### Ứng dụng web phức tạp
Một vài ứng dụng sử dụng ngôn ngữ phía trình duyệt như Javascript, Flash, Java applets nhưng w3af thì không hiểu.
Một plugin gọi là `spider_man` được tạo ra để giải quyết vấn đề này, cho phép người dùng phân tích một ứng dụng web phức tạp.
Plugin bắt đầu với một HTTP proxy được sử dụng bởi người dùng để điều hướng các trang web mục tiêu. Trong quá trình này, các plugin sẽ trích xuất thông tin từ các yêu cầu và gửi tới các plugin `audit`.
Một ví dụ đơn giản, giả sử w3af đang thực hiện `audit` mà không thấy bất kỳ liên kết nào trên trang chính. Sau khi người sử dụng ra soát lại thấy có một menu Java applet, nơi các phần khác được liên kết đến. Người dùng chạy w3af một lần nữa và kích hoạt plugin `crawl.spider_man`, điều hướng các trang web bằng tay bằng cách sử dụng trình duyệt và proxy spiderman.
Ví dụ chạy plugin `spider_man` :
```
w3af>>> plugins
w3af/plugins>>> crawl spider_man
w3af/plugins>>> audit sqli
w3af/plugins>>> back
w3af>>> target
w3af/target>>> set target http://localhost/
w3af/target>>> back
w3af>>> start
spider_man proxy is running on 127.0.0.1:44444 .
Please configure your browser to use these proxy settings and navigate the target site.
To exit spider_man plugin please navigate to http://127.7.7.7/spider_man?terminate .
```
Trình duyệt được cấu hình sử dụng địa chỉ 127.0.0.1:4444 như một HTTP proxy và điều hướng các trang đích.
### REST APIs
//TODO phần này còn sơ sài
`w3af` có thể được sử dụng để xác định và khai thác lỗ hổng trong REST API. Hai cách phổ biến nhất là:
- Javascript như một phần của ứng dụng web
- Một chương trình chạy phía bên ngoài trình duyệt
Các bước thực hiện để xác định các lỗ hổng trong một REST API sử dụng một ứng dụng `non-browser`:
- Sử dụng `spider_man` theo các bước phía trên
- Cấu hình REST API client gửi HTTP request qua `127.0.0.1:44444`
- Chạy REST APT client
- Dừng sử dụng proxy `spider_man`
curl -X GET http://127.7.7.7/spider_man?terminate --proxy http://127.0.0.1:44444
<a name="docker"></a>
## 9. w3af bên trong docker
//TODO chưa hoàn thành
### a. Các port và service
Một vài plugin như `crawl.spider_man` hay `audit.rfi` bắt đầu dịch vụ HTTP.
### b. Chia sẻ dữ liệu với container
### c. Sửa lỗi container
Container chạy một SSH daemon, có thể chạy bằng `w3af_console` hoặc `w3af_gui`. Để kết nối một container đang chạy, sử dụng username `root` và password `w3af`. Bạn không cần quan tâm đến điều này, các script trợ giúp sẽ kết nối container cho bạn.
Một cách khác để debug container là chạy script với cờ `-d`:
```
$ sudo ./w3af_console_docker -d
root@a01aa9631945:~#
```
<a name="exploit"></a>
## 10. Khai thác lỗ hổng ứng dụng web
`w3af` cho phép người dùng khai thác những lỗ hổng ứng dụng web một cách tự động. Những lỗ hổng được khai thác có thể sử dụng plugin `audit` hoặc vận dụng bằng tay.
Trong suốt quá trình quét, các lỗ hổng được tìm thấy và lưu tại một địa chỉ xác định, từ đó các plugin có thể đọc và sử dụng các thông tin để khai thác các lỗ hổng.
Khai thác một lỗ hổng bằng việc sử dụng một plugin `audit` một cách dễ dàng:
```
w3af>>> plugins
w3af/plugins>>> audit os_commanding
w3af/plugins>>> back
w3af>>> target
w3af/config:target>>> set target http://localhost/w3af/os_commanding/v.php?command=f0as9
w3af/config:target>>> back
w3af>>> start
Found 1 URLs and 1 different points of injection.
The list of URLs is:
- http://localhost/w3af/os_commanding/v.php
The list of fuzzable requests is:
- http://localhost/w3af/os_commanding/v.php | Method: GET | Parameters: (command)
Starting os_commanding plugin execution.
OS Commanding was found at: "http://localhost/w3af/os_commanding/v.php", using HTTP method GET.
The sent data was: "command=+ping+-c+9+localhost". The vulnerability was found in the request with id 5.
Finished scanning process.
w3af>>> exploit
w3af/exploit>>> exploit os_commanding
os_commanding exploit plugin is starting.
Vulnerability successfully exploited. This is a list of available shells:
- [0] <os_commanding_shell object (ruser: "www-data" | rsystem: "Linux brick 2.6.24-19")>
Please use the interact command to interact with the shell objects.
w3af/exploit>>> interact 0
Execute "end_interaction" to get out of the remote shell.
Commands typed in this menu will run on the remote web server.
w3af/exploit/os_commanding-0>>> ls
v.php
v2.php
v3.php
w3af/exploit/os_commanding-0>>> end_interaction
w3af/exploit>>> back
w3af>>>
Exploiting one you’ve found manually, requires you to provide some input:
w3af>>> kb
w3af/kb>>> help
| list | List the items in the knowledge base.
| add | Add a vulnerability to the KB
w3af/kb>>> add os_commanding
w3af/kb/config:os_commanding>>> view
| operating_system | Remote operating system (linux or windows).
| name | Vulnerability name (eg. SQL Injection)
| url | URL (without query string parameters)
| vulnerable_parameter | Vulnerable parameter
| separator | Command separator used for injecting commands.
| data | Query string or postdata parameters in url-encoded form
| method | HTTP method
w3af/kb/config:os_commanding>>>
```
Bạn chỉ đơn giản là `set` tất cả những cấu hình sau đó `save` và `back` để lưu những lỗ hổng trong Knowledge Base. Bạn có thể theo các bước sau:
```
w3af>>> exploit
w3af/exploit>>> exploit os_commanding
os_commanding exploit plugin is starting.
Vulnerability successfully exploited. This is a list of available shells:
- [0] <os_commanding_shell object (ruser: "www-data" | rsystem: "Linux brick 2.6.24-19")>
Please use the interact command to interact with the shell objects.
```
<a name="payload"></a>
## 11. Thanh toán ứng dụng web
//TODO chưa hoàn thành
<a name=""></a>
## 12. Báo lỗi
### a. Thực hành báo lỗi
Nếu bạn sử dụng framework bản mới nhất và tìm thấy một lỗi, hãy báo cáo lại theo các thông tin sau:
- Chi tiết các bước tạo ra lỗi
- Kết quả kỳ vọng và đạt được
- Python traceback (nếu có)
- Output của lệnh `./w3af_console --version`
- File log
## 13. Giao diện đồ họa (GUI)
//TODO chưa hoàn thành
### a. Cấu trúc chung
// TODO @k54hungyb
<img src="http://docs.w3af.org/en/latest/_images/general-structure.png">
1. Thanh menu
2. Toolbar
3. Các tab chức năng
4.
#### Toolbar
### b. Quét lỗ hổng
// TODO @k54hungyb
### c. Phân tích kết quả
// TODO @ngtuanthanh
### d. Khai thác
// TODO @congoccho
### e. Các công cụ
// TODO @toioccho
### f. Cấu hình
// TODO @dungtran211096
----
// TODO @dungtran211096 : viết mục lục, đặt liên kết trong trang
## 14. Tham khảo
http://docs.w3af.org/en/latest/