渗透测试的简单排查

0-前言

​ 渗透测试中包含太多重复且单一的漏洞排查,记录排查过程中的心得,以便之后可以快速进行排查缺陷,所采用的方法是正则匹配

元字符 含义与作用 示例
[] 匹配内部所有字符 [a-z]
\d 匹配任意一个数字。等价于 [0-9] \d\d 匹配 "12", "01",但不匹配 "A1" (因为 A 不是数字)
\w 匹配任意一个字母、数字或下划线。等价于 [A-Za-z0-9_] \w\w 匹配 "Ab", "a1", "_x",但不匹配 "@#"
\s 匹配任意一个空白字符,包括空格、制表符(\t)、换行符(\n)等 a\sb 匹配 "a b" (中间有空格)
\D 匹配任意一个非数字字符。等价于 [^0-9] \D 匹配 "a", "@",但不匹配 "1"
\W 匹配任意一个非字母、数字、下划线的字符。等价于 [^A-Za-z0-9_] \W 匹配 "@", "+",但不匹配 "a""1"
\S 匹配任意一个非空白字符 \S 匹配 "a", "1",但不匹配空格
+ 匹配前面的元素一次或多次 用于贪婪模式,不包含0次
***** 匹配前面的元素零次或多次 用于贪婪模式,包含0次
? 匹配前面的元素零次或一次 用于非贪婪模式,只包含0和1次
{n,m} 匹配前面的元素至少 n 次,至多 m 次 a{2,4} 匹配 "aa", "aaa", "aaaa"

只有在特定的组合中,! 可能参与构成有特殊意义的序列:

  • (?!) - 否定型先行断言(但通常写作 (?!...)
  • (?<!) - 否定型后发断言(但通常写作 (?<!...)

1-信息泄露

1>绝对地址泄露

浏览器正则匹配,最好采用贪婪模式进行排查

1
2
3
4
5
6
7
8
9
10
11
12
#windows-address
[\W\s][A-Z]:[\/\\]+(\w{2,})+
#注:浏览器中有忽略大小写,根据相应项目进行适当调整

#当内容过多可以采用
#否定型先行断言(Lookahead)- 排除后面括号的内容
([\W\s][A-Z]:[\/\\]+(\w{2,})+)(?![\\d\\])


#/-address


2>内网地址泄露

主要匹配常见的192、172和127地址

1
2
#net-address
\b(?:127\.|192\.168\.|10\.|172\.(?:1[6-9]|2[0-9]|3[0-1])\.)(?:\d{1,3}\.){1,2}\d{1,3}\b

3>哈希匹配

主要匹配

abc123def456ghi789jkl012mno345pqr678stu901vwx234yz

1
2
3
4
5
6
#publickey
"(?=.*[0-9])(?=.*[a-z])[a-z0-9]{50,}"

#哈希匹配,改变后面的最少数字用于匹配密钥或者加密密码等
:"(?=.*[0-9])(?=.*[a-z])[a-z0-9]{39,}"