- 技巧 1: JS 在漏洞挖掘中的重要地位]
- 技巧 2: 浏览器控制台使用技巧和方式
- 技巧 3: JS 断点技巧以及 Hook 注入
- 技巧 4: Python 和 JS 结合解决加密难题
- 实战 1: 实战 MD5 加密逆向加密参数还原
- 技巧 5: 常见 FUZZ 姿势和工具以及字典
- 技巧 6: 未知目录,信息泄露,备份文件等漏洞中的 FUZZ
- 技巧 7: 弱口令,隐藏变量,未知参数中的 FUZZ 骚姿势
- 技巧 8: SQL,XSS,SSRF,CSRF 等漏洞中的 FUZZ 技巧
- 实战 2: 实战 FUZZ 渗透到远程 RCE 漏洞控制电脑 (百分之 80 的 src 会用到)
技术一、JS 加密参数逆向以及利用#
1.1 技巧一、JS 在漏洞挖掘中的重要地位#
1.1.1 JavaScript#
JS:javascript 是 web 页面的脚本语言,主要用来向 HTML 页面添加交互行为,有以下几个作用:
- 嵌入动态文本于 HTML 页面;
- 对浏览器事件作出响应;
- 读写 HTML 元素;
- 在数据被提交到服务器之前验证数据;
- 检测访客的浏览器信息。
1.1.2 HTML、JS、CSS 区别#
- HTML:毛坯房
- CSS:装修
- JS:让家动起来,增加了智能家居
1.1.3 JS 在漏洞挖掘中的重要地位#
- JS 中存在插件名字,根据插件找到相应的漏洞直接利用
- JS 中存在一些 URL 链接,根据 URL 找到相应的页面进一步测试和利用
- JS 中存在一个子域名,可以直接访问子域名
- JS 中的一些注释可能泄露账户密码或者其他的
1.1.4 Jsfind#
使用 JsFind 查找 JS 中泄露的 url 链接和域名(京东)
python jsfind.py -u "http://www.jd.com"
1.2 技巧二、浏览器控制台使用技巧和方式#
网络是对整个网络请求发起的一个监控,可以监控流量。
- 禁用缓存:如果打上勾,每次都会从浏览器获取数据。在渗透测试、漏洞挖取的过程中需要打开。
- 调试器 (源代码):将网站的 js 代码存储起来
- 点击右下角
{}
可以格式化 - 可以进行断点挑食
- 点击右下角
- 控制台:可以对 js 中的函数进行一些操作
1.3 技巧三、JS 断点技巧以及 Hook 注入#
Hook:使用 python 进行爬虫、渗透,绕过图片验证码需要使用到
1.3.1 JS 断点调试#
JS 打断点,打到断点处就不运行了,选择单步步入就行。
1.3.2 怎么找断点#
按照关键字在调试器中全局搜索,跳转到需要的位置,在 js 行点一下,变成蓝色即可。
注意:MD5 函数可以自定义,在破解密码的时候,需要找到真正使用的 MD5 的函数
1.4 技巧四、python 结合 JS 解决加密难题#
-
JS 代码 test.js
# js 加密函数 function encryptByDES(message) { var encrypted = message; encrypted = encrypted + "asdfdsaf"; return encrypted; }
-
通过 python 调用 js 文件中的的函数
# 安装execjs pip install pyexecjs # pyexecjs 已于2018年停止维护,目前可以使用js2py代替 import execjs with open('test.js', 'r') as f: a = execjs.compile(f.read()) # 调用 test.js 文件中的 encryptByDES 函数,且传入的参数是 password result1 = a.call('encryptByDES', 'password') print(result1)
1.5 实战、MD5 加密逆向加密参数还原#
-
使用 bp 拦截,获取信息
-
在浏览器控制台中根据关键词
password
搜索,找出对password
进行处理的js
函数; -
使用
python
代码调用js
中的处理password
的函数,并根据错误提示补全function
和其余的参数; -
对比经过
python
跑出来的值和bp
拦截得到的值,看是否相同; -
如果相同,则可以使用
python
对密码字典进行处理,然后再使用bp
进行暴力破解。
技术二、FUZZ 的精美艺术,产出直线提升(技术)#
技巧五、常见 FUZZ 姿势和工具及字典(技巧)#
2.1.1 FUZZ
模糊测试#
FUZZ:作为名词时译为 “绒毛;模糊;细毛;警员”
核心思想:只知道一部分条件的情况下,需要进行一个很模糊的测试,使用不同的东西进行不断的测试,直到得到一个想要结果。
例如:支付宝大额转账,需要填写部分信息。
2.1.2 都可以在哪些地方用到fuzz
的技巧呢?#
- 破解密码的时候
- 扫描目录的时候
- 扫描参数的时候
- 测试漏洞的时候
- 过 WAF 的时候
- 看到的任何参数,其实都可以使用
FUZZ
去测试 - 。。。。很多很多,每个地方都可以
fuzz
FUZZ
用得好,漏洞少不了
目录扫描,暴力破解的核心思想就是FUZZ
,很多时候,工具搞不定的问题 ,可以手动FUZZ
一下,会有意想不到的结果。
2.1.3 优秀的 FUZZ 案例#
2.1.3.1 参数FUZZ
实战漏洞#
-
在某
src
漏洞挖掘过程中发现了一个有趣的文件http://36...*/upload_image.php
,访问的时候内容为空白 -
对于这种页面,毫无疑问,要对参数进行
FUZZ
对其参数进行FUZZ
,发现了一个参数字段为do
- 发现了
http://360...*/upload_image.php?do
可以用
- 发现了
-
然后对
do
这个参数进行FUZZ
,然后bp
一下 -
构造出了
http://xxxxx/image_upload.php?do=upload
,并对其进行访问,成功出现上传表单,得到如下界面。 -
上传文件后
FUZZ
上传路径http://36.*.*.*/uppload -------> 403 继续fuzz http://36.*.*.*/upload/images ------->403 。。。。 发现文件路径,构造url http://36.*.*.*/upload/images/skr_anti.php
-
然后使用远控工具连上对方服务器
2.1.3.2 FUZZ 隐藏参数和字段#
-
对目录扫描发现如下的文件
-
对其文件进行定位
-
构造目录访问
将提示中的信息构造到url中进行访问 http://....../start/face_xxx 访问接口,提示Method Not Allow,405错误,那么显然,我们得换POST传参
-
POST
随便传个参数过去,发现接口提示Request error, content-type was unsupported
-
继续
FUZZ
content-type head -
FUZZ
出来application/json
的content-type
头可用,那么简单了,构造JSON
继续FUZZ
JSON
数据参数 -
利用本处
SSRF
完全可以批量对内网Redis
进行密码喷洒 + 反弹shell
对边界进行突破
2.1.3.3 JS 和 FUZZ 的结合#
-
访问一个登录页面
-
设置账号密码开始暴力破解密码
-
测试出来的账号密码登录没有任何的反应,登录页面也只是登录页面
-
不可能放弃的继续
FUZZ
目录,发现存在/JS/目录
,开始对里面的东西进行FUZZ
-
根据发现的链接,构造
url
并访问,发现了新的页面发现此处有一个
logout
,根本没有登录过的地方,怎么会有?于是推测出,底下的账号密码显示的是刚才爆破的,但是发现好像没有什么用处。 -
接着发现
JS
的文件,发现如下规律 -
接着
FUZZ
域名,发现了一个 会展 页面 -
接着使用
bp
抓包,修改返回数据,登录成功。 -
成功访问站点
技巧六、未知目录,信息泄露,备份文件等漏洞中的 FUZZ(技巧)#
2.2.1 未知目录#
- 分别逐级
FUZZ
网站的目录与文件; - 根据
FUZZ
出来的路径,分别FUZZ
参数和路径; - 循环反复的进行
FUZZ
,直到得到你想要的结果。
技巧七、隐藏变量,未知参数中的FUZZ
骚姿势#
- 根据得到的
url
进行初始目录和参数FUZZ
; - 然后根据
FUZZ
结果进行大胆的预测,并根据预测进行FUZZ
; - 根据上一步得到的结果,构造新的
URL
,进行访问,并再次FUZZ
; - 循环上述的操作,直到得到你想要的结果;
- 注意:重点是耐心、细心、大胆预测,并根据逐步的扩大字典的数量。
技巧八、SQL,XSS,SSRF,CSRF 等漏洞中的 FUZZ 技巧#
靶场:phpStudy/PHPTurorial/www/pikaqiu/pikachu
在实际的渗透测试过程中,需要过 WAF,就可以使用FUZZ
对内容进行过滤,只需要将所有的内容使用bp
导入进行测试,在结果中就可以找出哪些东西是没有被WAF
过滤的。
2.4.1 案例:挖掘pikaqiu
靶场的sql
注入漏洞#
-
哪些参数可以
FUZZ
可以
FUZZ
的参数:GET
行中的参数Cookie
行中的参数- 其他的参数
-
使用
bp
,导入字典进行FUZZ
-
根据
bp
得出的结果,构造URL
进行访问,获得想要的结果
实战二、实战 FUZZ 渗透到远程 RCE 漏洞控制电脑#
-
使用浏览器访问指定的地址,并打开浏览器控制台
红色框中就是网站的目录文件以及
JS
文件,查看目录和文件中是否有我们需要的信息。 -
如果没有,可以
FUZZ
JS
目录(通常情况下,有JS
目录,可以先FUZZ
JS
目录)-
构造完整是
JS
URL
; -
使用
bp
进行拦截; -
导入字典,进行攻击;
-
根据
bp
攻击的结果进行二次分析,如果没有想要的信息,可以继续进行二级FUZZ
,并重复上面的步骤; -
分析
bp
结果,构造URL
,进行访问,得出结果。 -
bp
结果展示
-
-
如果
FUZZ
JS
目录没有得到结果,就使用上述步骤,继续FUZZ
其他目录。 -
注意:在
FUZZ
过程中,可能需要对不同的参数,不同的目录,不同的content-type
等反复进行FUZZ
,需要注意细心查看每次bp
得出的结果。 -
最终的结果:获得网站的
getshell
权限,在得到可上传的的URL
之后,修改bp
中的请求数据,传入木马(例如:一句话木马),发送到对应的URL
,然后在浏览器中进行访问,最终得到结果。<?php system("whoami") ?>
<?php phpinfo(); ?>