欢迎关注公众号进入交流群
渗透测试流程
如何处理信息收集时子域名爆破泛解析的问题
域名解析:子域名.域名解析到同一IP
泛域名解析:*.域名解析到同一IP
是否开启泛解析
**结论:**百度不存在泛解析,淘宝存在
解决
(脚本实现)不断生成随机域名发送请求,将每次返回的IP和TTL记录下来,直到大部分IP出现次数都大于两次,IP黑名单收集完成
而后使用域名字典进行爆破,根据IP黑名单进行过滤,同时比较TTL,在泛解析记录中TTL是相同的,若不相同则不是
绕过CDN查真实IP
加速访问
隐藏真实IP
访问域名->CDN节点->真实服务器IP->访问目标主机
验证是否存在
使用多地ping检测,对应IP是否唯一,不唯一多半使用了CDN
网络空间搜索
“sechelper.com”
domain=“sechelper.com”
cert=“*.sechelper.com”
icon_hash=“-614101761”
title=“至察助安”
icp=“津ICP备2022002336号”
js_md5=“82ac3f14327a8b7ba49baa208d4eaa15”
body=“至察助安”
国外ping
开启代理,或使用海外服务器ping域名
证书
https://search.censys.io
phpinfo你会关注哪些信息
php5.3.4以下 + magic_quotes_gpc off 可%00截断
绝对路径
查看真实IP
绕过CDN获取C段资产,旁站等重要信息
敏感配置
远程文件包含:allow_url_include
远程文件读取:allow_url_fopen
被禁用的函数名
可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径
配置文件位置
有没有了解过权限维持
核心目的是让我们的木马病毒持续在线,不会因为系统重启,用户注销或者其他特殊原因下线。
crontab计划任务后门
SSH公钥免密
Rookit后门
输出到href的XSS如何防御
- 对输入和URL参数进行过滤(白名单和黑名单)
- 对输出进行编码
- HttpOnly设置
- 处理富文本
samesite防御CSRF的原理
same-site cookies属于前端防御,它是在原有的Cookie中,新添加了一个
SameSite
属性,控制只有同域(子域)能访问Cookie,它标识着在非同源的请求中,是否可以带上Cookie,它可以设置为3个值,分别为:
- Strict
- Lax
- None
cookie内容
POST /transfer HTTP/1.1
Host: www.xiaodi8.com
Cookie: JSESSIONID=randomid;SameSite=Strict;
Strict是最严格的,它完全禁止在跨站情况下,发送Cookie。只有在自己的网站内部发送请求,才会带上Cookie。不过这个规则过于严格,会影响用户的体验。比如在一个网站中有一个链接,这个链接连接到了GitHub上,由于SameSite设置为Strict,跳转到GitHub后,GitHub总是未登录状态。
Lax
的规则稍稍放宽了些,大部分跨站的请求也不会带上Cookie,但是一些导航的Get请求会带上Cookie,如下:
None就是关闭SameSite属性,所有的情况下都发送Cookie。不过SameSite设置None,还要同时设置Cookie的Secure属性,否则是不生效的。
CSRF防御
在被攻击的系统登陆
- 对重要的操作进行二次认证,防止操作在后台自动执行。
- 设置适当的会话超时时间,防止用户离开后,其他用户在同一个浏览器中操作
在第三方系统触发了对被攻击系统的请求
阻止外域访问
- 同源检测:服务器端通过请求的Origin Header和Referer Header,判断请求的来源。
- Samesite Cookie:控制只有同域(子域)能访问Cookie。
随机数一致性检测
CSRF Token:用户登录后,生成随机值csrf_token,用户提交的操作类(POST)请求中,提交的表单中携带csrf_token,服务器端判断csrf_token是否正确。
双重Cookie验证:Cookie中保存csrf_token,用户提交表单中也携带csrf_token,服务器端判断两个值是否一致。
浏览器解析顺序和解码顺序
浏览器一般的解码顺序是先进行html解码,再进行javascript解码,最后再进行url解码,需要注意的是这里的url解码和我们发送到服务器的url解码不同,那个过程是由服务器来完成的,而不是浏览器
过滤逗号的SQL注入如何绕过
join
union select 1,2 #等价于
union select * from (select 1)a join (select 2)b
substr()&mid()
select substr(database() from 1 for 1);
select mid(database() from 1 for 1);
like
select ascii(mid(user(),1,1))=80 #等价于
select user() like 'r%'
过滤limit后逗号如何绕过
select * from news limit 0,1
等价于
select * from news limit 1 offset 0
fastjson漏洞
python相关漏洞
select user() like ‘r%’
## 过滤limit后逗号如何绕过
```mysql
select * from news limit 0,1
等价于
select * from news limit 1 offset 0