pikachu-文件上传+XXE+不安全的url跳转

文件上传

客户端check

们可以看到,刚把文件上传,还没有点击“开始上传”就已将弹出了警示框,没有交互就已经检测了文件的类型,说明他是在前端进行校验的。

 那么我们看一下代码:

选择浏览,可以看到代码中有一个checkfiletxt()的函数:

 我们尝试看一下这个函数,果然是他,然后把onchange值改为空,将这个函数删除:

 再次尝试上传php文件,发现成功上传。(但是只要重新刷新页面,代码就会恢复。)

 

服务端check

尝试上传php文件,点击上传发现禁止上传,提示只能是图片格式:

 由于Content-Type字段里面的MEMI类型是上传文件的类型,那么我们可以尝试抓包,更改其MEMI类型:

多用途Internet邮件扩展(MIME)类型 是一种标准化的方式来表示文档的性质和格式。浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的。

上图的MIME类型带变得就是应用程序, 其中图片的MEMI类型一般为:

image/jpeg
image/png
image/gif

那么我们可以更改为要求里的其中一个,发现上传成功:

 imagesize

我们像上一个一样,尝试修改MIME类型后上传:

 他提示后缀名不能为空,那就是说后缀名必须为图片文件格式的后缀,我们在更改一下:

 发现还是不可以,看来他还加了文件头的校验。

 那么我们在本来的内容上面一行,加入gif图片的文件头:GIF89a

 这次发现成功上传,但是因为文件格式为png,就不能直接使用shell工具连接了,需要配合文件包含来使用.

XXE

pikachu官方介绍:

 XXE注入漏洞就是:攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题。也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。

 首先我们得了解什么是xml文档,XML是传递数据的一种格式,是用于存储和传输数据的语言。与HTML一样,XML使用标签和数据的树状结构。但不同的是,XML不使用预定义标记,因此可以为标记指定描述数据的名称。

一个xml例子(XML声明+DTD文档类型定义+文档元素):

///xml声明
<?xml version="1.0"?>

///DTD文档类型定义
<!DOCTYPE note[

///外部实体声明
<!ENTITY entity-name SYSTEM "URI/URL">

]>

///文档元素
<note>

<to>Jerry</to>

<from>Tom</from>

<head>Reminder</head>

<body>hello</body>

</note>

 其中外部实体声明中的URL可以使用file://协议,因此可以从文件加载外部实体,这样就会造成一些敏感文件被解析加载。

如果我们设置payload:

<?xml version = "1.0"?>
<!DOCTYPE way [

<!ENTITY y SYSTEM "file:///C:/Windows//win.ini">

]>
<way>&y;</way>

 那么它就会把win.ini文件解析进来(如果是linux系统就换成etc/passwd等),回显到页面上,从而获取一些敏感文件信息:

 

不安全的url跳转

如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。

这是有五个跳转链接:

 当我们点击最后一个链接后,可以看到已经跳转,且链接中url=i:

 这种情况下,我们就可以将url的参数修改,替换成我们的恶意链接,做成钓鱼链接让目标点击。比如我将url=http://www.baidu.com,可以看到直接跳转到了百度页面:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值