① Web滲透是怎麼弄的
1.滲透目標
滲透網站(這里指定為www.xxx.com)
切記,在滲透之前要簽訂協議。
2.信息收集
建議手動檢查和掃描器選擇同時進行。
2.1 網站常規檢測(手動)
1:瀏覽www.xxx.com
1. 初步確定網站的類型:例如銀行,醫院,政府等。
2. 查看網站功能模,比如是否有論壇,郵箱等。
3. 重點記錄網站所有的輸入點(與資料庫交互的頁面),比如用戶登錄,用戶注冊,留言板等。4. 重點查看網站是否用到了一些通用的模板,比如論壇選擇了動網(dvbss),就有可能存在動網的漏洞;郵箱有可能選擇通用的郵箱系統,也有漏洞。
2: 分析網站的url1. 利用搜索引擎,搜索網站的url,快速找到網站的動態頁面。
2. 對網站的域名進行反查,查看IP,確定伺服器上的域名數,如果主頁面url檢測沒有漏洞,可以對其他的域名進行檢測。
3:審查代碼
重點對輸入代碼(比如表單)進行分析,看如何來提交輸入,客戶端做了哪些輸入的限制方法。
1. 隱藏表單欄位 hidden
2. Username,Password等
4:控制項分析
Active x 通常都是用c/c++編寫
在頁面上(通常是首頁)的源碼中搜索
1. 需要ComRaider+OD 對dll文件進行反編譯,看是否有漏洞。
2. 改變程序執行的路徑,破壞Active X 實施的輸入確認,看web的回應。
5:對常規的輸入進行手動注入測試,測試是否有sql注入和跨站漏洞,試用常規的用戶名和密碼登錄。
6:查看web伺服器的版本,確定搜索是否有低版本伺服器組件和框架的漏洞,比如通用的Java框架Struct2的漏洞。
2.2 工具選擇和使用
1:web應用程序漏洞掃描工具
Appscan: (版本7.8)
掃描漏洞比較全,中文,漏洞利用率高,檢測速度慢,需要大量內存,重點推薦。
AWVS:
英文,漏洞庫完善,檢測速度慢。
JSky
中文,檢測速度快,但深度一般。
Nessus
英文,檢測速度較快,漏洞也比較完善,免費,可及時更新,B/S界面。
2:埠掃描
Nmap
流光
3: 口令破解工具
溯雪
4:sql 注入工具
Asp+SqlServe, ACCESS:啊D注入工具
Php+MySQL : php+mysql注入工具(暗組的hacker欄中)
Jsp+ORACAL: CnsaferSI
支持以上資料庫 Pangolin
5: http代理請求
Paros
6:木馬
灰鴿子
7:提權木馬
一句話木馬大馬(具體所用的木馬參考文檔和工具包(綠盟,暗組))
5: 工具推薦使用方案
Appscan掃描出的重大漏洞,進行手工檢測(注意看漏洞是如何發現的,修改漏洞的代碼,對滲透幫助很大)。
sql注入漏洞
可以選用根據網站類型選擇sql注入工具
如果是post請求類型的url,選擇使用paros代理後,修改http請求包,進行注入。
WebDEV漏洞
可以啟用發送請求(比如DELETE對方網頁)
跨站漏洞
直接將appscan的代碼輸入測試,成功後,可以嘗試跨其他腳本(比如
遍歷漏洞:
網頁的目錄,下載網站配置文件信息,和源文件進行反編譯
反編譯:
Class 可以選用java 反編譯工具
Dll (asp.net) 選用Reflector
3.分析並滲透
---------------------
作者:centos2015
來源:CSDN
原文:https://blog.csdn.net/zonghua521/article/details/78272634
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
② web前端和web滲透有什麼區別
你是打錯了吧?這兩個東西怎麼會搭邊。
web前端是給用戶交互的界面
web滲透是你鑽別人網站伺服器里去
③ 關於web滲透,如何才能邁出關鍵的一步
學習網路滲透從碎片化到整體。我們的入門門檻很低,我們可以使用工具。但是很難達到下一個層次,這是大多數腳本丟失的地方。網路滲透的核心思想是大量的思想來源於知識積累和豐富的經驗。學而不思則罔。
當我用工具找到一個CMS(PHP)的文件包含漏洞:
網路谷歌各種搜索,各種嘗試,找不到相關的漏洞。但是能下載到這個CMS的源碼,然後去看裡面的代碼,發現怎麼看都是天文亂碼,最後還是得扔給某大牛抽根煙。某大牛說了句你是豬嗎,那麼明顯都看不到並向你扔了個webshell。
案例分析:
你缺乏PHP編程語言的知識和PHP安全的知識,這個推薦看法師的《代碼審計》。
不論有沒有結果,遇到的任何東西,都總結下來,堅持一段時間,就會豁然開朗,明白一個功能所對應的安全風險。最後一句,黑皮書好好看,那書是真棒。
④ 如何進行web滲透測試
Web應用的滲透測試流程主要分為3個階段:信息收集、漏洞發現、漏洞利用。
一、信息收集
在信息收集階段,我們需要盡量多的收集關於目標web應用的各種信息,比如:腳本語言的類型、伺服器的類型、目錄的結構、使用的開源軟體、資料庫類型、所有鏈接頁面,用到的框架等
二、漏洞發現
在這個階段我們在做測試的時候要對症下葯,不能盲目的去掃描,首先要確定目標應用是否使用的是公開的開源軟體,開源框架等、然後在做深一度的漏洞掃描。
三、漏洞利用
針對不同的弱點有不同的漏洞利用方式,需要的知識點也比較多。一般這個階段包括兩種方式,一種是手工測試,一種是工具測試。
手工測試
手工測試是通過客戶端或伺服器訪問目標服務,手工向目標程序發送特殊的數據,包括有效的和無效的輸入,觀察目標的狀態、對各種輸入的反應,根據結果來發現問題的漏洞檢測技術。
工具測試
網路上有很多好用的免費利用工具,比如針對sql注入的sqlmap、針對軟體漏洞的matesploit等。
⑤ WEB伺服器安全滲透性測試方案
http://hi..com/zh2089/blog/category/%B1%BE%C8%CB%D4%AD%B4%B4
本人博客的幾篇原創文章,裡面有一些實例,LZ覺得可以的話請給最佳答案
⑥ 如何系統學習web安全,web滲透測試
首先得清楚web安全/web滲透是什麼:模擬黑客攻擊,利用黑客技術,挖掘漏洞,提出修復建議。
涉及到的技術有:資料庫/網路技術/編程技術/操作系統/滲透技術/攻防技術/逆向技術/SRC漏洞平台/ctf經驗。。
崗位能力要求:
1、熟練使用awvs、nessus、metasploit、burpsuite等安全測試工具,並對其原理有一定了解
2、熟悉OWASP中常見的web安全漏洞、業務邏輯漏洞及其原理
3、熟悉滲透測試技術的整體流程,具備獨立開展滲透工作的能力;
4、熟悉linux系統操作,了解常見web中間件、資料庫、伺服器相關漏洞
5、至少掌握一種編程語言,能夠開發用於輔助日常工作的腳本
6、具備一定的php或java代碼審計能力,能夠對公開漏洞進行分析
7、具備良好的邏輯思維、溝通技巧及團隊協作能力
8、已取得信息安全等級測評師證書的優先。(NISP)
想要系統的學習web滲透,可以參考企業對人才的要求進行學習。
⑦ 「Web滲透測試」第一天:基礎入門-概念名詞
域名(英語:Domain Name),又稱網域,是由一串用點分隔的名字組成的Internet上某一台計算機或計算機組的名稱,用於在數據傳輸時對計算機的定位標識(有時也指地理位置)。由於IP地址具有不方便記憶並且不能顯示地址組織的名稱和性質等缺點,人們設計出了域名,並通過網域名稱系統(DNS,Domain Name System)來將域名和IP地址相互映射,使人更方便地訪問互聯網,而不用去記住能夠被機器直接讀取的IP地址數串。
阿里雲:阿里雲域名注冊
域名級數是指一個域名由多少級組成,域名的各個級別被「.」分開,簡而言之,有多少個點就是幾級域名。頂級域名在開頭有一個點,「一級域名」就是在「com top net org」前加一級,「二級域名」就是在一級域名前再加一級,二級域名及其以上級別的域名,統稱為子域名,不在「注冊域名」的范疇中。
進行滲透測試時,其主域名找不到漏洞時,就可以嘗試去測試收集到的子域名,有可能測試子域名網站時會有意向不到的效果,然後可以由此橫向到主網站。
域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。它作為將域名和IP地址相互映射的一個分布式資料庫,能夠使人更方便地訪問互聯網。DNS使用UDP埠53。當前,對於每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。
本地HOSTS是存儲的域名對應的IP地址,當我們訪問一個網站輸入域名時,首先會在本地的HOSTS文件查找是否有對應的IP地址,如果有就會直接解析成本地的IP進行訪問。如果不能查到,那麼會向DNS域名系統進行查詢,找到對應的IP進行訪問。
SDN全稱是內容分發網路。其目的是讓用戶能夠更快速的得到請求的數據。簡單來講,cdn就是用來加速的,他能讓用戶就近訪問數據,這樣就更更快的獲取到需要的數據。
關系:通過dns服務我們可以很快的定位到用戶的位置,然後給用戶分配最佳cdn節點,但是這種調度方式存在一個問題,例如,當我 是北京聯通的用戶但是使用的卻是深圳電信的ldns的話,調度伺服器會給我分配到深圳電信的cdn伺服器,這樣就產生了錯誤的調度。
通常也稱為域名系統投毒或DNS緩存投毒。它是利用虛假Internet地址替換掉域名系統表中的地址,進而製造破壞。當網路用戶在帶有該虛假地址的頁面中進行搜尋,以訪問某鏈接時,網頁瀏覽器由於受到該虛假條目的影響而打開了不同的網頁鏈接。在這種情況下,蠕蟲、木馬、瀏覽器劫持等惡意軟體就可能會被下載到本地用戶的電腦上。
DNS劫持又稱域名劫持,是指在劫持的網路范圍內攔截域名解析的請求,分析請求的域名,把審查范圍以外的請求放行,否則返回假的IP地址或者什麼都不做使請求失去響應,其效果就是對特定的網路不能訪問或訪問的是假網址。這類攻擊一般通過惡意軟體來更改終端用戶TCP/IP設置,將用戶指向惡意DNS伺服器,該DNS伺服器會對域名進行解析,並最終指向釣魚網站等被攻擊者操控的伺服器。
域名劫持就是在劫持的網路范圍內攔截域名解析的請求,分析請求的域名,把審查范圍以外的請求放行,否則直接返回假的IP地址或者什麼也不做使得請求失去響應,其效果就是對特定的網址不能訪問或訪問的是假網址。一旦您的域名被劫持,用戶被引到假冒的網站進而無法正常瀏覽網頁,用戶可能被誘騙到冒牌網站進行登錄等操作導致泄露隱私數據。
針對DNS的DDoS攻擊通過控制大批僵屍網路利用真實DNS協議棧發起大量域名查詢請求,利用工具軟體偽造源IP發送海量DNS查詢,發送海量DNS查詢報文導致網路帶寬耗盡而無法傳送正常DNS查詢請求。發送大量非法域名查詢報文引起DNS伺服器持續進行迭代查詢,從而達到較少的攻擊流量消耗大量伺服器資源的目的。
所有放大攻擊都利用了攻擊者和目標Web資源之間的帶寬消耗差異,由於每個機器人都要求使用欺騙性IP地址打開DNS解析器,該IP地址已更改為目標受害者的真實源IP地址,然後目標會從DNS解析器接收響應。為了創建大量流量,攻擊者以盡可能從DNS解析器生成響應的方式構造請求。結果,目標接收到攻擊者初始流量的放大,並且他們的網路被虛假流量阻塞,導致拒絕服務。
asp php aspx jsp javaweb pl py cgi 等
不同的腳本語言的編寫規則不一樣,程序產生的漏洞自然也不一樣(代碼審計)。
不同的腳本語言的編寫規則不一樣,程序產生的漏洞自然也不一樣(代碼審計)。
當第一次攻擊之後,會留一個埠讓攻擊者下次從這個埠進行攻擊
網頁、線程插入、擴展、C/S後門
方便下次攻擊進入
管道(攻擊通道)
玩法,免殺
1. 網站源碼:分腳本類型,分應用方向
2. 操作系統:windows linux
3. 中間件(搭建平台):apache iis tomcat nginx 等
4. 資料庫:access mysql mssql oracle sybase db2 postsql等
Web應用一般是指B/S架構的通過HTTP/HTTPS協議提供服務的統稱。隨著互聯網的發展,Web應用已經融入了我們的日常生活的各個方面。在目前的Web應用中,大多數應用不都是靜態的網頁瀏覽,而是涉及到伺服器的動態處理。如果開發者的安全意識不強,就會導致Web應用安全問題層出不窮。
我們一般說的Web應用攻擊,是指攻擊者通過瀏覽器或者其他的攻擊工具,在URL或者其他的輸入區域(如表單等),向Web伺服器發送特殊的請求,從中發現Web應用程序中存在的漏洞,進而操作和控制網站,達到入侵者的目的。
在做安全測試的時候,我們要從web頁面層開始,因為較為方便,如果從操作系統進行,是十分不容易的。
SQL 注入、上傳、XSS、代碼執行、變數覆蓋、邏輯漏洞、反序列化等
SQL注入
內核漏洞
⑧ 零基礎如何學習web滲透
web後台開發學習步驟: 1、學習HTML和CSS。HTML(超文本標記語言)是網頁的核心,學好HTML是成為Web開發人員的基本條件。學習CSS了,它可以幫你把網頁做得更美觀。利用HTML和CSS模擬一些你所見過的網站的排版和布局(色彩,圖片,文字樣式等等)。 2、學習javascript,了解DOM。JavaScript是一種能讓你的網頁更加生動活潑的程序語言。學習JavaScript的基本語法,學會用javascript操作網頁中dom元素。接著學習使用一些javascript庫,比如jquery是大部分WEB開發人員都喜歡用的,通過Jquery可以有效的提高JavaScript的開發效率。 3、了解Web伺服器。學習一點Unix和Linux的基本知識,因為大部分Web伺服器都運行在Unix和Linux平台上。 4、學好一門伺服器端腳本語言。目前流行的伺服器腳本語言有:php、asp.net、jsp、ruby、python等。可以選一個自己喜歡的進行學習。 5、學習資料庫及SQL語
⑨ web滲透測試之攻破登錄頁面
當我們在做滲透測試時,無論廠商項目還是src眾測項目,都會遇到給一堆登錄系統的URL,然後讓我們自己去測,能不能進去全看天的狀況,本文將講一下怎麼突破這種封閉的web系統,從而進行更深層次的滲透 ,學完後你會發現,其實你就是系統管理員。
如果能直接繞過登錄系統界面,後面的就比較好做了,目前常見的登錄系統繞過方法有:
大部分情況下,系統登錄頁面都不存在xss,目錄遍歷,SQL注入等漏洞,這時候最常用的方法就是爆破和猜解登錄口令,密碼猜解最關鍵的就是字典要高效准確
https:// down.52pojie.cn/Tools/N etwork_Analyzer/Burp_Suite_Pro_v1.7.31_Loader_Keygen.zip
2.准確的用戶名,密碼字典是高效破解的重中之重 ,一般都是指定幾個常見用戶名 ,嘗試 top500,top1000進行爆破 字典不必要太大,最重要的是針對性要強 ,下面是top1000:
鏈接: https:// pan..com/s/1-XztuB 8YTfpT5aUBVbmbzA 密碼: 56pb
3.如果還是不能猜解成功,就要根據目標信息用字典生成器構造針對性的字典來猜解了,推 薦幾個比較好的字典生成工具
pydictor:
LandGrey/pydictor
crunch:
crunch - wordlist generator
Cewl:
digininja/CeWL
Cupp:
Mebus/cupp
因為管理員許可權較高,通常我都會先進行管理員口令的猜解,總結了一些常見的管理員用戶名字典
<u>鏈接:</u> <u> https:// pan..com/s/1sOD1-u whnStaw_LfMOf-sQ </u><u>密碼: 3yqe</u>
用此用戶名字典,再加上弱口令top1000,同時爆破系統管理員用戶名密碼
鏈接: https:// pan..com/s/1-XztuB 8YTfpT5aUBVbmbzA 密碼: 56pb
常見的普通用戶用戶名是姓名拼音,總結了普通用戶字典
TOP3000姓名
<u>鏈接:</u> <u> https:// pan..com/s/1qN9kCF tymP4ugvu3FFkKbA </u><u>密碼: hkzp</u>
TOP10w姓名
https:// github.com/rootphantome r/Blasting_dictionary/blob/master/top10W.txt
通常可以選擇幾個弱口令密碼,比如:123456,123abc,111111,然後配合top10w來猜解登陸口令,一些初始化的默認密碼也很簡單,如果能找到配合top10w通常也能爆出登錄口令
現在的業務系統口令傳輸到後端前都會進行加密處理 ,web常見的加密方式有 md5 加密、sha1 加密、RSA 加密,在此基礎上總結了兩種破解方式:
1.利用burpsuite的payload processing功能,把字典按照加密方式先加密再發包
2.用字典生成工具生成加密好的字典,然後burp直接載入加密字典
這里推薦的字典生成工具是pydictor,encode功能內置了多種加密演算法,調用handler工具直接加密自己的明文字典
如果登錄系統設置了IP地址白名單,我們可以通過下面的幾個http頭欄位偽造IP地址,用burp抓包後將下面的某個http頭欄位加入數據包發送到伺服器
<pre class="prettyprint hljs css" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">Client-Ip: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Real-IP: 127.0.0.1
True-Client-IP: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Forwarded-Host: 127.0.0.1</pre>
如果在系統登陸界面加上了驗證碼,那麼上面的方法基本上就都失效了,那有什麼方法可以繞過驗證呢
1.圖形驗證碼不刷新
在一段時間內只要不刷新頁面,無論登錄失敗多少次都不刷新驗證碼,這個時候就可以使用同一個驗證碼根據上面的方式進行暴力破解
2.驗證碼失效
不管在驗證碼表單輸入什麼樣的數據,都會判斷通過,但這種情況很少見
3.圖形驗證碼可被識別,抓包直接可以獲得驗證碼
很多網站的驗證碼都可以在請求數據包中找到,或者隱藏在request的cookie中,response的源碼中,可以利用burpsuite的macros來匹配response中的相應數據,具體的爆破方法參見下文:
burpsuite爆破密碼(含驗證碼) - CSDN博客
4.圖形驗證碼參數直接繞過
對於request數據: user=admin&pass=1234&vcode=brln,有兩種繞過方法:
一是驗證碼空值繞過,改成 user=admin&pass=1234&vcode=;
一是直接刪除驗證碼參數,改成 user=admin&pass=1234。
5.萬能驗證碼
滲透測試的過程中,有時候會出現這種情況,系統存在一個萬能驗證碼,如0000、9999,只要輸入萬能驗證碼,就可以無視驗證碼進行暴力破解。
6. 驗證碼可被識別
有些圖形驗證碼加入的像素線條過於簡單,使用圖形驗證碼識別工具可以識別出每次更換的驗證碼,在平常的漏洞挖掘過程中,如果我們發現登錄的驗證碼非常簡單且易於識別,那我們就可以嘗試使用自動化工具來進行登錄破解了,如 PKAV 的 HTTP Fuzzer
7.使用機器學習演算法識別驗證碼
主要是對特定網站的圖形驗證碼訓練識別模型,達到一定的准確率就可以調用進行模擬提交圖形驗證碼的值了。可參考以下三篇文章進行學習:
使用KNN演算法識別驗證碼:
http:// nlao.github.io/2016/0 9/22/%E9%AA%8C%E8%AF%81%E7%A0%81%E7%A0%B4%E8%A7%A3%E6%8A%80%E6%9C%AF%E5%9B%9B%E9%83%A8%E6%9B%B2%E4%B9%8B%E4%BD%BF%E7%94%A8K%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/
卷積神經網路識別驗證碼
http:// nlao.github.io/2016/0 9/23/%E9%AA%8C%E8%AF%81%E7%A0%81%E7%A0%B4%E8%A7%A3%E6%8A%80%E6%9C%AF%E5%9B%9B%E9%83%A8%E6%9B%B2%E4%B9%8B%E4%BD%BF%E7%94%A8%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/
使用 TensorFlow 訓練驗證碼
http:// nlao.github.io/2017/0 4/10/%E4%BD%BF%E7%94%A8TensorFlow%E8%AE%AD%E7%BB%83Weibo-cn%E9%AA%8C%E8%AF%81%E7%A0%81/
對於網站要求輸入手機號,接收手機簡訊並校驗簡訊驗證碼是否正確進行登錄的系統,突破的主要思路有:
1.簡訊驗證碼生命期限內可暴力枚舉
在驗證碼還未過期的時間段內,可枚舉全部的純四位數字、六位數字等較簡單的簡訊驗證碼;
2. 簡訊驗證碼在數據包中返回
和圖形驗證碼一樣,在response中可以直接獲取到簡訊驗證碼。
3. 修改請求數據包參數或 Cookie 值繞過
比如有 post 數據包:mobile=12435437658&userid=123456, Cookie中有:codetype=1
在特定步驟,修改 mobile=自己的手機號,自己手機就可以收到別人的驗證碼,後面再用別人的手機號和接收到的驗證碼登錄;
修改 Cookie 中可疑的參數和值,進行繞過,比如上面修改 codetype=0;
4. 修改返回包繞過
提交錯誤的簡訊驗證碼,返回包中有: status=false,在Burpsuite中修改為 status=true,即可繞過前端判斷,成功進入系統。具體還要結合實際的場景,靈活操作。
web系統登陸頁面看似銅牆鐵壁,但其實只要梳理一遍思路,右鍵看過每一行網站源碼,弄懂每個參數的意義,查看每一個js文件,就會發現其實自己就是系統管理員,只是我把密碼忘了,現在我要用上面的方式進入。
⑩ 如何進行Web滲透測試
1.SQL Injection(SQL注入)
(1)如何進行SQL注入測試?
首先找到帶有參數傳遞的URL頁面,如 搜索頁面,登錄頁面,提交評論頁面等等.
注1:對 於未明顯標識在URL中傳遞參數的,可以通過查看HTML源代碼中的"FORM"標簽來辨別是否還有參數傳遞.在<FORM> 和</FORM>的標簽中間的每一個參數傳遞都有可能被利用.
<form id="form_search" action="/search/" method="get">
<div>
<input type="text" name="q" id="search_q" value="" />
<input name="search" type="image" src="/media/images/site/search_btn.gif" />
<a href="/search/" class="fl">Gamefinder</a>
</div>
</form>
注 2:當你找不到有輸入行為的頁面時,可以嘗試找一些帶有某些參數的特殊的URL,如http://DOMAIN/INDEX.ASP?ID=10
其 次,在URL參數或表單中加入某些特殊的SQL語句或SQL片斷,如在登錄頁面的URL中輸入http://DOMAIN /INDEX.ASP?USERNAME='HI' OR 1=1
注1:根據實際情況,SQL注入請求可以使用以下語句:
' or 1=1- -
" or 1=1- -
or 1=1- -
' or 'a'='a
" or "a"="a
') or ('a'='a
注2:為什麼是OR, 以及',――是特殊的字元呢?
例子:在登錄時進行身份驗證時,通常使用如下語句來進行驗證:sql=select * from user where username='username' and pwd='password'
如 輸入http://ck/index.asp?username=admin' or 1='1&pwd=11,SQL語句會變成以下:sql=select * from user where username='admin' or 1='1' and password='11'
' 與admin前面的'組成了一個查詢條件,即username='admin',接下來的語句將按下一個查詢條件來執行.
接 下來是OR查詢條件,OR是一個邏輯運 算符,在判斷多個條件的時候,只要一個成立,則等式就成立,後面的AND就不再時行判斷了,也就是 說我們繞過了密碼驗證,我們只用用戶名就可以登錄.
如 輸入http://ck/index.asp?username=admin'--&pwd=11,SQL語 句會變成以下sql=select * from user where name='admin' --' and pasword='11',
'與admin前面的'組成了一個查 詢條件,即username='admin',接下來的語句將按下一個查詢條件來執行
接下來是"--"查詢條件,「--」是忽略或注釋,上 述通過連接符注釋掉後面的密碼驗證(注:對ACCESS資料庫無 效).
最後,驗證是否能入侵成功或是出錯的信息是否包含關於資料庫伺服器 的相關信息;如果 能說明存在SQL安 全漏洞.
試想,如果網站存在SQL注入的危險,對於有經驗的惡意用戶還可能猜出資料庫表和表結構,並對資料庫表進行增\刪\改的操 作,這樣造成的後果是非常嚴重的.
(2)如何預防SQL注入?
從應用程序的角度來講,我們要做以下三項工作:
轉義敏感字元及字元串(SQL的敏感字元包括「exec」,」xp_」,」sp_」,」declare」,」Union」,」cmd」,」+」,」//」,」..」,」;」,」『」,」--」,」%」,」0x」,」><=!-*/()|」,和」空格」).
屏蔽出錯信息:阻止攻擊者知道攻擊的結果
在服務端正式處理之前提交數據的合法性(合法性檢查主要包括三 項:數據類型,數據長度,敏感字元的校驗)進行檢查等。最根本的解決手段,在確認客 戶端的輸入合法之前,服務端拒絕進行關鍵性的處理操作.
從測試人員的角度來講,在程序開發前(即需求階段),我們就應該有意識的將安全性檢查應用到需求測試中,例如對一個表單需求進行檢查時,我們一般檢驗以下幾項安全性問題:
需求中應說明表單中某一FIELD的類型,長度,以及取值范圍(主要作用就是禁止輸入敏感字元)
需求中應說明如果超出表單規定的類型,長度,以及取值范圍的,應用程序應給出不包含任何代碼或資料庫信息的錯誤提示.
當然在執行測試的過程中,我們也需求對上述兩項內容進行測試.
2.Cross-site scritping(XSS):(跨站點腳本攻擊)
(1)如何進行XSS測試?
<!--[if !supportLists]-->首先,找到帶有參數傳遞的URL,如 登錄頁面,搜索頁面,提交評論,發表留言 頁面等等。
<!--[if !supportLists]-->其次,在頁面參數中輸入如下語句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)來進行測試:
<scrīpt>alert(document.cookie)</scrīpt>
最後,當用戶瀏覽 時便會彈出一個警告框,內容顯示的是瀏覽者當前的cookie串,這就說明該網站存在XSS漏洞。
試想如果我們注入的不是以上這個簡單的測試代碼,而是一段經常精心設計的惡意腳本,當用戶瀏覽此帖時,cookie信息就可能成功的被 攻擊者獲取。此時瀏覽者的帳號就很容易被攻擊者掌控了。
(2)如何預防XSS漏洞?
從應用程序的角度來講,要進行以下幾項預防:
對Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等 語句或腳本進行轉義.
在 服務端正式處理之前提交數據的合法性(合法性檢查主要包括三項:數據類型,數據長度,敏感字元的校驗)進行檢查等。最根本的解決手段,在確認客戶端的輸入合法之前,服務端 拒絕進行關鍵性的處理操作.
從測試人員的角度來講,要從需求檢查和執行測試過程兩個階段來完成XSS檢查:
在需求檢查過程中對各輸入項或輸出項進行類型、長度以及取 值范圍進行驗證,著重驗證是否對HTML或腳本代碼進行了轉義。
執行測試過程中也應對上述項進行檢查。
3.CSRF:(跨站點偽造請求)
CSRF盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。
XSS是利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。
XSS也好,CSRF也好,它的目的在於竊取用戶的信息,如SESSION 和 COOKIES,
(1)如何進行CSRF測試?
目前主要通過安全性測試工具來進行檢查。
(2)如何預防CSRF漏洞?
請參見http://www.hanguofeng.cn/archives/security/preventing-csrf
4.Email Header Injection(郵件標頭注入)
Email Header Injection:如果表單用於發送email,表單中可能包括「subject」輸入項(郵件標題),我們要驗證subject中應能escape掉「\n」標識。
<!--[if !supportLists]--><!--[endif]-->因為「\n」是新行,如果在subject中輸入「hello\ncc:[email protected]」,可能會形成以下
Subject: hello
cc: [email protected]
<!--[if !supportLists]--><!--[endif]-->如果允許用戶使用這樣的subject,那他可能會給利用這個缺陷通過我們的平台給其它用 戶發送垃圾郵件。
5.Directory Traversal(目錄遍歷)
(1)如何進行目錄遍歷測試?
目錄遍歷產生的原因是:程序中沒有過濾用戶輸入的「../」和「./」之類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷伺服器上的任意文件。
測試方法:在URL中輸入一定數量的「../」和「./」,驗證系統是否ESCAPE掉了這些目錄跳轉符。
(2)如何預防目錄遍歷?
限制Web應用在伺服器上的運行
進 行嚴格的輸入驗證,控制用戶輸入非法路徑
6.exposed error messages(錯誤信息)
(1)如何進行測試?
首 先找到一些錯誤頁面,比如404,或500頁面。
驗證在調試未開通過的情況下,是否給出了友好的錯誤提示信息比如「你訪問的頁面不存 在」等,而並非曝露一些程序代碼。
(2)如何預防?
測試人員在進行需求檢查時,應該對出錯信息 進行詳細查,比如是否給出了出錯信息,是否給出了正確的出錯信息。