YCCMS 3.3 CSRF漏洞--代码执行

一、 启动环境

1.双击运行桌面phpstudy.exe软件
YCCMS 3.3 CSRF漏洞--代码执行_第1张图片
2.点击启动按钮,启动服务器环境

二、代码审计

1.双击启动桌面Seay源代码审计系统软件

YCCMS 3.3 CSRF漏洞--代码执行_第2张图片
2.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\YCCMS),点击确定

漏洞分析

1.点击展开左侧admin目录,在弹出的下拉列表中双击index.php页面,右侧页面可以看到相关代码。



其中页面就一行代码,代码主要作用包含 /config/run.inc.php文件 2.在config目录打开run.inc.php文件 
run();
?>

本页面代码前面主要进行初始化一些常量和配置,其中autoload函数作用是当你进行初始化类在本页面不存在时候就会自动调用autoload()函数,同时会把名字当做参数传输过去。 3.最后进行调用setAction()方法,按照__autoload函数 代码功能,页面会包含/public/class/Factory.class.php文件
2.Factory.class.php文件主要是Factory类的定义文件


其中setAction()方法首先调用getA()方法获取GET传输的过来得a参数并赋值给a,紧接着利用in_array()函数进行检查,其中如果$_a变量包含数组中的变量,页面将会跳转。 然后file_exists()函数进行检查页面文件是否存在,如果不存在则将$_a赋值成Index,最后调用eval()执行PHP代码。如果能够让eval成功执行代码,必须成功逃逸file_exists函数。
3. file_exists函数主要作用是检查文件是否存在,但是这个函数在进行检查会有一个bug,如/controller/admin;/…/,函数允许路径中有一些特殊字符,并且遇到/…/会返回到上级目录,可以利用这个策略逃逸出file_exists()函数检查,最后一个利用点eval可以执行多条语句,如:eval(echo 1;echo 2;);可以成功执行两条语句。

漏洞利用

首先访问IP/admin/index.php文件,然后输入文件后面输入

payload:Factory();phpinfo();//../

其中Factory();是为了闭合前面new字符,不然程序会报错,后面紧接着执行phpinfo();函数
YCCMS 3.3 CSRF漏洞--代码执行_第3张图片

实验总结
本次实验主要掌握代码执行挖掘和利用方法。

你可能感兴趣的:(漏洞复现)