python pty & magic | 加固shell
时间:2022-07-23
本文章向大家介绍python pty & magic | 加固shell,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有时候我觉得我是幸福的,因为每一步都有前辈踩过了,所以走得相对轻松 朋友们,我们的冒险要到下一个阶段了:加固shell!
我们看一下nc 反弹的 shell
使用 python 的 pty 来转换为 交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
- 也可以使用
python3 -c "__import__('subprocess').call(['/bin/bash'])"
可以看到su这种交互式命令已经可以执行了,我们尝试一下代码补全
看来代码补全还是不行,查了资料,可以使用 stty 来进行优化,将哑 shell 转换为全能shell
在 python3 -c 'import pty; pty.spawn("/bin/bash")' 后的shell中输入 Ctrl+z
Linux 中Ctrl + c/d/z 看着都差不多,但是还是有不一样的含义
- Ctrl + c 强制中断程序的执行,进程终止
- Ctrl + d 发送EOF信号,很多程序接到这个信号后会停止
- Ctrl + z 将任务中止,其实就是将这个任务暂停
可以看到,nc反弹的shell放入了后台,界面退回到了攻击主机原本的shell
-
echo $TERM
获取 term值 -
stty -a
获取 rows 和 columns 的值
-
stty raw -echo
关闭输入回显 -
fg
进入前台,就是把刚才中止的nc连接捡回来
reset
export SHELL=bash
export TERM=xterm-256color
stty rows 24 columns 80
还是不支持代码补全,感觉被骗了
我觉得是我用 os x 系统的事情,所以我特意去 Kali 下面试了试,是可以支持代码补全的,这里就不放图了,因为我绕过这个问题了
在执行 nc -l 5555 之前,我们先输入 bash, 进入 bash 再进行监听,使整个过程都在 bash 下
可以看到这次可以代码补全了,看看其他功能怎么样,我们输入 Ctrl + c
可以看到, Ctrl + c 已经不能关闭我们的shell了,看看上下按钮可不可以调出来历史命令
上下键可以使用,命令行颜色也可以正常显示,很好!
所以最开始不能代码补全是因为我把os x 的shell 改成了 fish shell,大家如果使用了一些特殊shell不能完成代码补全等功能可以像我上面这样操作。
具体操作如上
- windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- 本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github
- 最近的几个技术问题总结和答疑(九)(r10笔记第16天)
- AgileEAS.NET SOA中间件平台更新日志 2015-04-28
- 【Go 语言社区】Golang语言操作redis连接池的方法
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
- 关于Flashback的小测试(r10笔记第15天)
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
- 【Go 语言社区】Golang语言获取系统环境变量的方法
- Oracle中的PUBLIC(r10笔记第14天)
- Data Guard高级玩法:通过闪回恢复switchover主库 (r10笔记第13天)
- WinForm/MIS项目开发之中按钮级权限实践
- 恢复控制文件避免使用resetlogs选项 (r10笔记第12天)
- Go实现短url项目
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安装ActiveMQ
- Spring Cloud Zuul 快速入门
- Spring Cloud 集成 RabbitMQ
- SpringBoot2.x集成Apache Shiro并完成简单的Case开发
- Spring Security权限框架理论与简单Case
- leetcode树之N叉树的前序遍历
- Spring Security 中的 hasRole 和 hasAuthority 有区别吗?
- python常见的import导包技巧
- 真正了解贪心算法,这是一篇精华入门总结...
- MGR修改max_binlog_cache_size参数导致异常
- 【技术创作101训练营】TensorFlow Lite的 GPU 委托(Delegate)加速模型推理
- 弄懂这 5 个问题,拿下 Python 迭代器!
- 1500字,8个问题,彻底理解堆!
- Python画王者荣耀英雄能力雷达图
- Python语言的精华:Itertools库