首页 > 其他分享 >pikachu靶场的代码审计,和一些危险函数

pikachu靶场的代码审计,和一些危险函数

时间:2024-09-17 15:35:17浏览次数:1  
标签:审计 文件 函数 pikachu 转义 漏洞 file 使用 靶场

对pikachu靶场进行代码审计,审计分析文件上传、命令执行漏洞,越权漏洞,sql注入,xxe漏洞

文件上传

client:


并未对后缀进行判断,只对大小做了验证

后端并未进行文件的类型校验,仅仅是生成了一个目录去保存上传的文件

同时对文件的保存路径暴露

MIME Type


只对mime进行了验证,很容易绕过,没使用白名单机制,过滤的不够严谨

getimagesize



对文件的类型和mime都进行了校验,但是还是可以执行,php的代码,可以上传图片马,使用文件包含一起梭哈。主要问题还是回显了upload的保存路径,这样前面生成的随机数毫无意义!

命令执行漏洞

ping远程执行漏洞


包含了header文件

header文件,并未有啥过滤,就是获取访问者的头信息等

判断是否有输入,并将传输进来的参数赋值给ip变量,判断当前电脑是什么类型,直接shell_exec执行了命令

未对$ip进行验证,就直接将变量拼接,不安全,同时调用shell_exec等函数也有极大的风险

eval远程代码执行漏洞


对用户的输入没有校验,而且使用了eval函数,攻击者可以直接使用system执行系统命令。因对用户的输入进行检查,同时少使用或者不使用eval函数。

越权漏洞

水平越权


先看login界面,使用了escape函数转义查询语句很安全,然后使用了session确定登录的人是谁。

看信息页面,第一个判断是否登录,第二个直接判断了username是否为空,但是此处并未使用session来确定用户的输入,导致了水平越权的漏洞。

垂直越权


和上面相同使用了,escape函数转义防sql注入,然后链接数据库判断是否有该用户,判断返回的level,进行登录

看admin登录界面,有对level的判断,要同时满足登录和level等于1才能进入,没有问题

看修改用户信息的页面,此处只判断了用户是否处于登录的界面,但是并没有判断用户的level是否等于1,造成垂直越权的漏洞。

同时我们还需要注意exit,如果对exit进行注释,即使有header的跳转但是程序并不会完结会继续执行


注意:此时我是未登录的状态,但是我依然会执行后面的if判断,此处需要注意,header只能跳转并不能结束代码执行。

sql注入

宽字节注入



先看一下escape函数,使用了mysqli_real_escape_string转义,转义规则如下

  • ' 会被转义为 \'
  • " 会被转义为 \"
  • \ 会被转义为 \\

此处刚好可以使用gbk的编码方式绕过,主要的漏洞就是上图箭头,在转义后给客户端设置了gbk编码

其余的sql注入




剩下的都是直接拼接产生的漏洞,所使用的只是不同的闭合方式,此处就不在赘述

xxe漏洞


使用了simplexml_load_string函数,将 XML 字符串转换为 SimpleXMLElement 对象的函数。造成了外部xml的注入。可以使用libxml_disable_entity_loader(ture)禁止从外部加载xml实体

梳理php语言中 owasp top 10 安全漏洞常见的危险函数并记录函数的常见用法

命令执行危险函数

  • system 执⾏命令并输出结果
  • shell_exec
  • passthru 和system一样
  • exec 执⾏命令只可获取最后⼀⾏结果
  • popen 执⾏命令并建⽴管道 返回⼀个指针 使⽤fread等函数操作指针进⾏读写
  • proc_open 同 popen
  • pcnti_exec 执⾏命令只返回是否发⽣错误
  • mail linux底层的sendmail发送信息,通过 -X 指定log文件记录邮件流量,实际可以达到写文件的效果
    例子
$to = '[email protected]';
$subject = 'Hello Alice!';
$message=‘<?php phhpinfo(); ?>’;
$headers = "CC: [email protected]";
$options = '-OQueueDirectory=/tmp -X/var/www/html/rce.php';
mail($to, $subject, $message, $headers, $options);

代码执行危险函数

  • eval 将传⼊的参数内容作为PHP代码执⾏ eval 不是函数 是⼀种语法结构 不能当做函数动态调⽤
  • assert 将传⼊的参数内容作为PHP代码执⾏ 版本在PHP7以下是函数PHP7及以上为语法结构
  • preg_replace 当preg_replace使⽤/e修饰符且原字符串可控时时 有可能执⾏php代码
  • call_user_func 把第⼀个参数作为回调函数调⽤需要两个参数都完全可控才可利⽤ 只能传⼊⼀个参数调⽤
  • create_funtion 根据传递的参数创建匿名函 数,并为其返回唯⼀名称 利⽤需要第⼆个参数可控 且创建的函数被执⾏
  • include 包含并运⾏指定⽂件 执⾏出错会抛出错误,但是会继续执行
  • require 同include 执⾏出错会抛出警告
  • include_once 同require 但会检查之前是否已经包含该⽂件 确保不重复包含
  • require_once 同include 但会检查之前是否已经包含该⽂件 确保不重复包含

文件读取危险函数

  • file_get_contents 读⼊⽂件返回字符串
  • readfile 读取⼀个⽂件,并写⼊到输出缓冲
  • fopen/fread/fgets/fgetss/fgetc/fgetcsv/fpassthru/fscanf 打开⽂件或者 URL读取⽂件流
  • file 把整个⽂件读⼊⼀个数组中
  • highlight_file 语法⾼亮⼀个⽂件
  • parse_ini_file 读取并解析⼀个ini配置⽂件
  • simplexml_load_file 读取⽂件作为XML⽂档解析

文件上传危险函数

  • file_put_contents 将⼀个字符串写⼊⽂件
  • move_uploaded_file 将上传的临时⽂件移动到新的位置
  • rename 重命名⽂件/⽬录
  • unlink 删除⽂件
  • rmdir 删除⽬录
  • extractTo 解压ZIP到⽬录
  • simplexml_load_string 加载解析XML字符串 有可能存在XXE 漏洞
  • simplexml_load_file 读取⽂件作为XML⽂档解析 有可能存在XXE 漏洞
  • request()->file()->move()
  • request()->file()->file() thinkphp文件

标签:审计,文件,函数,pikachu,转义,漏洞,file,使用,靶场
From: https://www.cnblogs.com/lun-netsafe/p/18417198

相关文章

  • 深度探索 Java 代码审计:筑牢安全防线的关键之路
    在当今高度数字化的时代,软件安全成为了至关重要的议题。对于众多使用Java语言进行开发的程序员而言,深入掌握Java代码审计技能,无疑是守护软件安全的核心手段。本文将围绕一本涵盖Java代码审计丰富知识的书籍目录,全面剖析Java代码审计的各个关键环节以及其在CTFAWD比......
  • xss-labs靶场:level11攻略 抓包工具的巧妙利用
    攻略第十关后稍作休整,我们继续来看第十一关:和上一关一样,提供给我们的仅有的参数是URL中的keyword,很明显,这个参数是无法利用的,我们查看页面源代码发现依然是有一个隐藏表单的存在,但是,我们发现表单中多了一个参数t_ref即<formid="search"><inputname="t_link"value=""t......
  • dedecms靶场(四种webshell姿势)
    姿势一:通过文件管理器上传WebShell1.登陆到后台点击【核心】【文件式管理器】【文件上传】将准备好的一句话木马上传2.点击访问成功蚁剑连接姿势二:修改模板文件拿WebShell1.点击【模板】【默认模板管理】【index.htm】【修改】在文件修改中添加一句话木马保存2.......
  • RickdiculouslyEasy靶场(9个flag)
    flag11.nmap扫描所有端口nmap172.16.1.7-p1-65535nmap-A-v-T417-p1-655352.13337端口存在一个flagFLAG:{TheyFoundMyBackDoorMorty}-10Pointsflag21.21端口对应的ftp服务可能存在匿名访问的问题,并且在该目录下面存在一个flag2.访问靶机上面的ftp服务,获......
  • ATT&CK红队评估(红日靶场5)
    ‍靶机介绍此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集、Web攻防、代码审计、漏洞利用、内网渗透以及域渗透等相关内容学习,此靶场主要用来学习,请大家遵守网络网络安全法。‍‍注意:Win7双网卡模拟内外网‍......
  • ATT&CK红队评估(红日靶场4)
    靶场介绍本次靶场渗透反序列化漏洞、命令执行漏洞、Tomcat漏洞、MS系列漏洞、端口转发漏洞、以及域渗透等多种组合漏洞,希望大家多多利用。环境搭建机器密码WEB主机ubuntu:ubuntuWIN7主机douser:Dotest123(DC)WIN2008主机administrator:Test2008网络配置111......
  • SEAFARING靶场渗透
    一.SQL注入漏洞1.输入id=1--+下方出现数据说明闭合成功2.测试得出数据库有三列 3.三处都是回显点 4.联合查询爆出库名 5.查表名?id=-1unionselect1,group_concat(table_name),3frominformation_schema.tableswheretable_schema='test'--+  6.查字......
  • SEAFARING靶场漏洞攻略
    寻找漏洞一,我们打开页面第一个漏洞xss漏洞1.在登录页面显示有弹窗第二个漏洞sql注入漏洞1.在输入框的地方输入-1unionselect1,2,3#我们来查看他的回显点2.查看数据库表名-1unionselect1,database(),3#3.查看表名-1unionselect1,2,group_concat(table_......
  • seafaring靶场渗透测试
    1.sql注入漏洞进来这里有个框尝试xss没有那咱们就来试试搜索行注入这里有东西说明闭合成功,接着就orderby有三列三个地方都有回显查看数据库这里查表发现只有两个先去看看admin先来看看列然后看用户密码,这里密码直接显示出来了2.文件上传漏洞拿去登录看看里......
  • sqlgun靶场练习
    1.打开网站看到有输入框,先测试以下有没有xss,能弹窗,说明存在xss漏洞2.有xss大概率也存在sql注入,测试到3的时候发现有回显3.进一步得出库名4.要getshell的话我们可以尝试写一句话木马进去,构建payloadkey=-1'unionselect1,"<?php@eval($_POST[cmd]);?>",3intoout......