XMLDecoder、LDAP 注入与修复

问题:XMLDecoder注入

针对 xml 解码器的注入攻击
反序列化用户控制的 XML ,程序没有进行验证, 会让攻击者有机会在服务器上执行恶意代
码。
例:下面代码片段中, XMLDecoder 处理不可信的输入。
...
XMLDecoder decoder = new XMLDecoder(new InputSource(new
InputStreamReader(request.getInputStream(), "UTF-8")));
Object object = decoder.readObject();
decoder.close();
...
如果输入以下 XML 文档,会实例化 ProcessBuilder 对象,并调用其静态 start() 方法以运行 Windows
计算器。
<java>
<object class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="1" >
<void index="0">
<string>c:\\windows\\system32\\calc.exe</string>
</void>
</array>
<void method="start"/>
</object>
</java>
修复:XMLDecoder注入
尽量避免将 XMLDecoder 与由用户控制的数据一起使用。如程序中不能避免,需要验证输入的 XML
问题:LDAP 注入
LDAP ,轻量目录访问协议
|dn : 一条记录的位置 |
dc : 一条记录所属区域 |
|ou : 一条记录所属组织 |
|cn/uid: 一条记录的名字 /ID|
此处我更喜欢把 LDAP 和 数据库类比起来,我是直接把 LDAP 看成是一个主要用于查询的数据库。
数据库用 来存数据, LDAP 来存数据。数据库主要是三个 DB,TABLE,ROW 来定位一条记录,而 LDAP
首先要说明是哪一棵树 dc ,然后是从树根到目的所经过的所有 分叉 ou group ),最后就是目标的名
字,例如 UID 等等。
具体到如何定义如下:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com
其中树根是 dc=waibo,dc=com ,分叉 ou=bei,ou=xi,ou=dong ,目标 cn=honglv
注意要把 “cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org” 看成是一个整体,它只是属性 dn
具体的一条记录如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqmattack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值