在信息收集中,除了常规的方式以外,还可以从js中进行收集,一些隐藏页面往往就会隐藏在js中。从js中可以收集到一些url以及子域名的信息。有时js中还会存在跟用户认证相关的信息。下面介绍几个从js中收集敏感信息的工具。
会增加攻击面的信息(URL,域名等)
敏感信息(密码,API密钥,bucket等)
代码中的潜在危险函数操作(eval,dangerallySetInnerHTML等)
具有已知漏洞的组件(过时的框架等)
下载地址:https://github.com/Threezh1/JSFinder
python JSFinder.py -u https://baidu.com
下载地址:https://github.com/GerbenJavado/LinkFinder
python linkfinder.py -i https://example.com -d
SecretFinder
地址:https://github.com/m4ll0k/SecretFinder
添加正则表达式
可以再SecretFinder.py文件中添加自己的正则表达式:
_regex = {
'google_api' : r'AIza[0-9A-Za-z-_]{35}',
'google_captcha' : r'6L[0-9A-Za-z-_]{38}|^6[0-9a-zA-Z_-]{39}$',
'google_oauth' : r'ya29\.[0-9A-Za-z\-_]+',
'amazon_aws_access_key_id' : r'A[SK]IA[0-9A-Z]{16}',
'amazon_mws_auth_toke' : r'amzn\\.mws\\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
'amazon_aws_url' : r's3\.amazonaws.com[/]+|[a-zA-Z0-9_-]*\.s3\.amazonaws.com',
'facebook_access_token' : r'EAACEdEose0cBA[0-9A-Za-z]+',
'authorization_basic' : r'basic\s*[a-zA-Z0-9=:_\+\/-]+',
'authorization_bearer' : r'bearer\s*[a-zA-Z0-9_\-\.=:_\+\/]+',
'authorization_api' : r'api[key|\s*]+[a-zA-Z0-9_\-]+',
'mailgun_api_key' : r'key-[0-9a-zA-Z]{32}',
'twilio_api_key' : r'SK[0-9a-fA-F]{32}',
'twilio_account_sid' : r'AC[a-zA-Z0-9_\-]{32}',
'twilio_app_sid' : r'AP[a-zA-Z0-9_\-]{32}',
'paypal_braintree_access_token' : r'access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}',
'square_oauth_secret' : r'sq0csp-[ 0-9A-Za-z\-_]{43}|sq0[a-z]{3}-[0-9A-Za-z\-_]{22,43}',
'square_access_token' : r'sqOatp-[0-9A-Za-z\-_]{22}|EAAA[a-zA-Z0-9]{60}',
'stripe_standard_api' : r'sk_live_[0-9a-zA-Z]{24}',
'stripe_restricted_api' : r'rk_live_[0-9a-zA-Z]{24}',
'github_access_token' : r'[a-zA-Z0-9_-]*:[a-zA-Z0-9_\-]+@github\.com*',
'rsa_private_key' : r'-----BEGIN RSA PRIVATE KEY-----',
'ssh_dsa_private_key' : r'-----BEGIN DSA PRIVATE KEY-----',
'ssh_dc_private_key' : r'-----BEGIN EC PRIVATE KEY-----',
'pgp_private_block' : r'-----BEGIN PGP PRIVATE KEY BLOCK-----',
'json_web_token' : r'ey[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$',
'name_for_my_regex' : r'my_regex',
# for example
'example_api_key' : r'^example\w+{10,50}'
}
用户名,密码等敏感信息搜索,可以通过正则表达式或者关键词进行匹配
如在js中全局搜索passwd,password,username,email,phone等关键词
一些常见的正则表达式
常用规则 |
正则表达式 |
Email地址: |
^\w+(-+.\w+)*@\w+(-.\w+)*.\w+(-.\w+)*$ |
域名: |
a-zA-Z0-9{0,62}(.a-zA-Z0-9{0,62})+.? |
InternetURL: |
a-zA-z+://^\s* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$ |
手机号码: |
^(130-9|145|7|150|1|2|3|4|5|6|7|8|9|180|1|2|3|5|6|7|8|9)\d{8}$ |
电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX): |
^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$ |
国内电话号码(0511-4405222、021-87888822): |
\d{3}-\d{8}|\d{4}-\d{7} |
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): |
((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$) |
身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X: |
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$) |
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线): |
^a-zA-Z{4,15}$ |
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线): |
^a-zA-Z\w{5,17}$ |
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间): |
^(?=.*\d)(?=.*a-z)(?=.*A-Z)a-zA-Z0-9{8,10}$ |
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间): |
^(?=.*\d)(?=.*a-z)(?=.*A-Z).{8,10}$ |
日期格式: |
^\d{4}-\d{1,2}-\d{1,2} |
一年的12个月(01~09和1~12): |
^(0?1-9|10-2)$ |
一个月的31天(01~09和1~31): |
^((0?1-9)|((1|2)0-9)|30|31)$ |
钱的输入格式:有四种钱的表示形式我们可以接受:“10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”: |
^1-9*$ |
这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式: |
^(0|1-9*)$ |
一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号: |
^(0|-?1-9*)$ |
这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分: |
^0-9+(.0-9+)?$ |
必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 “10” 和 “10.2” 是通过的: |
^0-9+(.0-9{2})?$ |
这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样: |
^0-9+(.0-9{1,2})?$ |
这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样: |
^0-9{1,3}(,0-9{3})*(.0-9{1,2})?$ |
1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须: |
^(0-9+|0-9{1,3}(,0-9{3})*)(.0-9{1,2})?$备注:这就是最终结果了,别忘了"+“可以用”*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里 |
xml文件: |
^(a-zA-Z+-?)+a-zA-Z0-9+\.x|Xl|L$ |
中文字符的正则表达式: |
\u4e00-\u9fa5 |
双字节字符: |
^\x00-\xff |
空白行的正则表达式: |
\n\s*\r(可以用来删除空白行) |
HTML标记的正则表达式: |
*>.*?| |
( 首尾空白字符的正则表达式: |
^\s*|\s*$或(^\s*)|(\s*$)(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式) |
腾讯QQ号: |
1-9{4,} (腾讯QQ号从10000开始) |
中国邮政编码: |
1-9\d{5}(?!\d) (中国邮政编码为6位数字) |
IPv4地址: |
((2(50-5|0-4\d))|0-1?\d{1,2})(.((2(50-5|0-4\d))|0-1?\d{1,2})){3} |
专注分享安全知识,大家可以关注一下我的微信公众号,谢谢大家!
不积跬步,无以至千里;不积小流,无以成江河。