trick or treat

Perl文件上传param()函数

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的file变量中。如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的:

例如:

Bp5MLD.png

慎用preg_replace危险的/e修饰符

/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)

couchDB是个利⽤HTTP请求进⾏操作的数据库,可以确定题是RCE/SSRF

file_put_contents有 个 trick, 如 果 写 入 的 文 件 名 是 xxxxx/.那 么 /.会 被 忽 略 , 会 直 接 写 入 xxxxx文 件

CVE-2018-15133 Laravel框架RCE

在 APP_KEY 泄露情况下的 Laravel RCE 漏洞。该漏洞可以分别在两个地方触发,一个是直接添加在 cookie 字段,例如: Cookie: ATTACK=payload ;另一处是在 HTTP Header 处添加 X-XSRF-TOKEN 字段,例如: X-XSRF-TOKEN: payload 。漏洞影响版本:5.5.x<=5.5.40、5.6.x<=5.6.29。

通 过 app.static_folder 动 态 更 改 静 态 文 件 目 录 , 将 静 态 文 件 目 录 设 为 根 目 录 , 从而任意文件读 ,这 也 是 pysandbox的 大 部 分 做 法

CVE-2018-14574 Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。影响范围:1.11.0 <= version < 1.11.15 和 2.0.0 <= version < 2.0.8

在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。

在Tornado里,应用的设置可以通过handler.settings访问

CVE-2016-4437 Apache Shiro 1.2.4反序列化漏洞 Apache Shiro <= 1.2.4

Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

CVE-2019-12086 jackson-databind任意文件读取漏洞

在开启Default Typing的情况下,且classpath中存在mysql-connector-java 8.0.15版本(2019.2.1发布)以下,攻击者可以通过发送恶意json数据读取任意文件。mysql-connector-java这个库就是连接数据库时常用的mysql jdbc。

Java序列化流量特征

特征一
参考特征,反序列化数据看起来就是这个样子: sr 、类名、空白字符
特征二
固有特征,是Java的序列化数据就一定是这样,如果是base64编码的,就是以rO0A开头的。
特征三
参考特征,有些content-type就说明了它是是序列化数据。

java 反序列化 ysoserial exploit/JRMPClient

ysoserial中的exploit/JRMPClient是作为攻击方的代码,一般会结合payloads/JRMPLIstener使用,攻击流程就是:
1、先往存在漏洞的服务器发送payloads/JRMPLIstener,使服务器反序列化该payload后,会开启一个rmi服务并监听在设置的端口
2、然后攻击方在自己的服务器使用exploit/JRMPClient与存在漏洞的服务器进行通信,并且发送一个可命令执行的payload(假如存在漏洞的服务器中有使用org.apacje.commons.collections包,则可以发送CommonsCollections系列的payload),从而达到命令执行的结果。

0e开头的md5和原值:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
0e545993274517709034328855841020

使用dig和host命令以及读取DNS TXT记录

绕过require_once

/proc/self指向当前进程的/proc/pid//proc/self/root/是指向/的符号链接,想到这里,用伪协议配合多级符号链接的办法进行绕过,payload:

1
php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

flask_caching RCE

flask_caching使用pickle序列化对象并在将其从缓存中拉出时反序列化它们,因此可以用作RCE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# From flask_caching/backends/rediscache.py
def load_object(self, value):
"""The reversal of :meth:`dump_object`. This might be called with
None.
"""
if value is None:
return None
if value.startswith(b"!"):
try:
return pickle.loads(value[1:])
except pickle.PickleError:
return None
try:
return int(value)
except ValueError:
# before 0.8 we did not have serialization. Still support that.
return value

TURN sever - CSAW CTF Web Real Time Chat

TURN服务器允许将TCP连接和UDP数据包代理到内部网络。这使攻击者能够扫描内部系统并与之交互。

dig

查询DNS包括NS记录,A记录,MX记录等相关信息的工具。

tac命令

反序输出文件的内容,文件的最后一行显示在第一行

它可以对调试日志文件提供了很大的帮助,扭转日志内容的时间顺序。

ffifdyop

经过md5加密后:276f722736c95d99e921722cf9ed621c

再转换为字符串:’or’6<乱码> 即 'or'66�]��!r,��b

用途:

select * from admin where password=’’or’6<乱码>’

就相当于select * from admin where password=’’or 1 实现sql注入

安全策略 frame-ancestors 会覆盖 [‘X-Frame-Options’] = ‘sameorigin’ 导致同源策略失效,可以使用 iframe

Feature-Policy响应头提供了一种可以在本页面或包含的iframe上启用或禁止浏览器特性的机制。

1
2
3
4
'a''a'           => shell
'a'.length => js
len('a') => python
'a'.charAt(0) => java

CVE-2020-11989 Apache Shiro权限绕过漏洞

如果直接访问 /test/admin/page ,会返回302跳转要求登录

但是访问 /;/test/admin/page , 就能直接绕过Shiro权限验证,访问到/admin路由中的信息

CVE-2020-28949、CVE-2020-28948 Drupal 远程代码执行漏洞

Drupal使用了PEAR Archive_Tar作为依赖库,在处理如.tar、.tar.gz、.bz2或.tlz等格式的压缩包时,由于过滤不严,可能导致存在PHAR反序列化漏洞,从而造成远程代码执行,影响版本:Drupal 9.0 : Drupal < 9.0.9,Drupal 8.9 : Drupal < 8.9.10,Drupal 8.8 : Drupal < 8.8.12,Drupal 7 : Drupal < 7.75


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!