---
description: doughnuts简单的使用。
---

# 场景一

### _**安装：**_

{% hint style="info" %}
&#x20;**- 以github为例：**
{% endhint %}

{% tabs %}
{% tab title="第一步" %}
### **clone到本地：**

```
cd ~ 
git clone https://github.com/WAY29/Doughnuts.git
cd Doughnuts/doughnuts/
```

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQ6dFNzJM5_M1ino7G%2F-MCQA3g_SCIQQAYY2e9z%2FC1-1.png?alt=media\&token=9e63d4cb-bb8a-4579-a502-5ad58a7bdc65)

### **检查文件完整性：**

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQ6dFNzJM5_M1ino7G%2F-MCQA_4jYtRAoKDKTsUF%2FC1-2.png?alt=media\&token=a8d2b193-0f58-40cd-82a7-4185e5ad6f7c)
{% endtab %}

{% tab title="第二步" %}
### **安装相关依赖包：**

```
pip3 install -r requirements.txt
```

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQ6dFNzJM5_M1ino7G%2F-MCQB3u51Qdl490Wc4Xb%2FC1-3.png?alt=media\&token=6e546c1a-984f-4690-a671-8ca4962270fe)

### **安装doughnuts：**

```
python3 install.py {命令名称(可留空，默认为doughnuts)}
```

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQB8kY04moclb6_i-R%2F-MCQBhxPGDNXXCjjFlZw%2FC1-4.png?alt=media\&token=5b375291-32c8-4b58-b3e7-aeb23de0078d)

### **检查命令是否存在：**

```
which {命令名称}
```

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQB8kY04moclb6_i-R%2F-MCQCLlWcfdbVcmfUv53%2FC4-5.png?alt=media\&token=7d9dc8a1-0902-46f0-b7e5-5c8154b0c3a0)
{% endtab %}

{% tab title="第三步" %}
### **检查是否已成功安装：**

```
{命令名称}
```

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQCzvjPInWwTxGEj7f%2F-MCQDQ38bShAsYxLDABK%2FC4-6.png?alt=media\&token=43f1f724-5e39-4c6a-a51d-48a9f2ae470b)

### **Enjoy it！**
{% endtab %}
{% endtabs %}

## **场景一：**

{% hint style="info" %}
&#x20;**- 该场景进行的一切操作均已授权，任何使用本项目进行的一切未授权攻击行为与本人无关。**
{% endhint %}

#### 前置条件：

* 该场景环境为 apache + mysql + php5。
* 该场景 static/images/upload/ 目录下已部署一句话马。

#### 攻击步骤：

&#x20; \# 使用doughnuts连入该场景事先部署好的一句话马。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQK9XZk_0m8bYeJrzD%2FC1-6.png?alt=media\&token=0e822d48-acfb-471a-8e7e-4e5be0969283)

&#x20; \# 输出 disable\_functions 。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQKCf9ivZPcdhI2c9V%2FC1-7.png?alt=media\&token=3d69d2ff-fa40-465a-b7e1-4d2486ad53b8)

&#x20; \# 发现将系统命令函数ban了，尝试进行绕过。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQKJGcfIx5M6Ppm7uC%2FC1-8.png?alt=media\&token=445a35e4-88bb-4776-903b-ab9001b16780)

&#x20; \# 未能成功，那么先简单的进行端口扫描。

* 先用 socket 扫描0\~1000端口：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQbxs501hV7tfReShu%2FC1-9.png?alt=media\&token=4b1589e4-4cc5-4342-89aa-7bcf4c7a9ee7)

* 再用 curl 扫描1001\~10000端口：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQc-zdoSiO-ox6KhwQ%2FC1-10.png?alt=media\&token=2f32a6e2-36a3-4836-a30e-d3f0e7bff15e)

&#x20; \# 可以得知，22、80、3306端口是开着的，其中 3306 显然是 mysql 的端口，那么下一步是扫描配置文件。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQcgcRVmBeCl3Oo-Et%2FC1-11.png?alt=media\&token=79080150-80b9-43c4-b975-65a2202198da)

&#x20; \# 扫描得到配置文件路径为 /var/www/html/sql/config/config.php ，尝试读取该文件。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQG6nU8OHdCiJ300rt%2F-MCQe8I5DvW6X_ifalxZ%2FC1-12.png?alt=media\&token=068b6934-fda0-4093-9392-879a45cd450f)

&#x20; \# 得到以下信息：

* Host：127.0.0.1
* Port：3306
* User：root
* Pass：f6d6eefa48772d2156a70f01b95b30ba

&#x20; \# 尝试使用以上信息初始化 mysql 。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQedqq0wwUH0Tn-FOn%2F-MCQexEcLlAHApKX85Ce%2FC1-13.png?alt=media\&token=08e2106f-b0e1-45da-97a9-4f57bd017f69)

&#x20; \# 尝试获得 sql 的shell。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQfIOvqDaZy55sm2v-%2F-MCQfirbty5yv1YY3NZY%2FC1-14.png?alt=media\&token=0001015e-353c-4577-ab73-5014de82bef3)

&#x20; \# 现在已经成功取得了 sql 的shell，看一下 secure\_file\_priv 的值。

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQfIOvqDaZy55sm2v-%2F-MCRClaq0JjOD9TGHz7a%2FC1-15.png?alt=media\&token=81c1ff93-0687-4237-8860-6bd651d2e9dd)

&#x20; \# 虽然说 secure\_file\_priv 为空，但由于mysql版本为 5.6.16 ，因而在 mysql 用户有可写权限的地方都是可以通过 outfile 写入文件的。

&#x20; \# 下一步是尝试使用 udf 执行命令。

* 显示 plugin 目录：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQfIOvqDaZy55sm2v-%2F-MCRE3C7shhXj79iqDAD%2FC1-16.png?alt=media\&token=df431bcc-65d9-440a-ab04-bf99db047ee0)

* 尝试往里边写入文件：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQfIOvqDaZy55sm2v-%2F-MCREvgRDrp738n5fWLo%2FC1-17.png?alt=media\&token=b633340d-8804-4de4-8989-12c5782be5cf)

* 验证文件存在：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCQfIOvqDaZy55sm2v-%2F-MCRPYk0rRGGJmt3mS0z%2FC1-18.png?alt=media\&token=dfdaaf5a-ff84-4d88-a90c-fd95e7ea77c0)

* 使用 udf 的payload：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCRPi0y5vjgPah2sTkX%2F-MCRYFV_QuLYSRztMkp5%2FC1-19.png?alt=media\&token=c6c16c86-9fb3-4690-914f-8f91f05a48fc)

* 尝试执行命令：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCRPi0y5vjgPah2sTkX%2F-MCS-nSDSaX9utzlSx3J%2FC1-20.png?alt=media\&token=0b6b7a56-a5c7-41fe-afba-868a4fd67014)

* 尝试寻找可提权文件：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCS03-l9y6NNdR7w1mM%2F-MCS9EYV7rL1NuzMlRuo%2FC1-21.png?alt=media\&token=2ae6a8a0-689d-42b0-81e4-c108ccf04732)

* 进行权限提升：

![](https://4283174472-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBMYbAUrd33d7L_Vplm%2F-MCS03-l9y6NNdR7w1mM%2F-MCSQ-JsyPWwGt8Cpv70%2FC1-22.png?alt=media\&token=2893c8db-88d1-4f73-ac7b-6df68dc6e522)

&#x20; \# 最后成功拿到了root权限。

