Burp

【渗透测试】burp抓包修改js

给你一囗甜甜゛ 提交于 2020-12-02 03:30:07
某天,某智障程序员写了几行错误的代码,导致了火狐和谷歌浏览器无法正常登陆,经过分析发现控制登陆的是一个js文件,其判断浏览器版本是否在IE8以上的语句如下图所示: 而最新的Chrome的UA如图所示: 所以,用新版的浏览器不可能登陆成功的,会弹出以下警告信息: 众所周知,由于IE浏览器对开发者不太友好,即使新版有了许多改进也不如火狐或者谷歌来的方便,所以我们通过burp抓包修改js文件的方法来使得这个判断无效. 首先修改burp配置使其可以抓到js的数据包,修改内容如下图所示: 上图为修改后的图片,去掉了不拦截js请求。也就是删除了^js$|这几个字符 接着,如果你使用的是谷歌浏览器,请按shift+F5忽略缓存进行刷新,如果你是火狐浏览器的用户请按ctrl+F5。 在抓包界面截取返回包 把 !((agent.indexOf("msie")>0 && agent.indexOf("msie 7")<0 && agent.indexOf("msie 6")<0) || (agent.indexOf('trident')>0 && agent.indexOf('rv')>0)) 修改为false即可进行正常的登陆操作。 来源: oschina 链接: https://my.oschina.net/u/4279744/blog/3881206

前端 js 校验机制绕过(burp、sqlmap 可用)

喜你入骨 提交于 2020-12-01 12:53:33
作者:L3B1anc 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 最近做银行系统比较多,遇到了很多前端校验导致无法重放也不能上扫描器和sqlmap,最后想出来了个解决办法针对js的校验可以直接绕过 最近做测试的时候,一顿测完0 high 0 medium 0 low,想着上扫描器和sqlmap一顿梭哈的时候,发现请求包一重放就失效了,这样交报告那也不能够啊,只能想想怎么绕过这个防重放机制了。 1、发现验证机制 用burp对比了同样的两个请求,发现两个请求之间不同的只有H_TIME,H_NONCE,H_SN三个参数了,其中H_TIME一看就是时间戳。 按照经验来说,这种类似token的值,应该是每次请求页面都会去从服务器端生成一个新的token值,通过这个token值来进行防重放的。然而,发送请求后,发现返回的包里面的参数和提交请求的参数是一样的,那这样就只剩一种情况了,就是前端通过js生成校验码发送到服务器进行校验的。 F12大法搜搜两个关键字,发现还是某tong他老人家的安全机制,接着看看这个getUID的代码, getUID:function(){ var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36; i++)

攻防世界web新手区做题记录

为君一笑 提交于 2020-11-29 11:51:08
学校信安协会第一次培训结束后的作业,要求把攻防世界的web新手区题目做一遍并写题解。 第一题 view_source 查看源代码右键不能用,但是F12能用,于是找到源代码 输入到flag框即可 后来在网上看到可以在url前面插入view-source:来查看网页源代码 第二题 get_post 题目描述点明了该题要用到关于http的两种请求方式,那么就要学习一下http的几种请求方式。 查阅各种博客之后,发现get的请求方式直接在url框内输入就好,而post的请求方式需要用其他方式写入参数,有点高深。 找到了火狐的harkbar工具包插件,学习了一下参数注入,成功过关。 第三题 robots 看到了新名词,自然要去学习这个什么robots协议,查阅资料后发现就是爬虫协议,也叫机器人协议蜘蛛协议什么的。 从博客学习: robots协议文件的写法及语法属性解释 robots.txt文件是一个文本文件,是放置在网站根目录下,使用任何一个常见的文本编辑器,就可以创建和编辑它。 robots.txt是搜索引擎中访问网站的时候要查看的第一个文件,其主要的作用就是告诉蜘蛛程序在服务器上什么文件是可以被查看的。 在后面加上robots.txt 出现个.php的disallow,把它放到url后面: 输入flag,下一题。 第四题 backup 涉及到备份的问题了,继续学习。发现备份的后缀是

Burp Suite 入门教程(BURP SUITE TUTORIAL )

旧街凉风 提交于 2020-11-25 01:20:18
参考链接1: https://www.pentestgeek.com/what-is-burpsuite 参考链接2: https://www.pentestgeek.com/web-applications/burp-suite-tutorial-1 参考链接3: https://www.pentestgeek.com/web-applications/how-to-use-burp-suite 参考链接4: https://www.pentestgeek.com/penetration-testing/credential-harvesting-via-mitm-burp-suite-tutorial 注意1:本文中出现的非汉语部分为不翻译更好或者我不知道怎么翻译好。 注意2:我并没有配置出站SOCKS代理,而是简单地将火狐浏览器的代理设置为burp suite,具体步骤参照我之前发布的 kali linux Burp Suite极简使用教程 什么是Burp Suite 什么是Burp Suite? Burp Suite是一个基于Java的Web渗透测试框架。 它已成为信息安全专业人员使用的行业标准工具套件。 Burp Suite可帮助您识别漏洞并验证影响Web应用程序的攻击媒介。 由于其受欢迎程度,广度以及功能的深度,他们创建了这个有用的页面作为Burp

帝国CMS(EmpireCMS) v7.5配置文件写入漏洞分析

别来无恙 提交于 2020-11-23 09:52:43
帝国CMS(EmpireCMS) v7.5配置文件写入漏洞分析 一、漏洞描述 该漏洞是由于安装程序时没有对用户的输入做严格过滤,导致用户输入的可控参数被写入配置文件,造成任意代码执行漏洞。 二、漏洞复现 1、漏洞出现位置如下图,phome_表前缀没有被严格过滤导致攻击者构造恶意的代码    2、定位漏洞出现的位置,发现在/e/install/index.php,下图可以看到表名前缀phome_,将获取表名前缀交给了mydbtbpre参数。    3、全文搜索,$mydbtbpre,然后跟进参数传递,发现将用户前端输入的表前缀替换掉后带入了sql语句进行表的创建,期间并没有对前端传入的数据做严格的过滤       4、创建表的同时将配置数据和可以由用户控制的表前缀一起写入到config.php配置文件    5、通过对整个install过程的代码分析,可以发现没有对用户数据进行过滤,导致配置文件代码写入。 5.1、burp对漏洞存在页面进行抓包,修改phome参数的值,构造payload,payload如下: ‘;phpinfo();// 5.2、在burp中的phome参数的值中输入特殊构造的payload    6、查看config.php配置文件,发现成功写入配置文件    7、再次访问安装结束的页面, http://192.168.10.171/empirecms/e

逻辑漏洞之任意用户重置密码(十六种)

本秂侑毒 提交于 2020-11-22 03:37:07
在freebuf上看到了一个关于任意用户重置密码的系列文章,感觉挺不错了,算得是上比较全得了,年初就看过,今天突然发现他出了新的文章,这里记录一下。 原网址:http://www.freebuf.com/articles/web/160883.html。 之所以写这篇文章主要是想总结一下这块的问题,之前不够体系,测试得时候有时候会忘记一两点不测试,这次站在巨人身上总结下别人知识的同时加一些自己的想法和里面没有的对象。这里没有将实际的例子写在这里,因为如果直接 copy 别人的例子来太那啥了,自己找例子工作量又很大,且对自己意义不大。所以如果各位有地方不大懂得可以去原地址看下实例,也可以直接留言问我。 一:重置凭证泄露 重置密码时,凭证为发送到手机上的验证码,但是通过拦截发送发送验证码请求对应的 response 包时,发现验证码在 response 包中 重置密码时,利用邮件找回密码时,带有凭证的重置链接泄露至客户端(这是返回包中) 二:接受端可以修改    3.重置密码时,凭证会发送到手机上,通过替换手机号,可以使用自己的手机号接受验证码 4.还有一种情况比较特殊,也是手机接受验证码,但是重置密码的整个流程中并没有输入过手机号之类的,说明后台程序很可能是通过用户名来查询的电话号码。整个重置流程中,一般第一步是绑定用户名的地方,但是如果后面几个流程中还会发送用户名这个参数

SQL Injection

淺唱寂寞╮ 提交于 2020-11-21 01:27:10
Low级别 判断是否存在注入点 输入1提交 输入1 and 1=1提交 SELECT first_name, last_name FROM users WHERE user_id = ' 1 ' 输入1 and 1=2提交 由上可以看出是存在注入点的,参数为id SELECT first_name, last_name FROM users WHERE user_id = ' id ' 利用漏洞获取信息 获取当前库名 1后面的‘是为了使前面的参数闭合最后的#是为了注释‘ 1 ' union select 1,database()# 实际执行sql SELECT first_name, last_name FROM users WHERE user_id = ' 1 ' union select 1 , database ()# ' 根据库名获取所有表名 1后面的‘是为了使前面的参数闭合最后的#是为了注释‘ 1 ' union select 1,table_name from information_schema.tables where TABLE_SCHEMA= ' dvwa ' # 底层执行sql SELECT first_name, last_name FROM users WHERE user_id = ' 1 ' union select 1 ,table_name

针对小程序的漏洞挖掘

穿精又带淫゛_ 提交于 2020-11-21 00:31:18
原文来自 SecIN社区 —作者:Zeva 0x00 前言 承接上一篇APP业务挖洞的碎碎念,此篇文章主要是针对小微信程序的漏洞挖掘,微信小程序默认是直接使用自己微信登陆的,我们对小程序的漏洞挖掘,关注点还是在逻辑漏洞上面,下面将从环境搭建到实例一步步讲解。(此篇文章更适合做安服的老哥们看) 0x01 环境配置 工具:Burp+Fiddler+windows版本微信 注: 你也可以直接用burp+windows版微信,进行抓包,如果出现网络错误,直接用Fiddler抓包然后发给burp进行测试 关于Fidder如何抓取HTTPS数据包,如下: 这里我是直接下载的汉化版,本人英语不太好,打开Fiddler,选择工具,然后点击选项,然后在HTTPS处,勾选上 捕获HTTPS链接,解密HTTPS流量,忽略服务器证书错误 。 选择最右侧的操作按钮,选择将根证书导出到桌面。 然后将证书导入到浏览器。 手机端的话,无线网络直接设置上Fiddler的代理地址和端口,这里我设置的9999端口,然后访问x.x.x.x:9999端口,下载证书 安装即可。 至此 Fiddler可以正常抓取http和https数据包。 关于Fiddler联动burp 抓包,配置如下图: 微信端设置代理地址 抓包测试一下,没问题,此处抓的抽奖助手的数据包 0x02 漏洞挖掘小技巧

Python编写Burpsuite插件(一)

蓝咒 提交于 2020-11-14 11:13:54
1.Jython简介 BurpSuite是使用Java编程语言编写的,所以想要使用Python编程语言开发其插件,就必须使用Jython。Jython本质上是一个Java应用程序,它允许编码人员使用Java编码调用Python库反之,也可以使用Python调用Java的库。 有关Jython的详细使用,请读者参见Jython官网的 用户手册 和相关文档。 放在Jython的Project中,还有JRuby,并且Burp也支持ruby编写插件,但是无论是用Python还是Ruby编写的插件,在执行效率方面远远不如原生的Java高,所以笔者还是建议使用Java编写插件。 下载链接:https://www.jython.org/download 默认安装即可 2.BurpSuite 加载 Jython 3.BurpSuite API基础知识 Burp Suite官方API文档: https://portswigger.net/burp/extender/api/index.html BurpSuite 上的API 介绍 官方给出了简单的插件示例 https://portswigger.net/burp/extender#SampleExtensions 4.编写Demo插件代码 首先需要导入burp的相关库 IBurpExtender 是必须的,是入口类 注册模块用的

dvwa——sql手动注入和sqlmap自动注入

*爱你&永不变心* 提交于 2020-11-02 13:28:01
手动注入 low: 源码: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQUEST[ 'id' ]; // Check database $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); // Get results while( $row = mysqli_fetch_assoc( $result ) ) { // Get values $first = $row["first_name"]; $last = $row["last_name"]; // Feedback for end user