sql注入比我想象的更危險

前一段時間安全部門測出某個程序存在sql注入漏洞叫榕,在我原來潛意識中一直認為構(gòu)造危險的 sql 語句是相對較難的,所以沒有繃緊神經(jīng)堆巧,總認為就算存在漏洞虚婿,也很難被實際攻擊赋铝,總抱有僥幸心理插勤,但這次事件卻給了我很大一個教訓(xùn)。

sql 注入如何產(chǎn)生的

某個程序?qū)?URL id 參數(shù)沒有做嚴格的限制柬甥,正常的情況下饮六,會這樣執(zhí)行:

update table set id = {id} where name = 'login'

如果攻擊者傳遞 id 參數(shù)是 1 and sleep(5) --,則會構(gòu)成一條危險的 SQL 語句:

update table set id = 1 and sleep(5) -- where name = 'login'

開始我倒沒太在意(只能說太不敏感了)苛蒲,雖然注入了卤橄,但僅僅對我們不重要的一個表進行了全表替換。第二個傷害我認為是 sql 執(zhí)行 延遲了 5 秒而已臂外。

后來發(fā)生的事情(下面會說)才讓我猜測到這條語句耗時很久窟扑,假設(shè) table 表有 10 條記錄,那么整個 sql 語句會執(zhí)行 50 秒漏健,全表鎖定了 table 表的 update 操作嚎货。

當(dāng)然這個sleep 耗時如此之長是我后面發(fā)現(xiàn)的,怎么發(fā)現(xiàn)的呢蔫浆?看下面殖属。

全表鎖定

注入發(fā)生的第二天,同事說某個功能總是不成功瓦盛,頁面總是超時洗显,我排查了下,發(fā)現(xiàn)該功能執(zhí)行的一個關(guān)鍵 sql (在同一個庫)居然超時報錯了:

update table2 set tb =2 where id=3

我在 mysql 終端執(zhí)行了下 show full processlist

87 | db | ip:port | Query   | 93724 | User sleep | update table set id = 1 and sleep(5) -- where name = 'login' |

居然發(fā)現(xiàn) sql 注入語句還在執(zhí)行原环,而其他的 update 操作由于 table 表被全表鎖定了挠唆,一直在等待,積累了很多的 update 操作嘱吗。

同時執(zhí)行 show global status:

| Innodb_row_lock_current_waits   | 77 |

確實顯示 77 個操作被鎖了玄组。

立刻反饋給了 DBA 同時,他們執(zhí)行了 information_schema 庫的相關(guān)操作:

SELECT r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,r.trx_query waiting_query,b.trx_id blocking_trx_id,b.trx_mysql_thread_id blocking_thread,b.trx_query blocking_query FROM innodb_lock_waits w INNER JOIN  innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN innodb_trx r ON r.trx_id = w.requesting_trx_id ;

也顯示被鎖定了,立刻在 mysqld 端 kill 了這條語句俄讹,服務(wù)正常運行了哆致。

這個時候我才意識到 sql 注入的危害比我想象的大多了。

沉思

對于我們開發(fā)者來說患膛,知道 sql 注入是危險的沽瞭,但如何構(gòu)造危險 sql 可能是很難的,可怕的是現(xiàn)在居然有這樣的工具(比如 sqlmap)剩瓶,那么危險的 sql 會產(chǎn)生什么后果:

  • 偷窺:導(dǎo)出全表數(shù)據(jù)
  • 破壞:更新、刪除記錄

sqlmap

sqlmap 是一個滲透測試工具:

sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers.

我完全不會使用該工具城丧,總感覺什么白帽子延曙、紅帽子、黑帽子都不是啥好東西...亡哄,他們帶來好處的同時也帶來極大的危害枝缔。

同事使用了下這個工具,我在旁邊看了一會蚊惯,感覺功能太強大了愿卸,雖然不知道它的實現(xiàn)原理,但很想搞明白截型,經(jīng)過同事的測試趴荸,發(fā)現(xiàn)幾個原理:

  • 完整注入,被注入程序必須要打印結(jié)果宦焦,否則很多 sqlmap 功能(比如導(dǎo)出表結(jié)構(gòu))會失效发钝。
  • information_schema 被極大的利用了,沒有特殊需求波闹,要關(guān)閉它的操作權(quán)限酝豪。
  • sqlmap 有 session data,比如它將整個庫表結(jié)構(gòu) dump 到 session data精堕。

上面幾個原理都是我通過觀察 mysql 日志發(fā)現(xiàn)的孵淘,要開啟 mysql 日志,打開 my.cnf :

general_log_file  = /var/log/mysql/mysql.log

然后一邊運行 sqlmap歹篓,一邊觀察 general_log_file 日志瘫证。

接下去講解 sqlmap 的幾個操作:

sqlmap.py -u "http://localhost/test/db.php?id=1" --batch --schema 
sqlmap.py -u "http://localhost/test/db.php?id=1" --batch --tables

其中讓我驚嘆它功能強大的是能執(zhí)行 shell:

sqlmap.py -u "http://localhost/test/db.php?id=1" --batch --sql-shell

實現(xiàn) shell 原理其實也不復(fù)雜,就是它內(nèi)部又調(diào)用了下 db.php滋捶,然后將結(jié)果輸出痛悯,本質(zhì)上并沒有啥區(qū)別。


本文發(fā)表于【2018-12-20】重窟,地址是https://mp.weixin.qq.com/s/89t2vW--z4ElaKklQwYuCQ载萌,歡迎大家關(guān)注,我的公眾號(ID:yudadanwx,虞大膽的嘰嘰喳喳)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扭仁,一起剝皮案震驚了整個濱河市垮衷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乖坠,老刑警劉巖搀突,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熊泵,居然都是意外死亡仰迁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門顽分,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徐许,“玉大人,你說我怎么就攤上這事卒蘸〈朴纾” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵缸沃,是天一觀的道長恰起。 經(jīng)常有香客問我,道長趾牧,這世上最難降的妖魔是什么检盼? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮武氓,結(jié)果婚禮上梯皿,老公的妹妹穿的比我還像新娘。我一直安慰自己县恕,他們只是感情好东羹,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忠烛,像睡著了一般属提。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上美尸,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天冤议,我揣著相機與錄音,去河邊找鬼师坎。 笑死恕酸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胯陋。 我是一名探鬼主播蕊温,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼袱箱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了义矛?” 一聲冷哼從身側(cè)響起发笔,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凉翻,沒想到半個月后了讨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡制轰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年前计,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃杖。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡残炮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩滨,到底是詐尸還是另有隱情,我是刑警寧澤泉瞻,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布脉漏,位于F島的核電站,受9級特大地震影響袖牙,放射性物質(zhì)發(fā)生泄漏侧巨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一鞭达、第九天 我趴在偏房一處隱蔽的房頂上張望司忱。 院中可真熱鬧,春花似錦畴蹭、人聲如沸坦仍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽繁扎。三九已至,卻和暖如春糊闽,著一層夾襖步出監(jiān)牢的瞬間梳玫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工右犹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留提澎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓念链,卻偏偏與公主長得像盼忌,于是被迫代替她去往敵國和親积糯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容