当前位置: 首页 > news >正文

自学渗透测试第九天(linux shell脚本编写)

第4章 Shell脚本与Burp基础(第9–10天)

4.1 Linux Shell脚本编写(第9天)

核心目标
  1. 掌握Shell脚本基础:理解Shell脚本的基本语法,包括变量、参数传递、条件判断、循环控制、函数定义,能够编写结构清晰的脚本。

  2. 实现渗透测试自动化:将前序课程中需要手动重复执行的命令组合(如批量扫描、日志分析、信息提取)通过脚本自动化,显著提升工作效率。

  3. 培养编程思维:能够将复杂的渗透测试任务分解为可执行的脚本步骤,为后续学习Python等更强大的语言打下基础。

模块一:Shell脚本基础语法
1.1 脚本创建与执行
  • 解释器声明:脚本首行必须为#!/bin/bash,指定使用Bash Shell执行。

  • 脚本创建与权限

    # 1. 创建脚本文件 vim scanner.sh # 2. 编辑内容,首行 #!/bin/bash #!/bin/bash # 3. 添加执行权限 chmod +x scanner.sh
  • 执行脚本

    ./scanner.sh # 在脚本所在目录执行 bash scanner.sh # 显式指定解释器执行 /path/to/scanner.sh # 使用绝对路径执行
1.2 变量与参数
  • 变量定义与使用

    name="Kali_User" # 定义变量,等号两边不能有空格 echo "Hello, $name" # 使用变量,$符号引用 echo "OS: ${name}OS" # 花括号用于明确变量边界
  • 位置参数$0脚本名,$1第一个参数,$2第二个参数,$#参数个数,$@所有参数列表。

    # 调用: ./script.sh 192.168.1.1 80 echo "目标IP: $1" echo "目标端口: $2" echo "共 $# 个参数。"
  • 命令替换:将命令输出赋值给变量。

    current_time=$(date) # 推荐方式 current_time=`date` # 传统方式
1.3 条件判断与控制流
  • if-elif-else 语句

    if [ $UID -eq 0 ]; then #then:标志着循环体的开始。 echo "You are root." elif [ $USER == "kali" ]; then echo "You are kali user." else echo "You are a normal user." fi #最后的fi的作用是结束整个if循环,若没有fi则会出现"syntax error: unexpected end of file"
  • 测试条件

    • 文件测试-f文件存在,-d目录存在,-r可读,-w可写,-x可执行。

    • 字符串比较=相等,!=不等,-z字符串长度为0。

    • 数值比较-eq等于,-ne不等于,-gt大于,-lt小于,-le 小于或等于。

  • for 循环

    for ip in 192.168.1.{1..10}; do ping -c 1 $ip | grep "bytes from" && echo "$ip is up" #-c count指的是限定发送报文的数量;&&:前面的命令执行成功以后,后面的命令才会执行。 done
  • while 循环

    count=1 while [ $count -le 5 ]; do #do:标志循环体的开始,与done形成对应的关系,done:标志循环体结束 echo "Count: $count" ((count++)) done
    • 循环语句的书写总结

      #所有循环体的条件部分都使用中括号来进行框住,每种循环都有自己对循环体的标注。
1.4 函数
  • 定义与调用

    function scan_port {# 或 scan_port() { echo "扫描主机: $1 的端口: $2" nc -zv $1 $2 2>&1 | grep succeeded } # 调用函数 scan_port 192.168.1.1 22 scan_port $1 $2 # 使用参数
模块二:Shell脚本在渗透测试中的实战应用
2.1 批量信息收集与扫描
  • 批量Ping扫描

    #!/bin/bash network="192.168.1" echo "开始扫描网络 $network.0/24..." for host in {1..254}; do ip="$network.$host" ping -c 1 -W 1 $ip > /dev/null 2>&1 #-w:设置等待时间,单位为秒。2>&1:标准错误也丢弃。 if [ $? -eq 0 ]; then echo "$ip 存活" fi done
  • 批量端口扫描与服务识别

    #!/bin/bash # 用法: ./batch_scan.sh iplist.txt for ip in $(cat $1); do echo "===== 扫描 $ip =====" nmap -sS -T4 -p 22,80,443,3306,8080 $ip done
2.2 日志分析与监控自动化
  • 实时监控认证日志并告警

    #!/bin/bash # 监控SSH暴力破解,发现后记录IP LOG_FILE="/var/log/auth.log" ALERT_FILE="ssh_attackers.txt" echo "开始监控SSH登录失败尝试..." tail -F $LOG_FILE | while read line; do #-F:实时跟踪,并在文件被移动/删除后自动重新打开文件继续跟踪。 if echo "$line" | grep -q "Failed password"; then attacker_ip=$(echo "$line" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') echo "[$(date)] 攻击来自: $attacker_ip" | tee -a $ALERT_FILE #tee -a :同时把标准输出同时写到文件和屏幕(其中-a表示的是新写入文件的内容是追加的形式,而非覆盖) fi done
2.3 漏洞利用与后渗透辅助
  • 自动检查并利用常见SUID提权

    #!/bin/bash # 检查可能的SUID提权二进制 VULN_BINARIES="/usr/bin/find /usr/bin/nmap /usr/bin/vim" for bin in $VULN_BINARIES; do if [ -u $bin ]; then # -u 检查文件是否设置了SUID位 echo "[!] 发现潜在SUID提权二进制: $bin" ls -la $bin fi done
  • 自动化Web目录爆破

    #!/bin/bash # 用法: ./dir_brute.sh http://target.com wordlist="/usr/share/wordlists/dirb/common.txt" target=$1 echo "开始对 $target 进行目录爆破..." for word in $(cat $wordlist); do response=$(curl -o /dev/null -s -w "%{http_code}" $target/$word) if [ $response -eq 200 ] || [ $response -eq 301 ] || [ $response -eq 302 ]; then echo "发现: $target/$word (状态码: $response)" fi done
模块三:当日达标实战任务
3.1 基础脚本编写
  1. 编写系统信息收集脚本:创建一个脚本sysinfo.sh,使其运行时能输出:当前用户名、主机名、系统内核版本、内存使用情况、磁盘空间使用情况。

  2. 编写端口检查脚本:创建一个脚本check_ports.sh,接受一个IP地址作为参数,检查该主机的22(SSH), 80(HTTP), 443(HTTPS)端口是否开放,并给出明确提示。

3.2 中级自动化任务
  1. 批量子域名解析:给定一个域名列表文件domains.txt,编写脚本resolve_domains.sh,自动解析每个域名对应的IP地址,并去重后保存到ips.txt中。

  2. 日志分析器:编写脚本analyze_authlog.sh,分析/var/log/auth.log,统计SSH登录成功和失败的次数,并列出所有尝试登录失败的IP地址。

3.3 综合实战场景
  1. 简易漏洞扫描框架:尝试编写一个脚本框架simple_scanner.sh,其工作流程为:

  • 接收一个目标IP或域名作为输入。

  • 自动进行nmap端口扫描(前1000个端口)。

  • 如果发现80/443端口开放,则自动启动nikto进行Web漏洞扫描。

  • nmapnikto的输出结果整合到一个以当前日期时间命名的报告中。

模块四:常见问题与解决方案
4.1 语法与执行错误
  • Permission denied错误:忘记给脚本添加执行权限,使用chmod +x script.sh

  • command not found错误:在脚本中使用了相对路径的命令,而该命令不在系统的PATH环境变量中。使用绝对路径(如/usr/bin/nmap)或将命令所在目录加入PATH

  • unexpected operatorsyntax error:通常是[ ]测试语句中的空格缺失或括号不匹配。确保[]两边都有空格,并且变量引用用双引号括起,如if [ "$var" = "value" ]; then

4.2 脚本调试技巧
  • 启用调试模式

    bash -x your_script.sh # 显示执行的每一行命令及其展开后的参数 set -x # 在脚本内部启用调试 set +x # 关闭调试
  • 输出变量值:在关键步骤使用echoprintf打印变量的值,帮助定位问题。

4.3 安全与效率
  • 处理包含空格的文件名:在循环处理findls的输出时,使用while IFS= read -r line循环,或配合find -print0xargs -0

  • 避免无限循环:在while循环中务必有使循环条件最终为假的机制,或使用sleep控制频率。


明日预告:第10天将深入HTTP协议进阶,并系统学习渗透测试中最核心的集成平台——Burp Suite。您将掌握代理拦截、重放、入侵、爬虫等模块,这是Web应用安全测试的必备技能。

——————————————————————————————————————————

免责声明
本技术分享内容仅供学习和交流目的,不构成任何形式的专业建议或承诺。

分享者不对因使用或参考本内容而导致的任何直接或间接损失或损害承担责任。

网络安全技术涉及潜在风险,请在合法授权范围内谨慎操作,遵守相关法律法规。

读者应自行评估技术适用性,并在实际环境中采取必要的安全措施。

版权声明
未经许可,不得擅自修改、转载或用于商业用途。

http://www.jsqmd.com/news/593465/

相关文章:

  • mmdetection实战:从零开始构建自定义数据集训练流程
  • 手写数字识别在FPGA上的暴力美学
  • 从线性回归到随机森林:手把手教你用Sklearn优化波士顿房价预测模型(附完整对比代码)
  • Linux网络配置实战:基于udhcpd与iptables的4G模组路由转发
  • C# 与 Dynamics 365 深度集成:从基础连接到高级自动化
  • Vectorizer:基于Potrace的高性能图像矢量化解决方案
  • 基于PLC的3x4立体车库系统设计:资料齐全,共12个车位共用载车板,通过升降横移实现存取车辆
  • 【RAG】【vector_stores001】阿里云OpenSearch向量存储完整案例
  • 从商业目标到技术实现:通用系统设计的四层逻辑框架
  • comsol方形锂电池电化学—热耦合模型充放电循环热仿真,三种模型 一维电化学模型耦合三维方形...
  • 【RAG】【vector_stores002】Google AlloyDB for PostgreSQL 向量存储完整案例
  • 别再只仿真了!用Multisim/Simulink仿真直流稳压电源(BUCK电路)后,这些关键参数和实物搭建要点你注意了吗?
  • d3d8to9:Direct3D 8到9的API转换解决方案及技术实现
  • 华为EulerOS 2.0(SP8)aarch64系统yum源配置实战:从备份到验证的完整指南
  • 如何快速掌握BiliTools:跨平台B站下载终极指南
  • 我亲测6款免费AI论文生成器,毕业论文/journal/职称稿一键出 - 麟书学长
  • 【实战】MCP 服务在 Nacos 中注册状态分析与优化
  • 魔兽争霸3终极优化指南:WarcraftHelper让你的经典游戏在现代系统上重焕新生
  • 告别手动移植!用ESP-IDF组件化方式管理你的Gui-Guider UI代码
  • Tabula:颠覆传统的PDF数据解放与智能提取工具
  • 单细胞分析新宠:miloR+KNN实战指南(附完整代码与避坑技巧)
  • OpCore-Simplify:黑苹果配置的智能革命——从手动调试到自动化生成的转变
  • 魔兽争霸III终极优化指南:告别卡顿闪退,畅玩经典游戏
  • 革命性图像矢量化全攻略:突破像素限制的高效解决方案
  • 大功率H桥电机驱动板电路设计方案 - ir2103驱动芯片应用方案
  • weixin282宠物店商城小程序设计与实现+ssm(文档+源码)_kaic
  • 别再只盯着报点率了:聊聊电容触摸屏算法里那些不为人知的‘软实力’
  • Harness Engineering 快速入门:让 AI Coding Agent 在你的项目里稳定工作
  • Excel处理地理数据进阶:除了度分秒转换,这些隐藏技巧让你效率翻倍
  • 2025届学术党必备的十大降AI率网站推荐榜单