YouYaX_V5.66 SQL注入漏洞(官网躺枪)

没穿底裤 2020年1月1日04:53:29评论429 views字数 1527阅读5分5秒阅读模式
摘要

/Lib/MessageAction.php行94[php]
public function delMesses()
{
$user = $_SESSION['youyax_user'];
if ($user == "" || $user == null)
$this->redirect("Index" . C('default_url') . "index" . C('static_url'));
for ($k = 0; $k < count($_POST['cb']); $k++) {
$id = $_POST['cb'][$k];
$result = $this->find(C('db_prefix') . "message", 'string', "mto='" . $_SESSION['youyax_user'] . "' and id='" . $id . "'");
if ($result) {
$this->delete(C('db_prefix') . "message", "mto='" . $_SESSION['youyax_user'] . "' and id='" . $id . "'");
}
}
$this->assign('jumpurl', $this->youyax_url . "/Message" . C('default_url') . "show" . C('static_url'))->assign('msgtitle', '操作成功')->assign('message', '消息已删除!')->success();
}
[/php]


漏洞作者: 索马里的海贼

/Lib/MessageAction.php行94

[php]
public function delMesses()
{
$user = $_SESSION['youyax_user'];
if ($user == "" || $user == null)
$this->redirect("Index" . C('default_url') . "index" . C('static_url'));
for ($k = 0; $k < count($_POST['cb']); $k++) {
$id = $_POST['cb'][$k];
$result = $this->find(C('db_prefix') . "message", 'string', "mto='" . $_SESSION['youyax_user'] . "' and id='" . $id . "'");
if ($result) {
$this->delete(C('db_prefix') . "message", "mto='" . $_SESSION['youyax_user'] . "' and id='" . $id . "'");
}
}
$this->assign('jumpurl', $this->youyax_url . "/Message" . C('default_url') . "show" . C('static_url'))->assign('msgtitle', '操作成功')->assign('message', '消息已删除!')->success();
}
[/php]

 

$id = $_POST['cb'][$k];未过滤直接进了$this->find();

 

来看find()
/ORG/YouYa.php行356

[php]
public function find($table, $ext = "string", $param)
{
//在 param 中寻找与给定的正则表达式 pattern 所匹配的子串
if (preg_match_all("/=/", $param, $tmp)) {
$sql = "select * from " . $table . " where " . $param;
} else {
$param = "id=".intval($param);
$sql = "select * from " . $table . " where " . $param;
}
$result = mysql_query($sql);
[/php]

 

只要$parm里面有“=” 就不会intval了,这个点一样没输出 只能基于时间注入 跟
WooYun: YouYaX_V5.47 SQL注入漏洞(官网躺枪) 这个一样
附送一个鸡肋的本地文件包含
/ORG/YouYa.php 行107

 

[php]
private function deal($tp)
{
if (isset($_COOKIE['youyax_lang'])) {
$this->lang = require("lang/" . $_COOKIE['youyax_lang'] . "/lang.php"); //不太安全吧
$this->array_array['lang'] = $this->lang;
[/php]

 

在当前mysql用户有file权限 但是对web目录不可写的情况下,可以用注入写一个lang.php到/tmp 然后设置cookie youyax_lang为../../../tmp 就可以成功包含shell了

 POST http://bbs.youyax.com/Message-delMesses.aspx HTTP/1.1 Host: bbs.youyax.com dropdown=del&cb[]=1'  就能看到报错信息  具体注入方法与 WooYun: YouYaX_V5.47 SQL注入漏洞(官网躺枪) 一致就不用sqlmap来演示了 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
没穿底裤
  • 本文由 发表于 2020年1月1日04:53:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   YouYaX_V5.66 SQL注入漏洞(官网躺枪)https://cn-sec.com/archives/75627.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息