php反序列化
1.原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化的过程。从而导致代码执行,sql注入,目录遍历等不可控的后果。在反序列化的过程中自动触发了某些
魔术方法。当进行反序列化的时候就有可能触发对象中的一些魔术方法。
serialize() :将一个对象转换成一个字符串。
unserialize() :将字符串还原为一个对象。
2.技术
有类: 触发魔术方法: -construct,destruct,wakeup,tostring……
无类:
3.危害:sql注入,代码执行,目录遍历
Java反序列化
1.序列化和反序列化
序列化:将对象的状态信息转换为可以存储或传输的形式的过程。
反序列化:从存储区中读取该数据,并将其还原为对象的过程。
2.序列化标志参考
一段数据以rooab开头,你基本可以确定这串就是Java序列化base64加密的数据。
一段数据以aced开头,那么它就是这一段Java序列化16进制。
3.payload生成工具:ysosrerial
xxe与xml之利用检测绕过全解
1.玩法-读软件
<?xml version="1.0" ?>
<!DOCTYPE ANY [
<!ENTITY xxe system "file://d://test.txt">
]>
<x>&xxe;</x>
2.玩法-内网探针或攻击内网应用(触发漏洞地址)
3.玩法-rce
该case是在安装expect扩展的php环境里执行系统命令。
4.引入外部实体dtd<类似引入远程读取>
5.无回显-读文件
用它访问外部实体,再开启外部自己的购买服务器日志,从而获得回显。
6.协议读文件绕过
参考:http://cnblogs.com/201752111yz/p/11413335.html
<?xml version="1.0" ?>
<DOCTYDE ANY [C!ENTITY f SYSTEM
"php://filter/read=convert.base64-encode/resource=xxe.php">]>
<x>&f;</x>
(1).编码方式绕过:utf-16be [当system,file等词被过滤]
(2).data://协议绕过 [当http 被过滤]
file://协议+文件上传
php://filter协议+文件上传
7.xxe漏洞发现
人工:数据格式类型判断
content-type值判断 a. text/xml b. application/xml
更改content-type值看返回。
8.推荐一个攻击机(环境变量齐全):ninjustu
9.xxe注入工具:xxeinjector 备注:需要ruby环境
参考:http://github.com/enjoiz/xxeinjector