1.手撕CTFHub-Web(七):RCE
2.冰蝎,写菜从入门到魔改
手撕CTFHub-Web(七):RCE
在深入探讨 RCE(远程代码执行)的刀源刀源实现过程中,我们首先聚焦于 PHP 中的码中码 eval 函数。eval 函数允许执行 PHP 字符串,国菜通常通过接收 POST 或 GET 方法提交的写菜数据,如 cmd 参数。刀源刀源java开发cms源码这允许执行如 `system('ls')` 这样的码中码命令,以查看当前目录。国菜然而,写菜没有对输入进行过滤,刀源刀源这直接导致了攻击者可以连接到菜刀(web shell)服务器。码中码
当在根目录发现 flag 文件时,国菜我们注意到一个名为 shell.txt 的写菜一句话木马文件。通过接收 file 参数并利用 strpos 函数,刀源刀源年会大师源码我们可以绕过对 flag 文件的码中码直接包含限制。构造请求 `?file=./shell.txt` 来包含 shell.txt,并使用菜刀连接,我们得以在根目录下获取 flag。
接着,我们转向 PHP://input 的概念,它允许将 POST 请求中的数据作为 PHP 代码执行。构造 `?file=php://input` 的请求并提交 POST 数据,我们可以执行命令并从根目录中找到 flag 文件。
远程包含提供了一种通过外部服务器的包含命令执行代码的方法。通过在 file 参数中填写自己的服务器上的包含一句话木马的 txt 文件地址,我们可以绕过服务器端的限制,直接在根目录下找到 flag。砍价商城源码
在尝试直接读取源代码时,发现与 PHP://input 类似的问题。根据题目描述和提示,我们猜测使用 PHP://filter 协议可以读取 flag 文件。构造请求 `/?file=php://filter/read=convert.base-encode/resource=/flag`,读取 flag 文件的 base 内容,然后对得到的内容进行 base 解码以获取 flag。
进入命令注入的探讨,exec 函数用于执行 cmd 参数指定的命令,并将执行后的返回状态写入 res。尽管尝试使用管道符|连接命令,但没有返回任何内容,可能是矩阵开盘源码因为存在无法显示的字符。使用 base 编码并导出命令后,解码得到 flag。
面对 cat 命令的过滤,我们使用连接符''、\ 或 $@ 来绕过过滤,构造命令 `.0.0.1|ca''t ./ flag_.php|base`,获取 base 编码后的内容并解码得到 flag。
过滤空格的处理中,我们使用连接符`<`构造命令 `.0.0.1|cat<./flag_.php|base`,获取 base 编码后的内容,解码后得到 flag。
目录分隔符的过滤处理需要特别注意,使用分号`;`来分割命令。power up源码由于 `/` 被过滤,我们先用 `cd` 进入 flag_is_here 文件夹,然后用 `cat` 读取 flag 文件 flag_.php。构造命令 `.0.0.1;cd flag_is_here;cat flag_.php` 获取 flag。
运算符的过滤包括 |、& 和 ||,通过使用分号`;`来分隔命令,我们绕过了这些过滤。构造命令 `.0.0.1;cat flag_.php` 并查看源代码页面以获取 flag。
综合过滤练习要求我们整合多种技术,以应对复杂的过滤策略。借助一篇文章中提供的 Linux 绕过方法,我们了解到使用 `%0a` 作为分隔符可以执行命令。请注意 `%0a` 是 URL 编码,必须在 URL 中使用,否则将被二次编码。构造请求 `?ip=.0.0.1%0als` 可以执行成功并发现目录 flag_is_here。接下来,用 `%` 代替空格并使用连接符`'’`绕过对关键词 cat 和 flag 的过滤,构造命令 `?ip=.0.0.1%0acd%fl''ag_is_here%0aca''t%fl''ag_.php` 并查看源码获取 flag。
冰蝎,从入门到魔改
“冰蝎”是一个动态二进制加密网站管理客户端,第一代webshell管理工具“菜刀”的流量特征显著,容易被检测。基于流量加密的webshell增多,“冰蝎”应运而生。它以JAVA为基础,跨平台使用,功能强大,包括基本信息、命令执行、虚拟终端、文件管理等。
“冰蝎”客户端在服务端支持open_ssl时使用AES加密算法,密钥长度为位。加密流程从客户端发起带密码的请求开始,服务端产生随机密钥,将密钥写入Session并将密钥返回客户端。客户端获取密钥后,将payload用AES算法加密,以POST形式发送请求。服务端收到请求后,使用Session中的密钥解密请求的Body部分,执行Payload,并将结果返回给客户端。客户端获取结果并显示在UI界面上。在流量中,冰蝎在执行Payload之后的返回并未显示加密。
最新版本的“冰蝎”(v2.0.1)于年2月发布后未进行更新。各大厂商的检测系统及WAF均对其特征进行了分析并加入规则。攻防技术不断发展,需要不断更新自我以保持攻防的有效性。
要魔改“冰蝎”,首先需要反编译JAR包获得源码,使用反编译工具如JD-GUI,然后通过Eclipse安装WindowsBuilder创建SWT项目。导入反编译后的源码和JAR包,修复报错并尝试将源码跑起来。成功跑起来反编译后的代码后,可以进行特征擦除,包括密钥交换时的参数、header中的Content-Type、User-Agent、Accept、二次密钥获取、以及response中返回密钥等。
在实际检测中,单一规则检测对“冰蝎”的误报率较高。通过魔改程序可以在一定时间内绕过安全设备的检测,但真正保持攻防有效性需要不断更新和学习。安全之路漫长,共勉。