shopxoコード監査

そのため、作業上の理由により、解析、CMSの多くはまた、記事を書いたが、何も操作は、インターネットの基本的な操作ではありませんので、それは何のウェブサイト上で公開されているが、ローカルに保存されていることを示していないようにみえます。最近のブログが突然戦闘あまりにも少ない中で自分自身を発見し、早期の書き込みが自分で4レコードを与えることであると、その書き込みは非常に簡単です、将来の閲覧を容易にするため、以前にここに移動し、いくつかの記事を書くことにした、唯一のコード監査再生は、詳細に遭遇した掘削穴のいくつかを書いていません。記事を書いた後、私は詳細を書きしようとします

-------------------------------------------------- ---------------------------------

CVE-2019-5886

shopxoの\アプリケーション\ \コントローラ\のインストールのindex.php ファイルを、追加メソッドは、ロックファイルをチェックしません、攻撃者はデータベースを再ロードすることができ、私が後で学んだ(、あなたはMySQLのLOAD DATA LOCAL INFILEを使用することができます任意のクライアントを読みますファイルの終わり)

index.phpのファイル処理システムがインストールされているCreateConfigのファイルを、それだけでは追加のファイルロックをチェックしない方法、ライン174、およびメソッド呼び出しCreateConfig()プロファイルデータベースを作成し、$のparamsをポストパラメータから入れCreateConfigの方法

可以看到该方法中是将$params中的值写入database.php中,包括数据库地址,数据库名以及账号密码等。这样我们重装系统将数据库绑定到攻击者自己的数据库上。

---------------------------------------------------------------------------

这个地方是写入php文件中,理论上我们可以插入php代码后getshell的,当时我当时技术很菜,因为各种原因没成功(具体什么我也不记得了),不过我现在知道了一个新的方法:

闭合array后 Array.eval($_GET['evil']),类似这样。

 

漏洞复现:

访问install模块下的index控制器下的add方法,并构造如下请求

 

可以发现本地数据库中新建了一个shopxo2的数据库,实际场景中攻击者可以在自己额公网服务器中的数据库开启远程连接,连上自己的数据库。

 

 最关键的地方是数据库配置文件也修改了

 

 

CVE-2019-5887漏洞分析

shopxo/extend/base/FileUtil.php文件的201行处发现调用了rmdir函数:

 

 追踪$aim_dir发现是可控的,发现shopxo/service/AppMiniService.php文件中的Delete方法中调用了UnlinkDir方法

 

 $path不以".zip"结尾时,会调用UnlinkDir方法,而$path来源于params['id']。继续回溯:

 

shopxo/application/admin/controller/Appminialipaylist.php这个Controller文件的Delete方法调用了AppMiniService::Delete,改项目中所有的Controller的构造函数中都会调用父类的input(),也就是将请求参数中的值为$params赋值。

 

漏洞复现

在后台小程序操作处,点击删除

使用burp抓包,构造请求

 

可以看到返回包中已经成功删除

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/jinqi520/p/11008979.html