安全測試-滲透性測試
-
明文傳輸/存儲(明文包括:1.請求中存在明文數據傳輸。2.內存明文傳輸用戶名和密碼。3.響應數據中存在明文用戶名和密碼等。4.客戶端反編譯存在明文。明文數據直接被攻擊者利用並對系統進行攻擊。)
-
越權訪問(用戶未授權可以訪問其他用戶的敏感數據。)
-
敏感信息泄漏(應用程序返回版本號、程序錯誤詳細信息、中間件、SQL語句、系統文件等敏感信息)
-
上傳/下載漏洞(系統可以上傳任意類型文件,如php、bat、jsp、class等文件。這些文件可以直接在操作系統層面運行,應用系統存在被攻擊風險。)
-
路徑遍歷漏洞(攻擊者通過向上檢索的方式獲取服務器上重要文件。如:passwd或者win.ini文件等。存在重要文件信息泄漏風險。)
-
xss攻擊(惡意攻擊者將惡意腳本代碼(如HTML代碼和Javascript腳本)嵌入請求中,當用戶在不知情的情況下訪問時,就會執行其中的惡意代碼,可能會導致cookie竊取、會話劫持、釣魚欺騙等各種攻擊。)
1、最常見的最經典的XSS bug檢測語句必然是
<script>alert(/XSS/)</script>
<script>alert(document.cookie)</script>
<script>window.location.href="http://www.baidu.com";</script>2、利用IMG圖片標記屬性跨站
<img src=”javacript:alert(/XSS/)”></img>
<img src=# onerror=alert(123)>3、突破程序員的過濾限制
利用javascript換行與空格突破過濾
<img src = j ava script:al er t(/XSS/)>///空格使用Tab鍵產生
<img src = j
ava script :a ler t(/xss/)>
利用注釋<img src = “#”/**/onerror = alert(/XSS/)> - 。。。。。
安全滲透測試要求
1、XSS跨站腳本漏洞
系統程序沒有對用戶提交的變量中的代碼進行過濾或轉換,在用戶輸入頁面可插入 JavaScript、 Active等惡意腳本。
2、SQL注入漏洞
系統的應用服務器端對SQL語句中使用的特殊字符“;”、“--”和“and”、“or”等未做過濾,並且允許其向數據庫系統提交。
3、明文傳輸漏洞
對系統用戶口令等機密信息的保護不足,攻擊者可以利用攻擊工具,從網絡上竊取合法用戶的口令數據,從而登錄系統執行非法操作。
4、越權訪問漏洞
目前存在着兩種越權操作類型:橫向越權操作和縱向越權操作。前者指的是攻擊者嘗試訪問與他擁有相同權限的用戶的資源;而后者指的是一個低級別攻擊者嘗試訪問高級別用戶的資源。
5、明文存儲
對系統用戶口令等機密信息的存儲保護不足,導致攻擊者可以獲取系統的訪問權限。
6、敏感信息泄露漏洞
系統暴露系統內部信息,如網站絕對路徑、網頁源代碼、SQL語句、中間件版本和程序異常等信息。
7、后台泄露漏洞
后台地址過於簡單地址泄露或者默認后台,為攻擊者攻擊系統提供便利。攻擊者可以通過弱口令或默認用戶密碼等方式進入后台,對系統造成危害。
8、會話重放攻擊
不斷惡意或欺詐性地重復一個有效的數據包,重放攻擊。攻擊者可以攔截並重復發該數據到服務端,服務器端未對用戶提交的數據包重放進行有效限制。如:可以抓取HTTP包固定賬號破解密碼、固定密碼破解賬號和重放提交投票數據包。
9、默認口令/弱口令
應用系統存在默認口令/弱口令。
10、中間件漏洞
使用不安全的http方法和IIS文件枚舉漏洞
11、設計缺陷/邏輯錯誤
程序都是通過邏輯實現各種豐富多彩的功能的,要實現這些功能,必須掌握大量的技巧並進行周密的安排。但是,有很多情況這些功能邏輯存在缺陷,比如程序員的安全意識,比如考慮問題不周全等。即使是最簡單的web應用程序,每個階段都會執行大量的邏輯操作。如:可以重復建立用戶名相同的用戶;不同瀏覽器中未驗證會話有效性。
12、不安全的cookie
cookies中包含有用戶名或者密碼等敏感信息,攻擊者截取到cookies后可為攻擊提供便利,若獲取到用戶密碼可直接登錄到系統中。
13、SSRF漏洞
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。
14、SSL3.0漏洞
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。已被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。SSL常會爆出一些漏洞,如:心臟滴血漏洞等。
15、CSRF(跨站請求偽造)
跨站請求偽造(Cross-Site Request Forgery,CSRF)是一種使已登錄用戶在不知情的情況下執行某種動作的攻擊。因為攻擊者看不到偽造請求的響應結果,所以CSRF攻擊主要用來執行動作,而非竊取用戶數據。當受害者是一個普通用戶時,CSRF可以實現在其不知情的情況下轉移用戶資金、發送郵件等操作;但是如果受害者是一個具有管理員權限的用戶時CSRF則可能威脅到整個Web系統的安全。
16、命令執行漏洞
當應用需要調用一些外部程序去處理內容的情況下,就會用到一些執行系統命令的函數。如PHP中的system、exec、shell_exec等,當用戶可以控制命令執行函數中的參數時,將可以注入惡意系統命令到正常命令中,造成命令執行攻擊;另一種是由於漏洞而造成的命令執行(如:struts2、weblogic命令執行)
17、上傳漏洞
系統對上傳的文件類型沒有進行驗證,在應用系統的運營過程中,不可避免地要對網站的某些頁面或者內容進行更新,這時便需要使用到網站的文件上傳的功能。如果不對被上傳的文件進行限制或者限制被繞過,該功能便有可能會被利用於上傳可執行文件、腳本到服務器上,進而進一步導致服務器淪陷。
18、任意文件包含
任意文件包含,系統對傳入的文件名沒有經過合理的校驗,從而操作了預想之外的文件,就可能導致意外的文件泄露甚至惡意的代碼注入,導致惡意攻擊者可以利用該缺陷讀取服務器上指定文件
19、任意文件下載
任意文件下載,系統提供文件下載功能,但未對下載文件名進行限制,可下載任意文件。
20、目錄遍歷
目錄遍歷漏洞會將站點的目錄暴露在攻擊者眼前,攻擊者可以從這些目錄得知當前站點的信息,如開發語言、站點結構和數據庫文件等信息。
21、溢出攻擊漏洞
系統的客戶端和服務器端對輸入數據的字符長度未做檢查,提交超長數據后,服務器端會出現異常錯誤,可能導致緩沖區溢出或拒絕服務攻擊等安全問題。
22、XML實體注入
XML用於標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。當允許引用外部實體時,通過構造惡意內容,可導致讀取任意文件、執行系統命令、探測內網端口、攻擊內網網站等危害。
23、檢測存在風險的無關服務和端口
檢測存在風險的無關服務和端口,為攻擊者攻擊提供便利
24、登錄功能驗證碼漏洞
不斷惡意或欺詐性地重復一個有效的數據包,重放攻擊攻擊者可以攔截並重復發該數據到服務端,服務器端未對用戶提交的數據包重放進行有效限制,造成會話重放攻擊。如:
固定賬號破解密碼、固定密碼破解賬號。驗證碼機制可以有效的解決會話重放攻擊,但是驗證碼機制存在漏洞,會話重放攻擊漏洞就仍然存在。
Nginx配置解決部分滲透測試問題
HOST頭攻擊
if ($http_Host !~* ^10.121.55.26:8061$) { return 403; }
CSRF跨站請求偽造
修改NG配置文件,server中增加 valid_referers none blocked server_names; if ($invalid_referer) { return 403; }
敏感信息泄漏
修改NG配置文件,http中增加 server_tokens off;
不安全的HTTP方法
修改NG配置文件,server中增加 if (request_method !~ ^(GET|HEAD|POST)requestmethod! (GET∣HEAD∣POST) ) { return 403; }
參考配置
worker_processes 20; events { worker_connections 1024; } http { #解決因nginx緩存區空間不足導致的JS加載異常問題(by sunwenyan) proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 128k; include mime.types; default_type application/octet-stream; sendfile on; server_tokens off; keepalive_timeout 65; upstream webserver.ygsoft.com { server 10.51.90.13:7001; #server 192.168.2.4:8081; #server 192.168.2.5:8082; ip_hash; } #HTTP server server { listen 80; server_name localhost; rewrite ^(.*) https://$host$1 permanent; location / { return 302 https://$host$request_uri; } } # HTTPS server # server { listen 443 ssl; listen 9020; server_name localhost; ssl_certificate /home/nginx/ygcert/ygdemo.crt; ssl_certificate_key /home/nginx/ygcert/ygdemo.key; ssl_protocols TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl on; error_page 497 https://$host$uri?$args; error_page 404 /gris_404.html; error_page 404 500 502 503 504 /gris_500.html; location = /gris_404.html { root http://webserver.ygsoft.com/grm/error/gris_404.html; } location = /gris_500.html { root http://webserver.ygsoft.com/grm/error/gris_500.html; } underscores_in_headers on; add_header Set-Cookie "HttpOnly"; #Cookie添加HttpOnly add_header Set-Cookie "Secure"; #Cookie添加Secure add_header Cache-Control: no-store; #防止緩存 add_header Pragma: no-cache; #防止緩存 add_header X-Frame-Options "SAMEORIGIN"; #只允許本網站的frame嵌套 add_header X-XSS-Protection '1;mode=block'; #開啟XSS過濾器 add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; #HTTP 嚴格傳輸安全 (HSTS) 是保護安全 (HTTPS) Web 站點不被降級到不安全 HTTP 的機制 #add_header X-Content-Type-Options: nosniff; #可能防止在用戶瀏覽器中執行不受信任的內容,可能會影響頁面正常訪問 add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://10.51.90.224; img-src 'self' https://10.51.90.224; style-src 'self' 'unsafe-inline' https://10.51.90.224; font-src 'self' https://10.51.90.224; frame-src https://10.51.90.224; object-src 'none'"; #配置Content-Security-Policy #防止XFF攻擊/偽造IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #修復不安全http方式,只允許GET和POST方式 if ($request_method !~* GET|POST) { return 403; } #修復CSRF Referer來源,但不添加CSRF ANTI TOKEN.(設置上面webserver.ygsoft.com的server IP地址) valid_referers none blocked server_names 10.51.90.224; if ($invalid_referer) { return 403; } #修復HOST頭攻擊,需要設置對應的IP地址(設置上面webserver.ygsoft.com的server IP地址) if ($http_Host !~* ^10.51.90.224$) { return 403; } location ~ /FMISWeb/services/ { proxy_set_header Host $host:9020; proxy_set_header Accept-Encoding ""; proxy_pass http://webserver.ygsoft.com; subs_filter_types text/xml; subs_filter http://$host https://$host; } location ~ /YGFMISWeb/services/ { proxy_set_header Host $host:9020; proxy_set_header Accept-Encoding ""; proxy_pass http://webserver.ygsoft.com; subs_filter_types text/xml; subs_filter http://$host https://$host; } location ^~ /grm { #防止XFF攻擊/偽造IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Accept-Encoding ""; proxy_pass http://webserver.ygsoft.com; } location ~ \.(gif|jpg|jpeg|png|bmp|css|js|jsx|htc|vbs|txt|xml|swf|wav|html|htm|flv|ico|json|map|shtml|woff)$ { expires 1h; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 5h; proxy_cache_valid 304 5h; proxy_cache_valid 301 302 1h; proxy_cache_valid any 1m; add_header X-Cache $upstream_cache_status; proxy_pass http://webserver.ygsoft.com; proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; } location ~ /(barcodeServlet|ScriptServlet|contentmanage.viewFileServlet|getBillMainInfoServlet|getBillSubTableInfoServlet|getEcpFlowHistoryServlet|getBillAttachmentServlet|getEcpBillOptStateServlet|EfNavigateServlet|PageConfigServlet|MetaModelManagerServlet|IpGetterServlet|PortalCheckServlet|RemoteServiceServlet)(/*) { expires 1h; proxy_cache_key $host$uri$is_args$args; proxy_cache_methods GET POST; proxy_cache_valid 200 5h; proxy_cache_valid 304 5h; proxy_cache_valid 301 302 1h; proxy_cache_valid any 1m; add_header X-Cache $upstream_cache_status; proxy_pass http://webserver.ygsoft.com; proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; } location / { proxy_pass http://webserver.ygsoft.com; } } }